<?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>230585</bug_id>
          
          <creation_ts>2021-09-21 16:51:20 -0700</creation_ts>
          <short_desc>Reduce use of makeRef() and use Ref { } instead</short_desc>
          <delta_ts>2021-09-22 00:35:31 -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>aboxhall</cc>
    
    <cc>achristensen</cc>
    
    <cc>alecflett</cc>
    
    <cc>andresg_22</cc>
    
    <cc>apinheiro</cc>
    
    <cc>beidson</cc>
    
    <cc>benjamin</cc>
    
    <cc>calvaris</cc>
    
    <cc>cfleizach</cc>
    
    <cc>cgarcia</cc>
    
    <cc>changseok</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>darin</cc>
    
    <cc>dino</cc>
    
    <cc>dmazzoni</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fmalita</cc>
    
    <cc>fred.wang</cc>
    
    <cc>fujii</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>jcraig</cc>
    
    <cc>jdiggs</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>mmaxfield</cc>
    
    <cc>msaboff</cc>
    
    <cc>pangle</cc>
    
    <cc>pdr</cc>
    
    <cc>philipj</cc>
    
    <cc>pnormand</cc>
    
    <cc>saam</cc>
    
    <cc>sabouhallawa</cc>
    
    <cc>samuel_white</cc>
    
    <cc>sam</cc>
    
    <cc>schenney</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>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1795856</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-09-21 16:51:20 -0700</bug_when>
    <thetext>Reduce use of makeRef() and use Ref { } instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1795858</commentid>
    <comment_count>1</comment_count>
      <attachid>438887</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-09-21 16:54:21 -0700</bug_when>
    <thetext>Created attachment 438887
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1795923</commentid>
    <comment_count>2</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-09-21 19:55:37 -0700</bug_when>
    <thetext>Committed r282860 (241991@main): &lt;https://commits.webkit.org/241991@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 438887.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1795924</commentid>
    <comment_count>3</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-09-21 19:56:21 -0700</bug_when>
    <thetext>&lt;rdar://problem/83381009&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1795969</commentid>
    <comment_count>4</comment_count>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2021-09-22 00:35:31 -0700</bug_when>
    <thetext>This change broke Windows Debug builds.
Filed: Bug 230599 – [Win] REGRESSION(r282860): ClipboardItemBindingsDataSource.cpp(147): error C2955: &apos;WTF::Ref&apos;: use of class template requires template argument list</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>438887</attachid>
            <date>2021-09-21 16:54:21 -0700</date>
            <delta_ts>2021-09-21 19:55:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-230585-20210921165420.patch</filename>
            <type>text/plain</type>
            <size>192736</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgyODQ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA4
YjNjOThhMWZjZWQ2NTViMDExYTE1MWI4M2Y5NjZiNzcxZjhjYzVhLi5jZGQzNWZlOGY5YzgxOTkz
OGZiNGE3MGJjNThhZWQwYjFlOTI5ODNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzNyBAQAorMjAyMS0wOS0yMSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgor
CisgICAgICAgIFJlZHVjZSB1c2Ugb2YgbWFrZVJlZigpIGFuZCB1c2UgUmVmIHsgfSBpbnN0ZWFk
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzA1ODUK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGRlYnVn
Z2VyL0RlYnVnZ2VyLmNwcDoKKyAgICAgICAgKEpTQzo6RGVidWdnZXI6OnNldEJyZWFrcG9pbnQp
OgorICAgICAgICAoSlNDOjpEZWJ1Z2dlcjo6c2NoZWR1bGVQYXVzZUZvclNwZWNpYWxCcmVha3Bv
aW50KToKKyAgICAgICAgKiBsbGludC9MTEludEVudHJ5cG9pbnQuY3BwOgorICAgICAgICAoSlND
OjpMTEludDo6c2V0RnVuY3Rpb25FbnRyeXBvaW50KToKKyAgICAgICAgKEpTQzo6TExJbnQ6OnNl
dEV2YWxFbnRyeXBvaW50KToKKyAgICAgICAgKEpTQzo6TExJbnQ6OnNldFByb2dyYW1FbnRyeXBv
aW50KToKKyAgICAgICAgKEpTQzo6TExJbnQ6OnNldE1vZHVsZVByb2dyYW1FbnRyeXBvaW50KToK
KyAgICAgICAgKiBydW50aW1lL0pTU3RyaW5nLmNwcDoKKyAgICAgICAgKEpTQzo6SlNSb3BlU3Ry
aW5nOjpyZXNvbHZlUm9wZVRvRXhpc3RpbmdBdG9tU3RyaW5nIGNvbnN0KToKKyAgICAgICAgKiBy
dW50aW1lL1ZNLmNwcDoKKyAgICAgICAgKEpTQzo6aml0Q29kZUZvckNhbGxUcmFtcG9saW5lKToK
KyAgICAgICAgKEpTQzo6aml0Q29kZUZvckNvbnN0cnVjdFRyYW1wb2xpbmUpOgorICAgICAgICAq
IHdhc20vV2FzbUNvZGVCbG9jay5jcHA6CisgICAgICAgIChKU0M6Oldhc206OkNvZGVCbG9jazo6
Q29kZUJsb2NrKToKKyAgICAgICAgKiB3YXNtL1dhc21PTUdGb3JPU1JFbnRyeVBsYW4uY3BwOgor
ICAgICAgICAoSlNDOjpXYXNtOjpPTUdGb3JPU1JFbnRyeVBsYW46Ok9NR0Zvck9TUkVudHJ5UGxh
bik6CisgICAgICAgICogd2FzbS9XYXNtT01HUGxhbi5jcHA6CisgICAgICAgIChKU0M6Oldhc206
Ok9NR1BsYW46Ok9NR1BsYW4pOgorICAgICAgICAqIHdhc20vV2FzbVNpZ25hdHVyZS5jcHA6Cisg
ICAgICAgIChKU0M6Oldhc206OlNpZ25hdHVyZUluZm9ybWF0aW9uOjpzaWduYXR1cmVGb3IpOgor
ICAgICAgICAqIHdhc20vV2FzbVNpZ25hdHVyZUlubGluZXMuaDoKKyAgICAgICAgKEpTQzo6V2Fz
bTo6U2lnbmF0dXJlSW5mb3JtYXRpb246OmdldCk6CisgICAgICAgICogd2FzbS9XYXNtU2xvd1Bh
dGhzLmNwcDoKKyAgICAgICAgKEpTQzo6TExJbnQ6OmppdENvbXBpbGVBbmRTZXRIZXVyaXN0aWNz
KToKKyAgICAgICAgKiB3YXNtL2pzL0pTV2ViQXNzZW1ibHlJbnN0YW5jZS5oOgorCiAyMDIxLTA5
LTIxICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXBsYWNlIGEg
ZmV3IEFTU0VSVHMgd2l0aCBzdGF0aWNfYXNzZXJ0cyBpbiB0aGUgQVJNNjQgTWFjcm9Bc3NlbWJs
ZXJzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZwppbmRleCBlZDA3OTg1N2UxYzRhOTc1NjdkZmU5NWU5NzIwNzNiNmEyMWZlYTMwLi4xZTY4
NjUzNmVmMWJlNjA5N2FiOWQ1M2JjMmIwNTdlNjAzZWZkNTMzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBA
CisyMDIxLTA5LTIxICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAg
UmVkdWNlIHVzZSBvZiBtYWtlUmVmKCkgYW5kIHVzZSBSZWYgeyB9IGluc3RlYWQKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMDU4NQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3RmL1dlYWtQdHIuaDoK
KyAgICAgICAgKFdURjo6V2Vha1B0ckZhY3Rvcnk6OmNyZWF0ZVdlYWtQdHIgY29uc3QpOgorCiAy
MDIxLTA5LTIxICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgRHJv
cCBtYWtlUmVmUHRyKCkgYW5kIHVzZSBSZWZQdHIgeyB9IGRpcmVjdGx5IGluc3RlYWQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZwppbmRleCAxMTNmMGU2MTY2ODQ1MjBlNjA3OTAyNGJkMDUxNTA4MjNkNTY5OGU0Li5mOTA5MzIy
NGM4NDE5YmRiMDRhZDY4NzUzZWRhNzI2NGVjYThhOTAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MzE5IEBACisyMDIxLTA5LTIxICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAg
ICAgICAgUmVkdWNlIHVzZSBvZiBtYWtlUmVmKCkgYW5kIHVzZSBSZWYgeyB9IGluc3RlYWQKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMDU4NQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTW9kdWxlcy9h
c3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlOjpjb2xsZWN0RGF0
YUZvcldyaXRpbmcpOgorICAgICAgICAqIE1vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RE9NQ2FjaGU6OmFkZEFsbCk6CisgICAgICAgICogTW9kdWxlcy9jYWNo
ZS9Xb3JrZXJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oldv
cmtlckNhY2hlU3RvcmFnZUNvbm5lY3Rpb246OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpX
b3JrZXJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpvcGVuKToKKyAgICAgICAgKFdlYkNvcmU6Oldv
cmtlckNhY2hlU3RvcmFnZUNvbm5lY3Rpb246OnJlbW92ZSk6CisgICAgICAgIChXZWJDb3JlOjpX
b3JrZXJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpyZXRyaWV2ZUNhY2hlcyk6CisgICAgICAgIChX
ZWJDb3JlOjpXb3JrZXJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpyZXRyaWV2ZVJlY29yZHMpOgor
ICAgICAgICAoV2ViQ29yZTo6V29ya2VyQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6YmF0Y2hEZWxl
dGVPcGVyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyQ2FjaGVTdG9yYWdlQ29ubmVj
dGlvbjo6YmF0Y2hQdXRPcGVyYXRpb24pOgorICAgICAgICAqIE1vZHVsZXMvZW50cmllc2FwaS9E
T01GaWxlU3lzdGVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTUZpbGVTeXN0ZW06Omxpc3RE
aXJlY3RvcnkpOgorICAgICAgICAoV2ViQ29yZTo6RE9NRmlsZVN5c3RlbTo6Z2V0UGFyZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OkRPTUZpbGVTeXN0ZW06OmdldEVudHJ5KToKKyAgICAgICAgKFdl
YkNvcmU6OkRPTUZpbGVTeXN0ZW06OmdldEZpbGUpOgorICAgICAgICAqIE1vZHVsZXMvZW50cmll
c2FwaS9GaWxlU3lzdGVtRGlyZWN0b3J5UmVhZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZp
bGVTeXN0ZW1EaXJlY3RvcnlSZWFkZXI6OnJlYWRFbnRyaWVzKToKKyAgICAgICAgKiBNb2R1bGVz
L2ZldGNoL0ZldGNoQm9keS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHk6OmJvZHlB
c0Zvcm1EYXRhIGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2Fj
dGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6b2JqZWN0U3RvcmUp
OgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246Oml0ZXJhdGVDdXJzb3IpOgorICAg
ICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OnJlcXVlc3RQdXRPckFkZCk6CisgICAgICAg
ICogTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3IuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFTZXNzaW9uQ29vcmRpbmF0b3I6Ok1lZGlhU2Vzc2lvbkNvb3Jk
aW5hdG9yKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9uQmFj
a2VuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6Om5ld0Rh
dGFDaGFubmVsKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNGcmFtZVRy
YW5zZm9ybS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSVENSdHBTRnJhbWVUcmFuc2Zvcm06Omlu
aXRpYWxpemVUcmFuc2Zvcm1lcik6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENS
dHBTY3JpcHRUcmFuc2Zvcm0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UlRDUnRwU2NyaXB0VHJh
bnNmb3JtOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UlRDUnRwU2NyaXB0VHJhbnNmb3Jt
Ojppbml0aWFsaXplVHJhbnNmb3JtZXIpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0v
UlRDUnRwU2NyaXB0VHJhbnNmb3JtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UlRDUnRwU2Ny
aXB0VHJhbnNmb3JtZXI6OndyaXRhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1J0cFNjcmlw
dFRyYW5zZm9ybWVyOjpzdGFydCk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3
ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkxpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlcjo6Y2hlY2tTdGF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpMaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXI6Ok9uTWVzc2FnZSk6CisgICAgICAgIChX
ZWJDb3JlOjpMaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXI6Ok9uQnVmZmVyZWRBbW91bnRDaGFu
Z2UpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0R0
bHNUcmFuc3BvcnRCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ0R0bHNU
cmFuc3BvcnRCYWNrZW5kT2JzZXJ2ZXI6OnN0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OkxpYldl
YlJUQ0R0bHNUcmFuc3BvcnRCYWNrZW5kT2JzZXJ2ZXI6OnN0b3ApOgorICAgICAgICAoV2ViQ29y
ZTo6TGliV2ViUlRDRHRsc1RyYW5zcG9ydEJhY2tlbmRPYnNlcnZlcjo6T25TdGF0ZUNoYW5nZSk6
CisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENEdGxzVHJhbnNwb3J0QmFja2VuZE9ic2VydmVy
OjpPbkVycm9yKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJX
ZWJSVENJY2VUcmFuc3BvcnRCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJU
Q0ljZVRyYW5zcG9ydEJhY2tlbmRPYnNlcnZlcjo6c3RhcnQpOgorICAgICAgICAoV2ViQ29yZTo6
TGliV2ViUlRDSWNlVHJhbnNwb3J0QmFja2VuZE9ic2VydmVyOjpzdG9wKToKKyAgICAgICAgKFdl
YkNvcmU6OkxpYldlYlJUQ0ljZVRyYW5zcG9ydEJhY2tlbmRPYnNlcnZlcjo6b25JY2VUcmFuc3Bv
cnRTdGF0ZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDSWNlVHJhbnNwb3J0
QmFja2VuZE9ic2VydmVyOjpvbkdhdGhlcmluZ1N0YXRlQ2hhbmdlZCk6CisgICAgICAgICogTW9k
dWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDTWVkaWFFbmRwb2ludC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENNZWRpYUVuZHBvaW50OjphZGRQZW5kaW5nVHJhY2tF
dmVudCk6CisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENNZWRpYUVuZHBvaW50OjpuZXdUcmFu
c2NlaXZlcik6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2Vi
UlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmZpbmRFeGlz
dGluZ1NlbmRlcik6CisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJh
Y2tlbmQ6OmFkZFRyYWNrKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0
Yy9MaWJXZWJSVENTY3RwVHJhbnNwb3J0QmFja2VuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpM
aWJXZWJSVENTY3RwVHJhbnNwb3J0QmFja2VuZE9ic2VydmVyOjpzdGFydCk6CisgICAgICAgIChX
ZWJDb3JlOjpMaWJXZWJSVENTY3RwVHJhbnNwb3J0QmFja2VuZE9ic2VydmVyOjpzdG9wKToKKyAg
ICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ1NjdHBUcmFuc3BvcnRCYWNrZW5kT2JzZXJ2ZXI6Ok9u
U3RhdGVDaGFuZ2UpOgorICAgICAgICAqIE1vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRp
b24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uOjpyZXF1ZXN0UGVybWlzc2lv
bik6CisgICAgICAgICogTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25SZXN1bHRMaXN0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uUmVzdWx0TGlzdDo6YWRk
KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0FzeW5jQXVkaW9EZWNvZGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkFzeW5jQXVkaW9EZWNvZGVyOjpEZWNvZGluZ1Rhc2s6Om5vdGlmeUNv
bXBsZXRlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTm9kZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpBdWRpb05vZGU6OnRvV2Vha09yU3Ryb25nQ29udGV4dCk6CisgICAgICAg
ICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
QXVkaW9Xb3JrbGV0OjpjcmVhdGVQcm9jZXNzb3IpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVk
aW8vRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZ1
bmN0aW9uPHZvaWQpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2UuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2U6OnJ1blRyYW5zYWN0aW9uKToKKyAgICAgICAg
KiBNb2R1bGVzL3dlYnhyL1dlYlhSSW5wdXRTb3VyY2VBcnJheS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpXZWJYUklucHV0U291cmNlQXJyYXk6OnVwZGF0ZSk6CisgICAgICAgICogTW9kdWxlcy93
ZWJ4ci9XZWJYUlN5c3RlbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJYUlN5c3RlbTo6cmVx
dWVzdFNlc3Npb24pOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpnZXRPckNyZWF0ZSk6CisgICAgICAg
ICogYW5pbWF0aW9uL0RvY3VtZW50VGltZWxpbmVzQ29udHJvbGxlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpEb2N1bWVudFRpbWVsaW5lc0NvbnRyb2xsZXI6OnVwZGF0ZUFuaW1hdGlvbnNBbmRT
ZW5kRXZlbnRzKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0V2ZW50TGlzdGVuZXIuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OkpTRXZlbnRMaXN0ZW5lcjo6ZW5zdXJlSlNGdW5jdGlvbiBjb25zdCk6
CisgICAgICAgICogYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNsb25lU2VyaWFsaXplcjo6ZHVtcElmVGVybWluYWwpOgorICAgICAgICAq
IGNyeXB0by9TdWJ0bGVDcnlwdG8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3VidGxlQ3J5cHRv
Ojp3cmFwS2V5KToKKyAgICAgICAgKiBjc3MvQ1NTRm9udEZhY2VTZXQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTRm9udEZhY2VTZXQ6OnJlbW92ZSk6CisgICAgICAgICogY3NzL0NTU0ZvbnRT
ZWxlY3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NGb250U2VsZWN0b3I6OkNTU0ZvbnRT
ZWxlY3Rvcik6CisgICAgICAgICogY3NzL0RPTUNTU1BhaW50V29ya2xldC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpQYWludFdvcmtsZXQ6OmFkZE1vZHVsZSk6CisgICAgICAgICogY3NzL3R5cGVk
b20vQ1NTTnVtZXJpY1ZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU051bWVyaWNWYWx1
ZTo6YWRkKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU051bWVyaWNWYWx1ZTo6c3ViKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU051bWVyaWNWYWx1ZTo6bXVsKToKKyAgICAgICAgKFdlYkNvcmU6OkNT
U051bWVyaWNWYWx1ZTo6ZGl2KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU051bWVyaWNWYWx1ZTo6
bWluKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU051bWVyaWNWYWx1ZTo6bWF4KToKKyAgICAgICAg
KiBjc3MvdHlwZWRvbS9DU1NTdHlsZVZhbHVlRmFjdG9yeS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NTdHlsZVZhbHVlRmFjdG9yeTo6cmVpZnlWYWx1ZSk6CisgICAgICAgICogY3NzL3R5cGVk
b20vU3R5bGVQcm9wZXJ0eU1hcFJlYWRPbmx5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxl
UHJvcGVydHlNYXBSZWFkT25seTo6cmVpZnlWYWx1ZSk6CisgICAgICAgICogZG9tL0FjdGl2ZURP
TU9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY3RpdmVET01PYmplY3Q6OnF1ZXVlVGFz
a1RvRGlzcGF0Y2hFdmVudEludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OkFjdGl2ZURPTU9i
amVjdDo6cXVldWVDYW5jZWxsYWJsZVRhc2tUb0Rpc3BhdGNoRXZlbnRJbnRlcm5hbCk6CisgICAg
ICAgICogZG9tL0FjdGl2ZURPTU9iamVjdC5oOgorICAgICAgICAqIGRvbS9EZXZpY2VPcmllbnRh
dGlvbkFuZE1vdGlvbkFjY2Vzc0NvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGV2
aWNlT3JpZW50YXRpb25BbmRNb3Rpb25BY2Nlc3NDb250cm9sbGVyOjpzaG91bGRBbGxvd0FjY2Vz
cyk6CisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3Vt
ZW50Ojpmb3JFYWNoTWVkaWFFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OmNvbW1hbmQpOgor
ICAgICAgICAqIGRvbS9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmZv
Y3VzKToKKyAgICAgICAgKiBkb20vSWRsZUNhbGxiYWNrQ29udHJvbGxlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpJZGxlQ2FsbGJhY2tDb250cm9sbGVyOjpxdWV1ZVRhc2tUb1N0YXJ0SWRsZVBl
cmlvZCk6CisgICAgICAgIChXZWJDb3JlOjpJZGxlQ2FsbGJhY2tDb250cm9sbGVyOjpxdWV1ZVRh
c2tUb0ludm9rZUlkbGVDYWxsYmFja3MpOgorICAgICAgICAqIGRvbS9NaWNyb3Rhc2tzLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Ok1pY3JvdGFza1F1ZXVlOjpNaWNyb3Rhc2tRdWV1ZSk6CisgICAg
ICAgICogZG9tL011dGF0aW9uT2JzZXJ2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TXV0YXRp
b25PYnNlcnZlcjo6ZW5xdWV1ZU11dGF0aW9uUmVjb3JkKToKKyAgICAgICAgKFdlYkNvcmU6Ok11
dGF0aW9uT2JzZXJ2ZXI6OmVucXVldWVTbG90Q2hhbmdlRXZlbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6TXV0YXRpb25PYnNlcnZlcjo6c2V0SGFzVHJhbnNpZW50UmVnaXN0cmF0aW9uKToKKyAgICAg
ICAgKiBkb20vU2NyaXB0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRFbGVt
ZW50OjpyZXF1ZXN0TW9kdWxlU2NyaXB0KToKKyAgICAgICAgKiBlZGl0aW5nL0FsdGVybmF0aXZl
VGV4dENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWx0ZXJuYXRpdmVUZXh0Q29u
dHJvbGxlcjo6YXBwbHlBbHRlcm5hdGl2ZVRleHRUb1JhbmdlKToKKyAgICAgICAgKiBlZGl0aW5n
L0RlbGV0ZVNlbGVjdGlvbkNvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGVsZXRlU2Vs
ZWN0aW9uQ29tbWFuZDo6bWFrZVN0eWxpbmdFbGVtZW50c0RpcmVjdENoaWxkcmVuT2ZFZGl0YWJs
ZVJvb3RUb1ByZXZlbnRTdHlsZUxvc3MpOgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6YXBwbGllZEVkaXRpbmcpOgorICAgICAgICAoV2Vi
Q29yZTo6RWRpdG9yOjptYXJrQWxsTWlzc3BlbGxpbmdzQW5kQmFkR3JhbW1hckluUmFuZ2VzKToK
KyAgICAgICAgKFdlYkNvcmU6OmNvcnJlY3RTcGVsbGNoZWNraW5nUHJlc2VydmluZ1RleHRDaGVj
a2luZ1BhcmFncmFwaCk6CisgICAgICAgIChXZWJDb3JlOjpzY2FuRm9yVGVsZXBob25lTnVtYmVy
cyk6CisgICAgICAgICogZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZXBsYWNlbWVudEZyYWdtZW50OjpyZW1vdmVDb250ZW50c1dpdGhTaWRl
RWZmZWN0cyk6CisgICAgICAgIChXZWJDb3JlOjpSZXBsYWNlbWVudEZyYWdtZW50OjppbnNlcnRG
cmFnbWVudEZvclRlc3RSZW5kZXJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6UmVwbGFjZVNlbGVj
dGlvbkNvbW1hbmQ6Om1lcmdlVGV4dE5vZGVzQXJvdW5kUG9zaXRpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6UmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OnBlcmZvcm1Ucml2aWFsUmVwbGFjZSk6Cisg
ICAgICAgICogZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cGxh
aW5UZXh0KToKKyAgICAgICAgKiBlZGl0aW5nL1Zpc2libGVTZWxlY3Rpb24uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6VmlzaWJsZVNlbGVjdGlvbjo6YWRqdXN0U2VsZWN0aW9uVG9Bdm9pZENyb3Nz
aW5nU2hhZG93Qm91bmRhcmllcyk6CisgICAgICAgICogZWRpdGluZy9jb2NvYS9XZWJDb250ZW50
UmVhZGVyQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjphdHRhY2htZW50Rm9yRmlsZVBhdGgp
OgorICAgICAgICAoV2ViQ29yZTo6YXR0YWNobWVudEZvckRhdGEpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViQ29udGVudFJlYWRlcjo6cmVhZFVSTCk6CisgICAgICAgICogZWRpdGluZy9tYXJrdXAu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRnJhZ21lbnRGb3JNYXJrdXApOgorICAgICAg
ICAqIGhpc3RvcnkvQ2FjaGVkRnJhbWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkRnJh
bWVCYXNlOjpyZXN0b3JlKToKKyAgICAgICAgKiBodG1sL0hUTUxCb2R5RWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MQm9keUVsZW1lbnQ6OmRpZEZpbmlzaEluc2VydGluZ05vZGUp
OgorICAgICAgICAqIGh0bWwvSFRNTEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TEVsZW1lbnQ6OnVwZGF0ZVdpdGhUZXh0UmVjb2duaXRpb25SZXN1bHQpOgorICAgICAgICAqIGh0
bWwvSFRNTE1lZGlhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVt
ZW50Ojpmb3JnZXRSZXNvdXJjZVNwZWNpZmljVHJhY2tzKToKKyAgICAgICAgKiBodG1sL09mZnNj
cmVlbkNhbnZhcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpPZmZzY3JlZW5DYW52YXM6OmNyZWF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpPZmZzY3JlZW5DYW52YXM6OnB1c2hCdWZmZXJUb1BsYWNl
aG9sZGVyKToKKyAgICAgICAgKiBodG1sL1ZhbGlkYXRpb25NZXNzYWdlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlZhbGlkYXRpb25NZXNzYWdlOjpidWlsZEJ1YmJsZVRyZWUpOgorICAgICAgICAq
IGh0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6bWFrZVhSQ29tcGF0aWJsZSk6CisgICAg
ICAgICogaHRtbC90cmFjay9WVFRDdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VlRUQ3VlQm94
OjphcHBseUNTU1Byb3BlcnRpZXMpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JGcm9u
dGVuZEFQSURpc3BhdGNoZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRl
bmRBUElEaXNwYXRjaGVyOjpldmFsdWF0ZU9yUXVldWVFeHByZXNzaW9uKToKKyAgICAgICAgKiBs
b2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2Fk
ZXI6OndpbGxTZW5kUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpjb21wdXRlUmVzcG9uc2VP
cmlnaW5BbmRDT09QKToKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRXcml0ZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RG9jdW1lbnRXcml0ZXI6OmJlZ2luKToKKyAgICAgICAgKiBsb2FkZXIv
RnJhbWVMb2FkUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRSZXF1ZXN0
OjpGcmFtZUxvYWRSZXF1ZXN0KToKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OnJlY2VpdmVkRmlyc3REYXRhKToKKyAgICAg
ICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpsb2FkRnJhbWVSZXF1ZXN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkZyYW1lTG9hZGVyOjpsb2FkVVJMKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9h
ZGVyOjpsb2FkV2l0aERvY3VtZW50TG9hZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9h
ZGVyOjpvcGVuKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpsb2FkUG9zdFJlcXVl
c3QpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmNvbnRpbnVlTG9hZEFmdGVyTmF2
aWdhdGlvblBvbGljeSk6CisgICAgICAgICogbG9hZGVyL05hdmlnYXRpb25TY2hlZHVsZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U2NoZWR1bGVkVVJMTmF2aWdhdGlvbjo6U2NoZWR1bGVkVVJM
TmF2aWdhdGlvbik6CisgICAgICAgICogbG9hZGVyL1BpbmdMb2FkZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UGluZ0xvYWRlcjo6c3RhcnRQaW5nTG9hZCk6CisgICAgICAgICogbG9hZGVyL1Bv
bGljeUNoZWNrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OlBvbGljeUNo
ZWNrZXI6OmNoZWNrTmV3V2luZG93UG9saWN5KToKKyAgICAgICAgKiBsb2FkZXIvU3ViZnJhbWVM
b2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OlN1YmZyYW1lTG9hZGVy
OjpyZXF1ZXN0RnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OlN1YmZyYW1l
TG9hZGVyOjpsb2FkU3ViZnJhbWUpOgorICAgICAgICAqIGxvYWRlci9Xb3JrZXJUaHJlYWRhYmxl
TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVhZGFibGVMb2FkZXI6Ok1h
aW5UaHJlYWRCcmlkZ2U6Om5vdGlmeUlzRG9uZSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJU
aHJlYWRhYmxlTG9hZGVyOjpNYWluVGhyZWFkQnJpZGdlOjpkaWRTZW5kRGF0YSk6CisgICAgICAg
IChXZWJDb3JlOjpXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpNYWluVGhyZWFkQnJpZGdlOjpkaWRS
ZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkYWJsZUxvYWRl
cjo6TWFpblRocmVhZEJyaWRnZTo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6
V29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6TWFpblRocmVhZEJyaWRnZTo6ZGlkRmluaXNoTG9hZGlu
Zyk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpNYWluVGhyZWFk
QnJpZGdlOjpkaWRGYWlsKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVhZGFibGVMb2Fk
ZXI6Ok1haW5UaHJlYWRCcmlkZ2U6OmRpZEZpbmlzaFRpbWluZyk6CisgICAgICAgICogbG9hZGVy
L2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291
cmNlOjpsb2FkKToKKyAgICAgICAgKiBsb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIubW06
CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lQcmV2aWV3TG9hZGVyOjpwcmV2aWV3Q29udmVydGVy
RGlkU3RhcnRDb252ZXJ0aW5nKToKKyAgICAgICAgKiBwYWdlL0RPTVdpbmRvd0V4dGVuc2lvbi5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3dFeHRlbnNpb246OnN1c3BlbmRGb3JCYWNr
Rm9yd2FyZENhY2hlKToKKyAgICAgICAgKiBwYWdlL0V2ZW50SGFuZGxlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmRlZmF1bHRXaGVlbEV2ZW50SGFuZGxlcik6CisgICAg
ICAgICogcGFnZS9GcmFtZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZTo6YWRkVXNlclNj
cmlwdEF3YWl0aW5nTm90aWZpY2F0aW9uKToKKyAgICAgICAgKiBwYWdlL0ZyYW1lVmlldy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OmRpZExheW91dCk6CisgICAgICAgICogcGFn
ZS9QYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OmRpZEZpbmlzaExvYWRpbmdJbWFn
ZUZvckVsZW1lbnQpOgorICAgICAgICAqIHBhZ2UvUHJpbnRDb250ZXh0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlByaW50Q29udGV4dDo6YmVnaW4pOgorICAgICAgICAqIHBhZ2UvaW9zL0V2ZW50
SGFuZGxlcklPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6bW91c2VNb3Zl
ZCk6CisgICAgICAgICogcGFnZS9tYWMvSW1hZ2VPdmVybGF5Q29udHJvbGxlck1hYy5tbToKKyAg
ICAgICAgKFdlYkNvcmU6OkltYWdlT3ZlcmxheUNvbnRyb2xsZXI6OnVwZGF0ZURhdGFEZXRlY3Rv
ckhpZ2hsaWdodHMpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VPdmVybGF5Q29udHJvbGxlcjo6
ZWxlbWVudFVuZGVyTW91c2VEaWRDaGFuZ2UpOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL21h
Yy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTWFjLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU1hYzo6Y3JlYXRlVGltZXIp
OgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nQ29vcmRpbmF0b3JO
aWNvc2lhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ0Nvb3JkaW5hdG9yTmljb3Np
YTo6aGFuZGxlV2hlZWxFdmVudEZvclNjcm9sbGluZyk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvQml0bWFwSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmZy
YW1lc05hdGl2ZUltYWdlcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2Nh
ZGVGb250cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FzY2FkZUZvbnRzOjpGb250Q2Fz
Y2FkZUZvbnRzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6c3RhcnRBc3luY0RlY29kaW5nUXVldWUp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0xvY2FsU2Ft
cGxlQnVmZmVyRGlzcGxheUxheWVyLm1tOgorICAgICAgICAoV2ViQ29yZTo6TG9jYWxTYW1wbGVC
dWZmZXJEaXNwbGF5TGF5ZXI6OmVucXVldWVTYW1wbGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmRpZFBhcnNlSW5p
dGlhbGl6YXRpb25EYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGlj
c0NvbnRleHRHTENHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjpwYWludFRvQ2FudmFzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFn
ZUJ1ZmZlckNHQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckNHQmFj
a2VuZDo6Y29weUNHSW1hZ2VGb3JFbmNvZGluZyBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0Lmg6CisgICAgICAgIChXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q6OmNhY2hlSW1hZ2VCdWZmZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0OjpjYWNoZU5hdGl2ZUltYWdlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdDo6Y2FjaGVGb250KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6U2V0U3RhdGU6OmFwcGx5KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL01lZGlhU291cmNlVHJhY2tHU3Ry
ZWFtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTb3VyY2VUcmFja0dTdHJlYW1lcjo6
Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL1dlYktp
dE1lZGlhU291cmNlR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKHdlYktpdE1lZGlhU3JjRW1pdFN0
cmVhbXMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9JbWFnZU1hYy5tbToKKyAg
ICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpzbmFwc2hvdE5TSW1hZ2UpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvTmljb3NpYVNjZW5lSW50ZWdyYXRpb24uY3BwOgor
ICAgICAgICAoTmljb3NpYTo6U2NlbmVJbnRlZ3JhdGlvbjo6U2NlbmVJbnRlZ3JhdGlvbik6Cisg
ICAgICAgICogcGxhdGZvcm0vbWFjL0RhdGFEZXRlY3RvckhpZ2hsaWdodC5tbToKKyAgICAgICAg
KFdlYkNvcmU6OkRhdGFEZXRlY3RvckhpZ2hsaWdodDo6ZmFkZU91dCk6CisgICAgICAgICogcGxh
dGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL2dzdHJlYW1lci9SZWFsdGltZUluY29taW5nVmlk
ZW9Tb3VyY2VMaWJXZWJSVEMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVJbmNvbWlu
Z1ZpZGVvU291cmNlTGliV2ViUlRDOjpPbkZyYW1lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRp
YXN0cmVhbS9saWJ3ZWJydGMvZ3N0cmVhbWVyL1JlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZUxp
YldlYlJUQy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3Vy
Y2VMaWJXZWJSVEM6OmF1ZGlvU2FtcGxlc0F2YWlsYWJsZSk6CisgICAgICAgICogcGxhdGZvcm0v
bmV0d29yay9Tb2NrZXRTdHJlYW1IYW5kbGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U29ja2V0
U3RyZWFtSGFuZGxlOjpkaXNjb25uZWN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvQ3VybFJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3VybFJlcXVlc3Q6OmNhbGxD
bGllbnQpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVzb3VyY2VIYW5k
bGVEZWxlZ2F0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDdXJsUmVzb3VyY2VIYW5kbGVEZWxl
Z2F0ZTo6Y3VybERpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgICogc3R5bGUvU3R5bGVCdWls
ZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpCdWlsZGVyOjphcHBseUN1c3RvbVBy
b3BlcnR5KToKKyAgICAgICAgKiBzdHlsZS9TdHlsZUJ1aWxkZXJDdXN0b20uaDoKKyAgICAgICAg
KFdlYkNvcmU6OlN0eWxlOjpCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlQ3VzdG9tUHJvcGVydHkp
OgorICAgICAgICAqIHN0eWxlL1N0eWxlQnVpbGRlclN0YXRlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlN0eWxlOjpCdWlsZGVyU3RhdGU6OnJlc29sdmVJbWFnZVN0eWxlcyk6CisgICAgICAgICog
c3R5bGUvU3R5bGVTY29wZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6U2NvcGU6OmNy
ZWF0ZU9yRmluZFNoYXJlZFNoYWRvd1RyZWVSZXNvbHZlcik6CisgICAgICAgIChXZWJDb3JlOjpT
dHlsZTo6U2NvcGU6OmNvbGxlY3RSZXNvbHZlclNjb3Blcyk6CisgICAgICAgICogc3ZnL1NWR0Vs
ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRWxlbWVudDo6cmVtb3ZlZEZyb21BbmNl
c3Rvcik6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6cXVldWVNaWNyb1Rhc2sp
OgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpxdWV1ZVRhc2tUb1F1ZXVlTWljcm90YXNr
KToKKyAgICAgICAgKiB0ZXN0aW5nL1NlcnZpY2VXb3JrZXJJbnRlcm5hbHMuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckludGVybmFsczo6d2FpdEZvckZldGNoRXZlbnRUb0Zp
bmlzaCk6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
V29ya2VyOjpjcmVhdGVSVENSdHBTY3JpcHRUcmFuc2Zvcm1lcik6CisgICAgICAgICogd29ya2Vy
cy9Xb3JrZXJHbG9iYWxTY29wZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJHbG9iYWxT
Y29wZTo6Y3JlYXRlUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyQ29ubmVjdGlvbik6CisgICAg
ICAgICogd29ya2Vycy9Xb3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9sbGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Oldvcmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXI6OmxvYWRNb2R1bGVT
eW5jaHJvbm91c2x5KToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlck9yV29ya2xldFNjcmlwdENv
bnRyb2xsZXI6OmxvYWRBbmRFdmFsdWF0ZU1vZHVsZSk6CisgICAgICAgICogd29ya2Vycy9zZXJ2
aWNlL0ZldGNoRXZlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hFdmVudDo6cHJvbWlz
ZUlzU2V0dGxlZCk6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJHbG9i
YWxTY29wZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU6
OnNraXBXYWl0aW5nKToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0NvbnRl
eHRNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNXQ29udGV4dE1hbmFnZXI6OnN0b3BX
b3JrZXIpOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJU
aHJlYWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlclRocmVhZDo6cXVldWVU
YXNrVG9GaXJlRmV0Y2hFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyVGhy
ZWFkOjpxdWV1ZVRhc2tUb1Bvc3RNZXNzYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VX
b3JrZXJUaHJlYWQ6OnF1ZXVlVGFza1RvRmlyZUluc3RhbGxFdmVudCk6CisgICAgICAgIChXZWJD
b3JlOjpTZXJ2aWNlV29ya2VyVGhyZWFkOjpxdWV1ZVRhc2tUb0ZpcmVBY3RpdmF0ZUV2ZW50KToK
KyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkUHJv
eHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlclRocmVhZFByb3h5Ojpub3Rp
ZnlOZXR3b3JrU3RhdGVDaGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlclRo
cmVhZFByb3h5Ojpjb250aW51ZURpZFJlY2VpdmVGZXRjaFJlc3BvbnNlKToKKyAgICAgICAgKiB4
bWwvWE1MSHR0cFJlcXVlc3RQcm9ncmVzc0V2ZW50VGhyb3R0bGUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6WE1MSHR0cFJlcXVlc3RQcm9ncmVzc0V2ZW50VGhyb3R0bGU6OmRpc3BhdGNoRXZlbnRX
aGVuUG9zc2libGUpOgorCiAyMDIxLTA5LTIxICBCcmVudCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBw
bGUuY29tPgogCiAgICAgICAgIFJlbW92ZSBYU1MgQXVkaXRvcjogUGFydCAyIChSZW1vdmUgZW5n
aW5lIHN1cHBvcnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIv
RGVidWdnZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyLmNw
cAppbmRleCA1MjUzMTViZTcwYzM2MTliOWZlMzUxOTAzMTg1NjFmZDFkYmY3MjI1Li5kZDM1N2Q4
NWM0NDc2ZDM1MWM3ZTUxNDQ5NGEyZmVhNmE4YTRmYTFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlci5jcHAKQEAgLTQ5Myw5ICs0OTMsOSBAQCBib29sIERlYnVn
Z2VyOjpzZXRCcmVha3BvaW50KEJyZWFrcG9pbnQmIGJyZWFrcG9pbnQpCiAgICAgICAgIH0KICAg
ICB9CiAKLSAgICBicmVha3BvaW50cy5hcHBlbmQobWFrZVJlZihicmVha3BvaW50KSk7CisgICAg
YnJlYWtwb2ludHMuYXBwZW5kKGJyZWFrcG9pbnQpOwogCi0gICAgbV9icmVha3BvaW50cy5hZGQo
bWFrZVJlZihicmVha3BvaW50KSk7CisgICAgbV9icmVha3BvaW50cy5hZGQoYnJlYWtwb2ludCk7
CiAKICAgICB0b2dnbGVCcmVha3BvaW50KGJyZWFrcG9pbnQsIEJyZWFrcG9pbnRFbmFibGVkKTsK
IApAQCAtNzQ1LDcgKzc0NSw3IEBAIGJvb2wgRGVidWdnZXI6OnNjaGVkdWxlUGF1c2VGb3JTcGVj
aWFsQnJlYWtwb2ludChCcmVha3BvaW50JiBicmVha3BvaW50KQogICAgIGlmIChtX3NwZWNpYWxC
cmVha3BvaW50KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBtX3NwZWNpYWxCcmVha3Bv
aW50ID0gbWFrZVJlZihicmVha3BvaW50KTsKKyAgICBtX3NwZWNpYWxCcmVha3BvaW50ID0gJmJy
ZWFrcG9pbnQ7CiAgICAgc2V0U3RlcHBpbmdNb2RlKFN0ZXBwaW5nTW9kZUVuYWJsZWQpOwogICAg
IHJldHVybiB0cnVlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xMSW50RW50cnlwb2ludC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRF
bnRyeXBvaW50LmNwcAppbmRleCAxNmRlNDE3NmJkNGI1MGI2YzQ3ZWFhYmZmN2FlMDQxMGNjNDBm
M2FiLi5kMzk4MjYxN2JlOTc2ZjFlNDJkZDk4YTljNDk2NDBlMjBkMTJjYzBjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRFbnRyeXBvaW50LmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRFbnRyeXBvaW50LmNwcApAQCAtNjYsNyAr
NjYsNyBAQCBzdGF0aWMgdm9pZCBzZXRGdW5jdGlvbkVudHJ5cG9pbnQoQ29kZUJsb2NrKiBjb2Rl
QmxvY2spCiAgICAgICAgICAgICAgICAgaml0Q29kZSA9IG5ldyBEaXJlY3RKSVRDb2RlKGNhbGxS
ZWYsIGNhbGxBcml0eUNoZWNrUmVmLmNvZGUoKSwgSklUVHlwZTo6SW50ZXJwcmV0ZXJUaHVuaywg
SklUQ29kZTo6U2hhcmVBdHRyaWJ1dGU6OlNoYXJlZCk7CiAgICAgICAgICAgICB9KTsKIAotICAg
ICAgICAgICAgY29kZUJsb2NrLT5zZXRKSVRDb2RlKG1ha2VSZWYoKmppdENvZGUpKTsKKyAgICAg
ICAgICAgIGNvZGVCbG9jay0+c2V0SklUQ29kZSgqaml0Q29kZSk7CiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIH0KICAgICAgICAgQVNTRVJUKGtpbmQgPT0gQ29kZUZvckNvbnN0cnVjdCk7
CkBAIC03OSw3ICs3OSw3IEBAIHN0YXRpYyB2b2lkIHNldEZ1bmN0aW9uRW50cnlwb2ludChDb2Rl
QmxvY2sqIGNvZGVCbG9jaykKICAgICAgICAgICAgIGppdENvZGUgPSBuZXcgRGlyZWN0SklUQ29k
ZShjb25zdHJ1Y3RSZWYsIGNvbnN0cnVjdEFyaXR5Q2hlY2tSZWYuY29kZSgpLCBKSVRUeXBlOjpJ
bnRlcnByZXRlclRodW5rLCBKSVRDb2RlOjpTaGFyZUF0dHJpYnV0ZTo6U2hhcmVkKTsKICAgICAg
ICAgfSk7CiAKLSAgICAgICAgY29kZUJsb2NrLT5zZXRKSVRDb2RlKG1ha2VSZWYoKmppdENvZGUp
KTsKKyAgICAgICAgY29kZUJsb2NrLT5zZXRKSVRDb2RlKCpqaXRDb2RlKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KICNlbmRpZiAvLyBFTkFCTEUoSklUKQpAQCAtOTQsNyArOTQsNyBAQCBzdGF0
aWMgdm9pZCBzZXRGdW5jdGlvbkVudHJ5cG9pbnQoQ29kZUJsb2NrKiBjb2RlQmxvY2spCiAgICAg
ICAgICAgICBqaXRDb2RlID0gbmV3IERpcmVjdEpJVENvZGUoZ2V0Q29kZVJlZjxKU0VudHJ5UHRy
VGFnPihsbGludF9mdW5jdGlvbl9mb3JfY2FsbF9wcm9sb2d1ZSksIGdldENvZGVQdHI8SlNFbnRy
eVB0clRhZz4obGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfYXJpdHlfY2hlY2spLCBKSVRUeXBlOjpJ
bnRlcnByZXRlclRodW5rLCBKSVRDb2RlOjpTaGFyZUF0dHJpYnV0ZTo6U2hhcmVkKTsKICNlbmRp
ZgogICAgICAgICB9KTsKLSAgICAgICAgY29kZUJsb2NrLT5zZXRKSVRDb2RlKG1ha2VSZWYoKmpp
dENvZGUpKTsKKyAgICAgICAgY29kZUJsb2NrLT5zZXRKSVRDb2RlKCpqaXRDb2RlKTsKICAgICB9
IGVsc2UgewogICAgICAgICBzdGF0aWMgRGlyZWN0SklUQ29kZSogaml0Q29kZTsKICAgICAgICAg
c3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VLZXk7CkBAIC0xMDUsNyArMTA1LDcgQEAgc3RhdGlj
IHZvaWQgc2V0RnVuY3Rpb25FbnRyeXBvaW50KENvZGVCbG9jayogY29kZUJsb2NrKQogICAgICAg
ICAgICAgaml0Q29kZSA9IG5ldyBEaXJlY3RKSVRDb2RlKGdldENvZGVSZWY8SlNFbnRyeVB0clRh
Zz4obGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9wcm9sb2d1ZSksIGdldENvZGVQdHI8SlNF
bnRyeVB0clRhZz4obGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9hcml0eV9jaGVjayksIEpJ
VFR5cGU6OkludGVycHJldGVyVGh1bmssIEpJVENvZGU6OlNoYXJlQXR0cmlidXRlOjpTaGFyZWQp
OwogI2VuZGlmCiAgICAgICAgIH0pOwotICAgICAgICBjb2RlQmxvY2stPnNldEpJVENvZGUobWFr
ZVJlZigqaml0Q29kZSkpOworICAgICAgICBjb2RlQmxvY2stPnNldEpJVENvZGUoKmppdENvZGUp
OwogICAgIH0KIH0KIApAQCAtMTE5LDcgKzExOSw3IEBAIHN0YXRpYyB2b2lkIHNldEV2YWxFbnRy
eXBvaW50KENvZGVCbG9jayogY29kZUJsb2NrKQogICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXJD
b2RlUmVmPEpTRW50cnlQdHJUYWc+IGNvZGVSZWYgPSBldmFsRW50cnlUaHVuaygpOwogICAgICAg
ICAgICAgaml0Q29kZSA9IG5ldyBOYXRpdmVKSVRDb2RlKGNvZGVSZWYsIEpJVFR5cGU6OkludGVy
cHJldGVyVGh1bmssIEludHJpbnNpYzo6Tm9JbnRyaW5zaWMsIEpJVENvZGU6OlNoYXJlQXR0cmli
dXRlOjpTaGFyZWQpOwogICAgICAgICB9KTsKLSAgICAgICAgY29kZUJsb2NrLT5zZXRKSVRDb2Rl
KG1ha2VSZWYoKmppdENvZGUpKTsKKyAgICAgICAgY29kZUJsb2NrLT5zZXRKSVRDb2RlKCpqaXRD
b2RlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICNlbmRpZiAvLyBFTkFCTEUoSklUKQpAQCAt
MTMzLDcgKzEzMyw3IEBAIHN0YXRpYyB2b2lkIHNldEV2YWxFbnRyeXBvaW50KENvZGVCbG9jayog
Y29kZUJsb2NrKQogICAgICAgICBqaXRDb2RlID0gbmV3IE5hdGl2ZUpJVENvZGUoZ2V0Q29kZVJl
ZjxKU0VudHJ5UHRyVGFnPihsbGludF9ldmFsX3Byb2xvZ3VlKSwgSklUVHlwZTo6SW50ZXJwcmV0
ZXJUaHVuaywgSW50cmluc2ljOjpOb0ludHJpbnNpYywgSklUQ29kZTo6U2hhcmVBdHRyaWJ1dGU6
OlNoYXJlZCk7CiAjZW5kaWYKICAgICB9KTsKLSAgICBjb2RlQmxvY2stPnNldEpJVENvZGUobWFr
ZVJlZigqaml0Q29kZSkpOworICAgIGNvZGVCbG9jay0+c2V0SklUQ29kZSgqaml0Q29kZSk7CiB9
CiAKIHN0YXRpYyB2b2lkIHNldFByb2dyYW1FbnRyeXBvaW50KENvZGVCbG9jayogY29kZUJsb2Nr
KQpAQCAtMTQ2LDcgKzE0Niw3IEBAIHN0YXRpYyB2b2lkIHNldFByb2dyYW1FbnRyeXBvaW50KENv
ZGVCbG9jayogY29kZUJsb2NrKQogICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpT
RW50cnlQdHJUYWc+IGNvZGVSZWYgPSBwcm9ncmFtRW50cnlUaHVuaygpOwogICAgICAgICAgICAg
aml0Q29kZSA9IG5ldyBOYXRpdmVKSVRDb2RlKGNvZGVSZWYsIEpJVFR5cGU6OkludGVycHJldGVy
VGh1bmssIEludHJpbnNpYzo6Tm9JbnRyaW5zaWMsIEpJVENvZGU6OlNoYXJlQXR0cmlidXRlOjpT
aGFyZWQpOwogICAgICAgICB9KTsKLSAgICAgICAgY29kZUJsb2NrLT5zZXRKSVRDb2RlKG1ha2VS
ZWYoKmppdENvZGUpKTsKKyAgICAgICAgY29kZUJsb2NrLT5zZXRKSVRDb2RlKCpqaXRDb2RlKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KICNlbmRpZiAvLyBFTkFCTEUoSklUKQpAQCAtMTYwLDcg
KzE2MCw3IEBAIHN0YXRpYyB2b2lkIHNldFByb2dyYW1FbnRyeXBvaW50KENvZGVCbG9jayogY29k
ZUJsb2NrKQogICAgICAgICBqaXRDb2RlID0gbmV3IE5hdGl2ZUpJVENvZGUoZ2V0Q29kZVJlZjxK
U0VudHJ5UHRyVGFnPihsbGludF9wcm9ncmFtX3Byb2xvZ3VlKSwgSklUVHlwZTo6SW50ZXJwcmV0
ZXJUaHVuaywgSW50cmluc2ljOjpOb0ludHJpbnNpYywgSklUQ29kZTo6U2hhcmVBdHRyaWJ1dGU6
OlNoYXJlZCk7CiAjZW5kaWYKICAgICB9KTsKLSAgICBjb2RlQmxvY2stPnNldEpJVENvZGUobWFr
ZVJlZigqaml0Q29kZSkpOworICAgIGNvZGVCbG9jay0+c2V0SklUQ29kZSgqaml0Q29kZSk7CiB9
CiAKIHN0YXRpYyB2b2lkIHNldE1vZHVsZVByb2dyYW1FbnRyeXBvaW50KENvZGVCbG9jayogY29k
ZUJsb2NrKQpAQCAtMTczLDcgKzE3Myw3IEBAIHN0YXRpYyB2b2lkIHNldE1vZHVsZVByb2dyYW1F
bnRyeXBvaW50KENvZGVCbG9jayogY29kZUJsb2NrKQogICAgICAgICAgICAgTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmPEpTRW50cnlQdHJUYWc+IGNvZGVSZWYgPSBtb2R1bGVQcm9ncmFtRW50cnlUaHVu
aygpOwogICAgICAgICAgICAgaml0Q29kZSA9IG5ldyBOYXRpdmVKSVRDb2RlKGNvZGVSZWYsIEpJ
VFR5cGU6OkludGVycHJldGVyVGh1bmssIEludHJpbnNpYzo6Tm9JbnRyaW5zaWMsIEpJVENvZGU6
OlNoYXJlQXR0cmlidXRlOjpTaGFyZWQpOwogICAgICAgICB9KTsKLSAgICAgICAgY29kZUJsb2Nr
LT5zZXRKSVRDb2RlKG1ha2VSZWYoKmppdENvZGUpKTsKKyAgICAgICAgY29kZUJsb2NrLT5zZXRK
SVRDb2RlKCpqaXRDb2RlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICNlbmRpZiAvLyBFTkFC
TEUoSklUKQpAQCAtMTg3LDcgKzE4Nyw3IEBAIHN0YXRpYyB2b2lkIHNldE1vZHVsZVByb2dyYW1F
bnRyeXBvaW50KENvZGVCbG9jayogY29kZUJsb2NrKQogICAgICAgICBqaXRDb2RlID0gbmV3IE5h
dGl2ZUpJVENvZGUoZ2V0Q29kZVJlZjxKU0VudHJ5UHRyVGFnPihsbGludF9tb2R1bGVfcHJvZ3Jh
bV9wcm9sb2d1ZSksIEpJVFR5cGU6OkludGVycHJldGVyVGh1bmssIEludHJpbnNpYzo6Tm9JbnRy
aW5zaWMsIEpJVENvZGU6OlNoYXJlQXR0cmlidXRlOjpTaGFyZWQpOwogI2VuZGlmCiAgICAgfSk7
Ci0gICAgY29kZUJsb2NrLT5zZXRKSVRDb2RlKG1ha2VSZWYoKmppdENvZGUpKTsKKyAgICBjb2Rl
QmxvY2stPnNldEpJVENvZGUoKmppdENvZGUpOwogfQogCiBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8
SlNFbnRyeVB0clRhZz4gZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZUVudHJ5cG9pbnQoKQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuY3BwCmluZGV4IGE1Y2U3ZDE4ZWJiYzZj
M2RkODVkYTkzM2Y2OTY2MDBjMDQ3NWM3NzAuLmMxZjY5NGJlM2QyYTY1NjQ2OWViNjliY2VlYjZj
ZTE1ZTA2ZjliYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
U3RyaW5nLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5j
cHAKQEAgLTI0Niw3ICsyNDYsNyBAQCBSZWZQdHI8QXRvbVN0cmluZ0ltcGw+IEpTUm9wZVN0cmlu
Zzo6cmVzb2x2ZVJvcGVUb0V4aXN0aW5nQXRvbVN0cmluZyhKU0dsb2JhbE9iagogICAgICAgICBy
ZXNvbHZlUm9wZVdpdGhGdW5jdGlvbihnbG9iYWxPYmplY3QsIFsmXSAoUmVmPFN0cmluZ0ltcGw+
JiYgbmV3SW1wbCkgLT4gUmVmPFN0cmluZ0ltcGw+IHsKICAgICAgICAgICAgIGV4aXN0aW5nQXRv
bVN0cmluZyA9IEF0b21TdHJpbmdJbXBsOjpsb29rVXAobmV3SW1wbC5wdHIoKSk7CiAgICAgICAg
ICAgICBpZiAoZXhpc3RpbmdBdG9tU3RyaW5nKQotICAgICAgICAgICAgICAgIHJldHVybiBtYWtl
UmVmKCpleGlzdGluZ0F0b21TdHJpbmcpOworICAgICAgICAgICAgICAgIHJldHVybiBSZWYgeyAq
ZXhpc3RpbmdBdG9tU3RyaW5nIH07CiAgICAgICAgICAgICByZXR1cm4gV1RGTW92ZShuZXdJbXBs
KTsKICAgICAgICAgfSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIG51bGxw
dHIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCmluZGV4IDc5ZWQyMWVlM2E2ZmMz
NzE2Yjc0YjI1MjEzOWUzOTgwOGMwOTU3MWUuLjk5NmEwNmRhYWJhODJjY2VmYjQzZGYzZjY1ZjEz
MWU2ZmRlNmVlMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZN
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKQEAgLTgzNyw3
ICs4MzcsNyBAQCBzdGF0aWMgUmVmPE5hdGl2ZUpJVENvZGU+IGppdENvZGVGb3JDYWxsVHJhbXBv
bGluZSgpCiAgICAgc3RkOjpjYWxsX29uY2Uob25jZUtleSwgWyZdIHsKICAgICAgICAgcmVzdWx0
ID0gbmV3IE5hdGl2ZUpJVENvZGUoTExJbnQ6OmdldENvZGVSZWY8SlNFbnRyeVB0clRhZz4obGxp
bnRfbmF0aXZlX2NhbGxfdHJhbXBvbGluZSksIEpJVFR5cGU6Okhvc3RDYWxsVGh1bmssIE5vSW50
cmluc2ljKTsKICAgICB9KTsKLSAgICByZXR1cm4gbWFrZVJlZigqcmVzdWx0KTsKKyAgICByZXR1
cm4gKnJlc3VsdDsKIH0KIAogc3RhdGljIFJlZjxOYXRpdmVKSVRDb2RlPiBqaXRDb2RlRm9yQ29u
c3RydWN0VHJhbXBvbGluZSgpCkBAIC04NDcsNyArODQ3LDcgQEAgc3RhdGljIFJlZjxOYXRpdmVK
SVRDb2RlPiBqaXRDb2RlRm9yQ29uc3RydWN0VHJhbXBvbGluZSgpCiAgICAgc3RkOjpjYWxsX29u
Y2Uob25jZUtleSwgWyZdIHsKICAgICAgICAgcmVzdWx0ID0gbmV3IE5hdGl2ZUpJVENvZGUoTExJ
bnQ6OmdldENvZGVSZWY8SlNFbnRyeVB0clRhZz4obGxpbnRfbmF0aXZlX2NvbnN0cnVjdF90cmFt
cG9saW5lKSwgSklUVHlwZTo6SG9zdENhbGxUaHVuaywgTm9JbnRyaW5zaWMpOwogICAgIH0pOwot
ICAgIHJldHVybiBtYWtlUmVmKCpyZXN1bHQpOworICAgIHJldHVybiAqcmVzdWx0OwogfQogCiBO
YXRpdmVFeGVjdXRhYmxlKiBWTTo6Z2V0SG9zdEZ1bmN0aW9uKE5hdGl2ZUZ1bmN0aW9uIGZ1bmN0
aW9uLCBJbnRyaW5zaWMgaW50cmluc2ljLCBOYXRpdmVGdW5jdGlvbiBjb25zdHJ1Y3RvciwgY29u
c3QgRE9NSklUOjpTaWduYXR1cmUqIHNpZ25hdHVyZSwgY29uc3QgU3RyaW5nJiBuYW1lKQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUNvZGVCbG9jay5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQ29kZUJsb2NrLmNwcAppbmRleCAyMWVkMzI0
MjAxNTc3NzQ2NjY0YzQwNzcxZjNiOWM4ZjcwMmYzODI0Li4xZjE2NzRmMDhlZjNhMWY1YTQ3Y2Zl
ZTViMWZjMDQxYzcxNjM2YWU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9XYXNtQ29kZUJsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNt
Q29kZUJsb2NrLmNwcApAQCAtNDksNyArNDksNyBAQCBDb2RlQmxvY2s6OkNvZGVCbG9jayhDb250
ZXh0KiBjb250ZXh0LCBNZW1vcnlNb2RlIG1vZGUsIE1vZHVsZUluZm9ybWF0aW9uJiBtb2R1bAog
ICAgIFJlZlB0cjxDb2RlQmxvY2s+IHByb3RlY3RlZFRoaXMgPSB0aGlzOwogCiAgICAgaWYgKE9w
dGlvbnM6OnVzZVdhc21MTEludCgpKSB7Ci0gICAgICAgIG1fcGxhbiA9IGFkb3B0UmVmKCpuZXcg
TExJbnRQbGFuKGNvbnRleHQsIG1ha2VSZWYobW9kdWxlSW5mb3JtYXRpb24pLCBtX2xsaW50Q2Fs
bGVlcy0+ZGF0YSgpLCBjcmVhdGVTaGFyZWRUYXNrPFBsYW46OkNhbGxiYWNrVHlwZT4oW3RoaXMs
IHByb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpXSAoUGxhbiYpIHsKKyAgICAg
ICAgbV9wbGFuID0gYWRvcHRSZWYoKm5ldyBMTEludFBsYW4oY29udGV4dCwgbW9kdWxlSW5mb3Jt
YXRpb24sIG1fbGxpbnRDYWxsZWVzLT5kYXRhKCksIGNyZWF0ZVNoYXJlZFRhc2s8UGxhbjo6Q2Fs
bGJhY2tUeXBlPihbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyld
IChQbGFuJikgewogICAgICAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OwogICAgICAg
ICAgICAgaWYgKG1fcGxhbi0+ZmFpbGVkKCkpIHsKICAgICAgICAgICAgICAgICBtX2Vycm9yTWVz
c2FnZSA9IG1fcGxhbi0+ZXJyb3JNZXNzYWdlKCk7CkBAIC03Niw3ICs3Niw3IEBAIENvZGVCbG9j
azo6Q29kZUJsb2NrKENvbnRleHQqIGNvbnRleHQsIE1lbW9yeU1vZGUgbW9kZSwgTW9kdWxlSW5m
b3JtYXRpb24mIG1vZHVsCiAgICAgfQogI2lmIEVOQUJMRShXRUJBU1NFTUJMWV9CM0pJVCkKICAg
ICBlbHNlIHsKLSAgICAgICAgbV9wbGFuID0gYWRvcHRSZWYoKm5ldyBCQlFQbGFuKGNvbnRleHQs
IG1ha2VSZWYobW9kdWxlSW5mb3JtYXRpb24pLCBDb21waWxlck1vZGU6OkZ1bGxDb21waWxlLCBj
cmVhdGVTaGFyZWRUYXNrPFBsYW46OkNhbGxiYWNrVHlwZT4oW3RoaXMsIHByb3RlY3RlZFRoaXMg
PSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpXSAoUGxhbiYpIHsKKyAgICAgICAgbV9wbGFuID0gYWRv
cHRSZWYoKm5ldyBCQlFQbGFuKGNvbnRleHQsIG1vZHVsZUluZm9ybWF0aW9uLCBDb21waWxlck1v
ZGU6OkZ1bGxDb21waWxlLCBjcmVhdGVTaGFyZWRUYXNrPFBsYW46OkNhbGxiYWNrVHlwZT4oW3Ro
aXMsIHByb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpXSAoUGxhbiYpIHsKICAg
ICAgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKICAgICAgICAgICAgIGlmIChtX3Bs
YW4tPmZhaWxlZCgpKSB7CiAgICAgICAgICAgICAgICAgbV9lcnJvck1lc3NhZ2UgPSBtX3BsYW4t
PmVycm9yTWVzc2FnZSgpOwpAQCAtMTEwLDcgKzExMCw3IEBAIENvZGVCbG9jazo6Q29kZUJsb2Nr
KENvbnRleHQqIGNvbnRleHQsIE1lbW9yeU1vZGUgbW9kZSwgTW9kdWxlSW5mb3JtYXRpb24mIG1v
ZHVsCiAKICAgICBhdXRvJiB3b3JrbGlzdCA9IFdhc206OmVuc3VyZVdvcmtsaXN0KCk7CiAgICAg
Ly8gTm90ZSwgaW1tZWRpYXRlbHkgYWZ0ZXIgd2UgZW5xdWV1ZSB0aGUgcGxhbiwgdGhlcmUgaXMg
YSBjaGFuY2UgdGhlIGFib3ZlIGNhbGxiYWNrIHdpbGwgYmUgY2FsbGVkLgotICAgIHdvcmtsaXN0
LmVucXVldWUobWFrZVJlZigqbV9wbGFuLmdldCgpKSk7CisgICAgd29ya2xpc3QuZW5xdWV1ZSgq
bV9wbGFuLmdldCgpKTsKIH0KIAogQ29kZUJsb2NrOjp+Q29kZUJsb2NrKCkgeyB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtT01HRm9yT1NSRW50cnlQbGFuLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21PTUdGb3JPU1JFbnRyeVBsYW4uY3Bw
CmluZGV4IGU4N2UyMWI1OWY2NmFlYWY5NzY3OTlmNGM4ZWZjZTU3ZDlhNDc5YTAuLjBkNDMzOGQ2
NTkyMTMyMmYwMjgwZGVmNjlkNTgzNjE2YjQ5ZDYxY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL1dhc21PTUdGb3JPU1JFbnRyeVBsYW4uY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL1dhc21PTUdGb3JPU1JFbnRyeVBsYW4uY3BwCkBAIC00Niw3ICs0
Niw3IEBAIHN0YXRpYyBjb25zdGV4cHIgYm9vbCB2ZXJib3NlID0gZmFsc2U7CiB9CiAKIE9NR0Zv
ck9TUkVudHJ5UGxhbjo6T01HRm9yT1NSRW50cnlQbGFuKENvbnRleHQqIGNvbnRleHQsIFJlZjxN
b2R1bGU+JiYgbW9kdWxlLCBSZWY8Q2FsbGVlPiYmIGNhbGxlZSwgdWludDMyX3QgZnVuY3Rpb25J
bmRleCwgdWludDMyX3QgbG9vcEluZGV4LCBNZW1vcnlNb2RlIG1vZGUsIENvbXBsZXRpb25UYXNr
JiYgdGFzaykKLSAgICA6IEJhc2UoY29udGV4dCwgbWFrZVJlZihjb25zdF9jYXN0PE1vZHVsZUlu
Zm9ybWF0aW9uJj4obW9kdWxlLT5tb2R1bGVJbmZvcm1hdGlvbigpKSksIFdURk1vdmUodGFzaykp
CisgICAgOiBCYXNlKGNvbnRleHQsIGNvbnN0X2Nhc3Q8TW9kdWxlSW5mb3JtYXRpb24mPihtb2R1
bGUtPm1vZHVsZUluZm9ybWF0aW9uKCkpLCBXVEZNb3ZlKHRhc2spKQogICAgICwgbV9tb2R1bGUo
V1RGTW92ZShtb2R1bGUpKQogICAgICwgbV9jb2RlQmxvY2soKm1fbW9kdWxlLT5jb2RlQmxvY2tG
b3IobW9kZSkpCiAgICAgLCBtX2NhbGxlZShXVEZNb3ZlKGNhbGxlZSkpCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtT01HUGxhbi5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9XYXNtT01HUGxhbi5jcHAKaW5kZXggNGM4ZDRjNDMyMTIzNzFkNTIxNzZk
OWM1MTkwZGE0MzBiNzBiMjRkMy4uNWU3OWYxYmM5ODVjNjVkNWNiYmFmODc4NGJkYjQ4OTBkYzhl
NjI1MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU9NR1BsYW4u
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21PTUdQbGFuLmNwcApAQCAt
NDUsNyArNDUsNyBAQCBzdGF0aWMgY29uc3RleHByIGJvb2wgdmVyYm9zZSA9IGZhbHNlOwogfQog
CiBPTUdQbGFuOjpPTUdQbGFuKENvbnRleHQqIGNvbnRleHQsIFJlZjxNb2R1bGU+JiYgbW9kdWxl
LCB1aW50MzJfdCBmdW5jdGlvbkluZGV4LCBNZW1vcnlNb2RlIG1vZGUsIENvbXBsZXRpb25UYXNr
JiYgdGFzaykKLSAgICA6IEJhc2UoY29udGV4dCwgbWFrZVJlZihjb25zdF9jYXN0PE1vZHVsZUlu
Zm9ybWF0aW9uJj4obW9kdWxlLT5tb2R1bGVJbmZvcm1hdGlvbigpKSksIFdURk1vdmUodGFzaykp
CisgICAgOiBCYXNlKGNvbnRleHQsIGNvbnN0X2Nhc3Q8TW9kdWxlSW5mb3JtYXRpb24mPihtb2R1
bGUtPm1vZHVsZUluZm9ybWF0aW9uKCkpLCBXVEZNb3ZlKHRhc2spKQogICAgICwgbV9tb2R1bGUo
V1RGTW92ZShtb2R1bGUpKQogICAgICwgbV9jb2RlQmxvY2soKm1fbW9kdWxlLT5jb2RlQmxvY2tG
b3IobW9kZSkpCiAgICAgLCBtX2Z1bmN0aW9uSW5kZXgoZnVuY3Rpb25JbmRleCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21TaWduYXR1cmUuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVNpZ25hdHVyZS5jcHAKaW5kZXggYjFhYzIyMTJiZDhk
ODUyZTQzYWUxN2EzNDVlNmM4NzZiYTFjMWQ1NC4uNzFhYWIzZGY3NTcyMmQ0MDhjNTE4YzEzZjUz
ODVjM2FmOWE0ODAwNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2Fz
bVNpZ25hdHVyZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVNpZ25h
dHVyZS5jcHAKQEAgLTE2OSw3ICsxNjksNyBAQCBSZWZQdHI8U2lnbmF0dXJlPiBTaWduYXR1cmVJ
bmZvcm1hdGlvbjo6c2lnbmF0dXJlRm9yKGNvbnN0IFZlY3RvcjxUeXBlLCAxPiYgcmVzdQogICAg
IExvY2tlciBsb2NrZXIgeyBpbmZvLm1fbG9jayB9OwogCiAgICAgYXV0byBhZGRSZXN1bHQgPSBp
bmZvLm1fc2lnbmF0dXJlU2V0LnRlbXBsYXRlIGFkZDxQYXJhbWV0ZXJUeXBlcz4oUGFyYW1ldGVy
VHlwZXMgeyByZXN1bHRzLCBhcmdzIH0pOwotICAgIHJldHVybiBtYWtlUmVmKCphZGRSZXN1bHQu
aXRlcmF0b3ItPmtleSk7CisgICAgcmV0dXJuIGFkZFJlc3VsdC5pdGVyYXRvci0+a2V5OwogfQog
CiB2b2lkIFNpZ25hdHVyZUluZm9ybWF0aW9uOjp0cnlDbGVhbnVwKCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21TaWduYXR1cmVJbmxpbmVzLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtU2lnbmF0dXJlSW5saW5lcy5oCmluZGV4IGY1MjViZWJk
MzY4NjYzMGE3NWE3MjRkMmYxMzYwODVmYWQyOTM0ZTcuLjhjNjk4NmRmZjZjNWI1NDIzMTNmMjU4
MTU4OWFkOTI1ZjgwZDZlNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L1dhc21TaWduYXR1cmVJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
V2FzbVNpZ25hdHVyZUlubGluZXMuaApAQCAtNTEsNyArNTEsNyBAQCBpbmxpbmUgU2lnbmF0dXJl
SW5kZXggU2lnbmF0dXJlSW5mb3JtYXRpb246OmdldChjb25zdCBTaWduYXR1cmUmIHNpZ25hdHVy
ZSkKICAgICBpZiAoQVNTRVJUX0VOQUJMRUQpIHsKICAgICAgICAgU2lnbmF0dXJlSW5mb3JtYXRp
b24mIGluZm8gPSBzaW5nbGV0b24oKTsKICAgICAgICAgTG9ja2VyIGxvY2tlciB7IGluZm8ubV9s
b2NrIH07Ci0gICAgICAgIEFTU0VSVF9VTlVTRUQoaW5mbywgaW5mby5tX3NpZ25hdHVyZVNldC5j
b250YWlucyhTaWduYXR1cmVIYXNoIHsgbWFrZVJlZihjb25zdF9jYXN0PFNpZ25hdHVyZSY+KHNp
Z25hdHVyZSkpIH0pKTsKKyAgICAgICAgQVNTRVJUX1VOVVNFRChpbmZvLCBpbmZvLm1fc2lnbmF0
dXJlU2V0LmNvbnRhaW5zKFNpZ25hdHVyZUhhc2ggeyBjb25zdF9jYXN0PFNpZ25hdHVyZSY+KHNp
Z25hdHVyZSkgfSkpOwogICAgIH0KICAgICByZXR1cm4gYml0d2lzZV9jYXN0PFNpZ25hdHVyZUlu
ZGV4Pigmc2lnbmF0dXJlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL1dhc21TbG93UGF0aHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVNs
b3dQYXRocy5jcHAKaW5kZXggZTc4Nzg2NTVlNDAxODE3NGQ2ODM5M2E4YjAzNDAwYTU1Mzk2NTJl
YS4uZDlmYWY1ZDU5ZDk5ZjVlOTA0YzNhN2IyNDAwN2QwOTFmZDFkOWMxNyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVNsb3dQYXRocy5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVNsb3dQYXRocy5jcHAKQEAgLTEzMCwxMSArMTMwLDEx
IEBAIGlubGluZSBib29sIGppdENvbXBpbGVBbmRTZXRIZXVyaXN0aWNzKFdhc206OkxMSW50Q2Fs
bGVlKiBjYWxsZWUsIFdhc206OkZ1bmN0aW9uCiAgICAgICAgIHVpbnQzMl90IGZ1bmN0aW9uSW5k
ZXggPSBjb2RlQmxvY2stPmZ1bmN0aW9uSW5kZXgoKTsKICAgICAgICAgUmVmUHRyPFdhc206OlBs
YW4+IHBsYW47CiAgICAgICAgIGlmIChPcHRpb25zOjp3YXNtTExJbnRUaWVyc1VwVG9CQlEoKSkK
LSAgICAgICAgICAgIHBsYW4gPSBhZG9wdFJlZigqbmV3IFdhc206OkJCUVBsYW4oaW5zdGFuY2Ut
PmNvbnRleHQoKSwgbWFrZVJlZihjb25zdF9jYXN0PFdhc206Ok1vZHVsZUluZm9ybWF0aW9uJj4o
aW5zdGFuY2UtPm1vZHVsZSgpLm1vZHVsZUluZm9ybWF0aW9uKCkpKSwgZnVuY3Rpb25JbmRleCwg
aW5zdGFuY2UtPmNvZGVCbG9jaygpLCBXYXNtOjpQbGFuOjpkb250RmluYWxpemUoKSkpOworICAg
ICAgICAgICAgcGxhbiA9IGFkb3B0UmVmKCpuZXcgV2FzbTo6QkJRUGxhbihpbnN0YW5jZS0+Y29u
dGV4dCgpLCBjb25zdF9jYXN0PFdhc206Ok1vZHVsZUluZm9ybWF0aW9uJj4oaW5zdGFuY2UtPm1v
ZHVsZSgpLm1vZHVsZUluZm9ybWF0aW9uKCkpLCBmdW5jdGlvbkluZGV4LCBpbnN0YW5jZS0+Y29k
ZUJsb2NrKCksIFdhc206OlBsYW46OmRvbnRGaW5hbGl6ZSgpKSk7CiAgICAgICAgIGVsc2UKICAg
ICAgICAgICAgIHBsYW4gPSBhZG9wdFJlZigqbmV3IFdhc206Ok9NR1BsYW4oaW5zdGFuY2UtPmNv
bnRleHQoKSwgUmVmPFdhc206Ok1vZHVsZT4oaW5zdGFuY2UtPm1vZHVsZSgpKSwgZnVuY3Rpb25J
bmRleCwgaW5zdGFuY2UtPm1lbW9yeSgpLT5tb2RlKCksIFdhc206OlBsYW46OmRvbnRGaW5hbGl6
ZSgpKSk7CiAKLSAgICAgICAgV2FzbTo6ZW5zdXJlV29ya2xpc3QoKS5lbnF1ZXVlKG1ha2VSZWYo
KnBsYW4pKTsKKyAgICAgICAgV2FzbTo6ZW5zdXJlV29ya2xpc3QoKS5lbnF1ZXVlKCpwbGFuKTsK
ICAgICAgICAgaWYgKFVOTElLRUxZKCFPcHRpb25zOjp1c2VDb25jdXJyZW50SklUKCkpKQogICAg
ICAgICAgICAgcGxhbi0+d2FpdEZvckNvbXBsZXRpb24oKTsKICAgICAgICAgZWxzZQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUluc3RhbmNl
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5SW5zdGFuY2Uu
aAppbmRleCBkNjA2NTY1YjE5YjFkMjNlYTcyODE3N2UzNjBkMjk5NzY2OGY5NGUwLi41NmY1OGY5
NTQzNDkzOTU5YjgyNmQxZjk3M2E4ZjJiMGQ1Y2Y3NjlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5SW5zdGFuY2UuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5SW5zdGFuY2UuaApAQCAtNzUsNyAr
NzUsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRNZW1vcnkoVk0mIHZtLCBKU1dlYkFzc2VtYmx5
TWVtb3J5KiB2YWx1ZSkgewogICAgICAgICBBU1NFUlQoIW1lbW9yeSgpKTsKICAgICAgICAgbV9t
ZW1vcnkuc2V0KHZtLCB0aGlzLCB2YWx1ZSk7Ci0gICAgICAgIGluc3RhbmNlKCkuc2V0TWVtb3J5
KG1ha2VSZWYobWVtb3J5KCktPm1lbW9yeSgpKSk7CisgICAgICAgIGluc3RhbmNlKCkuc2V0TWVt
b3J5KG1lbW9yeSgpLT5tZW1vcnkoKSk7CiAgICAgfQogICAgIFdhc206Ok1lbW9yeU1vZGUgbWVt
b3J5TW9kZSgpIHsgcmV0dXJuIG1lbW9yeSgpLT5tZW1vcnkoKS5tb2RlKCk7IH0KIApAQCAtODUs
MTMgKzg1LDEzIEBAIHB1YmxpYzoKICAgICAgICAgQVNTRVJUKGluZGV4IDwgbV90YWJsZXMuc2l6
ZSgpKTsKICAgICAgICAgQVNTRVJUKCF0YWJsZShpbmRleCkpOwogICAgICAgICBtX3RhYmxlc1tp
bmRleF0uc2V0KHZtLCB0aGlzLCB2YWx1ZSk7Ci0gICAgICAgIGluc3RhbmNlKCkuc2V0VGFibGUo
aW5kZXgsIG1ha2VSZWYoKnRhYmxlKGluZGV4KS0+dGFibGUoKSkpOworICAgICAgICBpbnN0YW5j
ZSgpLnNldFRhYmxlKGluZGV4LCAqdGFibGUoaW5kZXgpLT50YWJsZSgpKTsKICAgICB9CiAKICAg
ICB2b2lkIGxpbmtHbG9iYWwoVk0mIHZtLCB1aW50MzJfdCBpbmRleCwgSlNXZWJBc3NlbWJseUds
b2JhbCogdmFsdWUpCiAgICAgewogICAgICAgICBBU1NFUlQodmFsdWUgPT0gdmFsdWUtPmdsb2Jh
bCgpLT5vd25lcjxKU1dlYkFzc2VtYmx5R2xvYmFsPigpKTsKLSAgICAgICAgaW5zdGFuY2UoKS5s
aW5rR2xvYmFsKGluZGV4LCBtYWtlUmVmKCp2YWx1ZS0+Z2xvYmFsKCkpKTsKKyAgICAgICAgaW5z
dGFuY2UoKS5saW5rR2xvYmFsKGluZGV4LCAqdmFsdWUtPmdsb2JhbCgpKTsKICAgICAgICAgdm0u
aGVhcC53cml0ZUJhcnJpZXIodGhpcywgdmFsdWUpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvV2Vha1B0ci5oIGIvU291cmNlL1dURi93dGYvV2Vha1B0ci5oCmluZGV4IDZh
NmEyZjVjNTQ1ZGQyZDc0NGQ1ODQ1YjY0NDk0NzY2YTYwYTg4OGMuLmFkYzg0OTU3MTljYWEyZTY1
MzcyNTM0MTdmNTJkYmIzNDM5N2Q2MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1dlYWtQ
dHIuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9XZWFrUHRyLmgKQEAgLTE4Myw3ICsxODMsNyBAQCBw
dWJsaWM6CiAgICAgICAgIGluaXRpYWxpemVJZk5lZWRlZChvYmplY3QpOwogCiAgICAgICAgIEFT
U0VSVCgmb2JqZWN0ID09IG1faW1wbC0+dGVtcGxhdGUgZ2V0PFQ+KCkpOwotICAgICAgICByZXR1
cm4gV2Vha1B0cjxVLCBDb3VudGVyPihtYWtlUmVmKCptX2ltcGwpLCBlbmFibGVXZWFrUHRyVGhy
ZWFkaW5nQXNzZXJ0aW9ucyk7CisgICAgICAgIHJldHVybiBXZWFrUHRyPFUsIENvdW50ZXI+KCpt
X2ltcGwsIGVuYWJsZVdlYWtQdHJUaHJlYWRpbmdBc3NlcnRpb25zKTsKICAgICB9CiAKICAgICB2
b2lkIHJldm9rZUFsbCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5j
LWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFT
b3VyY2UuY3BwCmluZGV4IDhjNWUzODVkNzAwMzIwMzUyMTQ2ZTU5OTZkYWE1MThiMzFiY2U2YTQu
LmFkNWM3OTcyN2MwYWEwNmQyNzg3OTZiMDAwOTY0MTJiZWI3ODIyODAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5n
c0RhdGFTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJv
YXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuY3BwCkBAIC0xMzIsNyArMTMyLDcg
QEAgdm9pZCBDbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlOjpjb2xsZWN0RGF0YUZvcldy
aXRpbmcoQ2xpcGJvYXJkJiBkZXN0aW5hdGkKICAgICBtX251bWJlck9mUGVuZGluZ0NsaXBib2Fy
ZFR5cGVzID0gbV9pdGVtUHJvbWlzZXMuc2l6ZSgpOwogICAgIG1faXRlbVR5cGVMb2FkZXJzID0g
bV9pdGVtUHJvbWlzZXMubWFwKFsmXSAoYXV0byYgdHlwZUFuZEl0ZW0pIHsKICAgICAgICAgYXV0
byB0eXBlID0gdHlwZUFuZEl0ZW0ua2V5OwotICAgICAgICBhdXRvIGl0ZW1UeXBlTG9hZGVyID0g
Q2xpcGJvYXJkSXRlbVR5cGVMb2FkZXI6OmNyZWF0ZSh0eXBlLCBbdGhpcywgcHJvdGVjdGVkSXRl
bSA9IG1ha2VSZWYobV9pdGVtKV0geworICAgICAgICBhdXRvIGl0ZW1UeXBlTG9hZGVyID0gQ2xp
cGJvYXJkSXRlbVR5cGVMb2FkZXI6OmNyZWF0ZSh0eXBlLCBbdGhpcywgcHJvdGVjdGVkSXRlbSA9
IFJlZiB7IG1faXRlbSB9XSB7CiAgICAgICAgICAgICBBU1NFUlQobV9udW1iZXJPZlBlbmRpbmdD
bGlwYm9hcmRUeXBlcyk7CiAgICAgICAgICAgICBpZiAoIS0tbV9udW1iZXJPZlBlbmRpbmdDbGlw
Ym9hcmRUeXBlcykKICAgICAgICAgICAgICAgICBpbnZva2VDb21wbGV0aW9uSGFuZGxlcigpOwpA
QCAtMTQzLDcgKzE0Myw3IEBAIHZvaWQgQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZTo6
Y29sbGVjdERhdGFGb3JXcml0aW5nKENsaXBib2FyZCYgZGVzdGluYXRpCiAgICAgICAgICAgICBp
ZiAoIXdlYWtJdGVtVHlwZUxvYWRlcikKICAgICAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAg
ICAgICAgIGF1dG8gaXRlbVR5cGVMb2FkZXIgPSBtYWtlUmVmKCp3ZWFrSXRlbVR5cGVMb2FkZXIp
OworICAgICAgICAgICAgUmVmIGl0ZW1UeXBlTG9hZGVyIHsgKndlYWtJdGVtVHlwZUxvYWRlciB9
OwogICAgICAgICAgICAgQVNTRVJUX1VOVVNFRCh0aGlzLCBub3RGb3VuZCAhPSBtX2l0ZW1UeXBl
TG9hZGVycy5maW5kTWF0Y2hpbmcoWyZdIChhdXRvJiBsb2FkZXIpIHsgcmV0dXJuIGxvYWRlci5w
dHIoKSA9PSBpdGVtVHlwZUxvYWRlci5wdHIoKTsgfSkpOwogCiAgICAgICAgICAgICBhdXRvIHJl
c3VsdCA9IHByb21pc2UtPnJlc3VsdCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9jYWNoZS9ET01DYWNoZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RP
TUNhY2hlLmNwcAppbmRleCBmM2MwNDI2M2Q4YjA5NzcwNmI1NWVjNzc4Y2FjNDlhNTdiYzQ5Yjhl
Li40Y2ZhZmQ3NzcyZDkzZWIzMDM0OWU0Yjc1MTM2M2NhY2E1NmFmN2NkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcApAQCAtMjg4LDcgKzI4OCw3IEBAIHZvaWQg
RE9NQ2FjaGU6OmFkZEFsbChWZWN0b3I8UmVxdWVzdEluZm8+JiYgaW5mb3MsIERPTVByb21pc2VE
ZWZlcnJlZDx2b2lkPiYmIHByCiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBzaXplX3QgcmVj
b3JkUG9zaXRpb24gPSB0YXNrSGFuZGxlci0+YWRkUmVjb3JkKHRvQ29ubmVjdGlvblJlY29yZChy
ZXF1ZXN0LmdldCgpLCByZXNwb25zZSwgbnVsbHB0cikpOwogCi0gICAgICAgICAgICByZXNwb25z
ZS5jb25zdW1lQm9keVJlY2VpdmVkQnlDaHVuayhbdGFza0hhbmRsZXIgPSBXVEZNb3ZlKHRhc2tI
YW5kbGVyKSwgcmVjb3JkUG9zaXRpb24sIGRhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpLCBy
ZXNwb25zZSA9IG1ha2VSZWYocmVzcG9uc2UpXSAoYXV0byYmIHJlc3VsdCkgbXV0YWJsZSB7Cisg
ICAgICAgICAgICByZXNwb25zZS5jb25zdW1lQm9keVJlY2VpdmVkQnlDaHVuayhbdGFza0hhbmRs
ZXIgPSBXVEZNb3ZlKHRhc2tIYW5kbGVyKSwgcmVjb3JkUG9zaXRpb24sIGRhdGEgPSBTaGFyZWRC
dWZmZXI6OmNyZWF0ZSgpLCByZXNwb25zZSA9IFJlZiB7IHJlc3BvbnNlIH1dIChhdXRvJiYgcmVz
dWx0KSBtdXRhYmxlIHsKICAgICAgICAgICAgICAgICBpZiAodGFza0hhbmRsZXItPmlzRG9uZSgp
KQogICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvY2FjaGUvV29ya2VyQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL1dvcmtlckNhY2hlU3RvcmFnZUNvbm5lY3Rpb24uY3Bw
CmluZGV4IGJhMWNiNTBmMzJjYmY5Zjk5MzRmZWZkYWE0YTFjYzhhNjAwMTA2ZTkuLjQ2ZmY3Y2Vj
ZDNlMjIzMjlkNjc1ZGUyNWUyZTZiZDc5YzU0YjkxMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvY2FjaGUvV29ya2VyQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9Xb3JrZXJDYWNoZVN0b3JhZ2VDb25uZWN0aW9u
LmNwcApAQCAtMTE2LDcgKzExNiw3IEBAIHN0YXRpYyBpbmxpbmUgUmVjb3Jkc09yRXJyb3IgcmVj
b3Jkc09yRXJyb3JGcm9tUmVjb3Jkc0RhdGEoRXhwZWN0ZWQ8VmVjdG9yPENyb3NzCiBSZWY8V29y
a2VyQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbj4gV29ya2VyQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6
Y3JlYXRlKFdvcmtlckdsb2JhbFNjb3BlJiBzY29wZSkKIHsKICAgICBhdXRvIGNvbm5lY3Rpb24g
PSBhZG9wdFJlZigqbmV3IFdvcmtlckNhY2hlU3RvcmFnZUNvbm5lY3Rpb24oc2NvcGUpKTsKLSAg
ICBjYWxsT25NYWluVGhyZWFkQW5kV2FpdChbd29ya2VyVGhyZWFkID0gbWFrZVJlZihzY29wZS50
aHJlYWQoKSksIGNvbm5lY3Rpb24gPSBjb25uZWN0aW9uLnB0cigpXSgpIG11dGFibGUgeworICAg
IGNhbGxPbk1haW5UaHJlYWRBbmRXYWl0KFt3b3JrZXJUaHJlYWQgPSBSZWYgeyBzY29wZS50aHJl
YWQoKSB9LCBjb25uZWN0aW9uID0gY29ubmVjdGlvbi5wdHIoKV0oKSBtdXRhYmxlIHsKICAgICAg
ICAgY29ubmVjdGlvbi0+bV9tYWluVGhyZWFkQ29ubmVjdGlvbiA9IHdvcmtlclRocmVhZC0+d29y
a2VyTG9hZGVyUHJveHkoKS5jcmVhdGVDYWNoZVN0b3JhZ2VDb25uZWN0aW9uKCk7CiAgICAgfSk7
CiAgICAgQVNTRVJUKGNvbm5lY3Rpb24tPm1fbWFpblRocmVhZENvbm5lY3Rpb24pOwpAQCAtMTM5
LDcgKzEzOSw3IEBAIHZvaWQgV29ya2VyQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6b3Blbihjb25z
dCBDbGllbnRPcmlnaW4mIG9yaWdpbiwgY29uc3QgU3RyaW5nCiAgICAgdWludDY0X3QgcmVxdWVz
dElkZW50aWZpZXIgPSArK21fbGFzdFJlcXVlc3RJZGVudGlmaWVyOwogICAgIG1fb3BlbkFuZFJl
bW92ZUNhY2hlUGVuZGluZ1JlcXVlc3RzLmFkZChyZXF1ZXN0SWRlbnRpZmllciwgV1RGTW92ZShj
YWxsYmFjaykpOwogCi0gICAgY2FsbE9uTWFpblRocmVhZChbd29ya2VyVGhyZWFkID0gbWFrZVJl
ZihtX3Njb3BlLnRocmVhZCgpKSwgbWFpblRocmVhZENvbm5lY3Rpb24gPSBtX21haW5UaHJlYWRD
b25uZWN0aW9uLCByZXF1ZXN0SWRlbnRpZmllciwgb3JpZ2luID0gb3JpZ2luLmlzb2xhdGVkQ29w
eSgpLCBjYWNoZU5hbWUgPSBjYWNoZU5hbWUuaXNvbGF0ZWRDb3B5KCldICgpIG11dGFibGUgewor
ICAgIGNhbGxPbk1haW5UaHJlYWQoW3dvcmtlclRocmVhZCA9IFJlZiB7IG1fc2NvcGUudGhyZWFk
KCkgfSwgbWFpblRocmVhZENvbm5lY3Rpb24gPSBtX21haW5UaHJlYWRDb25uZWN0aW9uLCByZXF1
ZXN0SWRlbnRpZmllciwgb3JpZ2luID0gb3JpZ2luLmlzb2xhdGVkQ29weSgpLCBjYWNoZU5hbWUg
PSBjYWNoZU5hbWUuaXNvbGF0ZWRDb3B5KCldICgpIG11dGFibGUgewogICAgICAgICBtYWluVGhy
ZWFkQ29ubmVjdGlvbi0+b3BlbihvcmlnaW4sIGNhY2hlTmFtZSwgW3dvcmtlclRocmVhZCA9IFdU
Rk1vdmUod29ya2VyVGhyZWFkKSwgcmVxdWVzdElkZW50aWZpZXJdIChjb25zdCBDYWNoZUlkZW50
aWZpZXJPckVycm9yJiByZXN1bHQpIG11dGFibGUgewogICAgICAgICAgICAgd29ya2VyVGhyZWFk
LT5ydW5Mb29wKCkucG9zdFRhc2tGb3JNb2RlKFtyZXF1ZXN0SWRlbnRpZmllciwgcmVzdWx0XSAo
YXV0byYgc2NvcGUpIG11dGFibGUgewogICAgICAgICAgICAgICAgIGRvd25jYXN0PFdvcmtlckds
b2JhbFNjb3BlPihzY29wZSkuY2FjaGVTdG9yYWdlQ29ubmVjdGlvbigpLm9wZW5PclJlbW92ZUNv
bXBsZXRlZChyZXF1ZXN0SWRlbnRpZmllciwgcmVzdWx0KTsKQEAgLTE1OSw3ICsxNTksNyBAQCB2
b2lkIFdvcmtlckNhY2hlU3RvcmFnZUNvbm5lY3Rpb246OnJlbW92ZSh1aW50NjRfdCBjYWNoZUlk
ZW50aWZpZXIsIENhY2hlSWRlbnRpZgogICAgIHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyID0g
KyttX2xhc3RSZXF1ZXN0SWRlbnRpZmllcjsKICAgICBtX29wZW5BbmRSZW1vdmVDYWNoZVBlbmRp
bmdSZXF1ZXN0cy5hZGQocmVxdWVzdElkZW50aWZpZXIsIFdURk1vdmUoY2FsbGJhY2spKTsKIAot
ICAgIGNhbGxPbk1haW5UaHJlYWQoW3dvcmtlclRocmVhZCA9IG1ha2VSZWYobV9zY29wZS50aHJl
YWQoKSksIG1haW5UaHJlYWRDb25uZWN0aW9uID0gbV9tYWluVGhyZWFkQ29ubmVjdGlvbiwgcmVx
dWVzdElkZW50aWZpZXIsIGNhY2hlSWRlbnRpZmllcl0gKCkgbXV0YWJsZSB7CisgICAgY2FsbE9u
TWFpblRocmVhZChbd29ya2VyVGhyZWFkID0gUmVmIHsgbV9zY29wZS50aHJlYWQoKSB9LCBtYWlu
VGhyZWFkQ29ubmVjdGlvbiA9IG1fbWFpblRocmVhZENvbm5lY3Rpb24sIHJlcXVlc3RJZGVudGlm
aWVyLCBjYWNoZUlkZW50aWZpZXJdICgpIG11dGFibGUgewogICAgICAgICBtYWluVGhyZWFkQ29u
bmVjdGlvbi0+cmVtb3ZlKGNhY2hlSWRlbnRpZmllciwgW3dvcmtlclRocmVhZCA9IFdURk1vdmUo
d29ya2VyVGhyZWFkKSwgcmVxdWVzdElkZW50aWZpZXIsIGNhY2hlSWRlbnRpZmllcl0gKGNvbnN0
IENhY2hlSWRlbnRpZmllck9yRXJyb3ImIHJlc3VsdCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBB
U1NFUlRfVU5VU0VEKGNhY2hlSWRlbnRpZmllciwgIXJlc3VsdC5oYXNfdmFsdWUoKSB8fCAhcmVz
dWx0LnZhbHVlKCkuaWRlbnRpZmllciB8fCByZXN1bHQudmFsdWUoKS5pZGVudGlmaWVyID09IGNh
Y2hlSWRlbnRpZmllcik7CiAgICAgICAgICAgICB3b3JrZXJUaHJlYWQtPnJ1bkxvb3AoKS5wb3N0
VGFza0Zvck1vZGUoW3JlcXVlc3RJZGVudGlmaWVyLCByZXN1bHRdIChhdXRvJiBzY29wZSkgbXV0
YWJsZSB7CkBAIC0xNzQsNyArMTc0LDcgQEAgdm9pZCBXb3JrZXJDYWNoZVN0b3JhZ2VDb25uZWN0
aW9uOjpyZXRyaWV2ZUNhY2hlcyhjb25zdCBDbGllbnRPcmlnaW4mIG9yaWdpbiwgdWkKICAgICB1
aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciA9ICsrbV9sYXN0UmVxdWVzdElkZW50aWZpZXI7CiAg
ICAgbV9yZXRyaWV2ZUNhY2hlc1BlbmRpbmdSZXF1ZXN0cy5hZGQocmVxdWVzdElkZW50aWZpZXIs
IFdURk1vdmUoY2FsbGJhY2spKTsKIAotICAgIGNhbGxPbk1haW5UaHJlYWQoW3dvcmtlclRocmVh
ZCA9IG1ha2VSZWYobV9zY29wZS50aHJlYWQoKSksIG1haW5UaHJlYWRDb25uZWN0aW9uID0gbV9t
YWluVGhyZWFkQ29ubmVjdGlvbiwgcmVxdWVzdElkZW50aWZpZXIsIG9yaWdpbiA9IG9yaWdpbi5p
c29sYXRlZENvcHkoKSwgdXBkYXRlQ291bnRlcl0gKCkgbXV0YWJsZSB7CisgICAgY2FsbE9uTWFp
blRocmVhZChbd29ya2VyVGhyZWFkID0gUmVmIHsgbV9zY29wZS50aHJlYWQoKSB9LCBtYWluVGhy
ZWFkQ29ubmVjdGlvbiA9IG1fbWFpblRocmVhZENvbm5lY3Rpb24sIHJlcXVlc3RJZGVudGlmaWVy
LCBvcmlnaW4gPSBvcmlnaW4uaXNvbGF0ZWRDb3B5KCksIHVwZGF0ZUNvdW50ZXJdICgpIG11dGFi
bGUgewogICAgICAgICBtYWluVGhyZWFkQ29ubmVjdGlvbi0+cmV0cmlldmVDYWNoZXMob3JpZ2lu
LCB1cGRhdGVDb3VudGVyLCBbd29ya2VyVGhyZWFkID0gV1RGTW92ZSh3b3JrZXJUaHJlYWQpLCBy
ZXF1ZXN0SWRlbnRpZmllcl0gKENhY2hlSW5mb3NPckVycm9yJiYgcmVzdWx0KSBtdXRhYmxlIHsK
ICAgICAgICAgICAgIENhY2hlSW5mb3NPckVycm9yIGlzb2xhdGVkUmVzdWx0OwogICAgICAgICAg
ICAgaWYgKCFyZXN1bHQuaGFzX3ZhbHVlKCkpCkBAIC0yMDAsNyArMjAwLDcgQEAgdm9pZCBXb3Jr
ZXJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpyZXRyaWV2ZVJlY29yZHModWludDY0X3QgY2FjaGVJ
ZGVudGlmaWVyLCBjb24KICAgICB1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciA9ICsrbV9sYXN0
UmVxdWVzdElkZW50aWZpZXI7CiAgICAgbV9yZXRyaWV2ZVJlY29yZHNQZW5kaW5nUmVxdWVzdHMu
YWRkKHJlcXVlc3RJZGVudGlmaWVyLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CiAKLSAgICBjYWxsT25N
YWluVGhyZWFkKFt3b3JrZXJUaHJlYWQgPSBtYWtlUmVmKG1fc2NvcGUudGhyZWFkKCkpLCBtYWlu
VGhyZWFkQ29ubmVjdGlvbiA9IG1fbWFpblRocmVhZENvbm5lY3Rpb24sIHJlcXVlc3RJZGVudGlm
aWVyLCBjYWNoZUlkZW50aWZpZXIsIG9wdGlvbnMgPSBvcHRpb25zLmlzb2xhdGVkQ29weSgpXSgp
IG11dGFibGUgeworICAgIGNhbGxPbk1haW5UaHJlYWQoW3dvcmtlclRocmVhZCA9IFJlZiB7IG1f
c2NvcGUudGhyZWFkKCkgfSwgbWFpblRocmVhZENvbm5lY3Rpb24gPSBtX21haW5UaHJlYWRDb25u
ZWN0aW9uLCByZXF1ZXN0SWRlbnRpZmllciwgY2FjaGVJZGVudGlmaWVyLCBvcHRpb25zID0gb3B0
aW9ucy5pc29sYXRlZENvcHkoKV0oKSBtdXRhYmxlIHsKICAgICAgICAgbWFpblRocmVhZENvbm5l
Y3Rpb24tPnJldHJpZXZlUmVjb3JkcyhjYWNoZUlkZW50aWZpZXIsIG9wdGlvbnMsIFt3b3JrZXJU
aHJlYWQgPSBXVEZNb3ZlKHdvcmtlclRocmVhZCksIHJlcXVlc3RJZGVudGlmaWVyXShSZWNvcmRz
T3JFcnJvciYmIHJlc3VsdCkgbXV0YWJsZSB7CiAgICAgICAgICAgICB3b3JrZXJUaHJlYWQtPnJ1
bkxvb3AoKS5wb3N0VGFza0Zvck1vZGUoW3Jlc3VsdCA9IHJlY29yZHNEYXRhT3JFcnJvckZyb21S
ZWNvcmRzKHJlc3VsdCksIHJlcXVlc3RJZGVudGlmaWVyXSAoYXV0byYgc2NvcGUpIG11dGFibGUg
ewogICAgICAgICAgICAgICAgIGRvd25jYXN0PFdvcmtlckdsb2JhbFNjb3BlPihzY29wZSkuY2Fj
aGVTdG9yYWdlQ29ubmVjdGlvbigpLnJldHJpZXZlUmVjb3Jkc0NvbXBsZXRlZChyZXF1ZXN0SWRl
bnRpZmllciwgcmVjb3Jkc09yRXJyb3JGcm9tUmVjb3Jkc0RhdGEoV1RGTW92ZShyZXN1bHQpKSk7
CkBAIC0yMjAsNyArMjIwLDcgQEAgdm9pZCBXb3JrZXJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpi
YXRjaERlbGV0ZU9wZXJhdGlvbih1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIKICAgICB1aW50NjRf
dCByZXF1ZXN0SWRlbnRpZmllciA9ICsrbV9sYXN0UmVxdWVzdElkZW50aWZpZXI7CiAgICAgbV9i
YXRjaERlbGV0ZUFuZFB1dFBlbmRpbmdSZXF1ZXN0cy5hZGQocmVxdWVzdElkZW50aWZpZXIsIFdU
Rk1vdmUoY2FsbGJhY2spKTsKIAotICAgIGNhbGxPbk1haW5UaHJlYWQoW3dvcmtlclRocmVhZCA9
IG1ha2VSZWYobV9zY29wZS50aHJlYWQoKSksIG1haW5UaHJlYWRDb25uZWN0aW9uID0gbV9tYWlu
VGhyZWFkQ29ubmVjdGlvbiwgcmVxdWVzdElkZW50aWZpZXIsIGNhY2hlSWRlbnRpZmllciwgcmVx
dWVzdCA9IHJlcXVlc3QuaXNvbGF0ZWRDb3B5KCksIG9wdGlvbnMgPSBvcHRpb25zLmlzb2xhdGVk
Q29weSgpXSgpIG11dGFibGUgeworICAgIGNhbGxPbk1haW5UaHJlYWQoW3dvcmtlclRocmVhZCA9
IFJlZiB7IG1fc2NvcGUudGhyZWFkKCkgfSwgbWFpblRocmVhZENvbm5lY3Rpb24gPSBtX21haW5U
aHJlYWRDb25uZWN0aW9uLCByZXF1ZXN0SWRlbnRpZmllciwgY2FjaGVJZGVudGlmaWVyLCByZXF1
ZXN0ID0gcmVxdWVzdC5pc29sYXRlZENvcHkoKSwgb3B0aW9ucyA9IG9wdGlvbnMuaXNvbGF0ZWRD
b3B5KCldKCkgbXV0YWJsZSB7CiAgICAgICAgIG1haW5UaHJlYWRDb25uZWN0aW9uLT5iYXRjaERl
bGV0ZU9wZXJhdGlvbihjYWNoZUlkZW50aWZpZXIsIHJlcXVlc3QsIFdURk1vdmUob3B0aW9ucyks
IFt3b3JrZXJUaHJlYWQgPSBXVEZNb3ZlKHdvcmtlclRocmVhZCksIHJlcXVlc3RJZGVudGlmaWVy
XShSZWNvcmRJZGVudGlmaWVyc09yRXJyb3ImJiByZXN1bHQpIG11dGFibGUgewogICAgICAgICAg
ICAgd29ya2VyVGhyZWFkLT5ydW5Mb29wKCkucG9zdFRhc2tGb3JNb2RlKFtyZXF1ZXN0SWRlbnRp
ZmllciwgcmVzdWx0ID0gV1RGTW92ZShyZXN1bHQpXSAoYXV0byYgc2NvcGUpIG11dGFibGUgewog
ICAgICAgICAgICAgICAgIGRvd25jYXN0PFdvcmtlckdsb2JhbFNjb3BlPihzY29wZSkuY2FjaGVT
dG9yYWdlQ29ubmVjdGlvbigpLmRlbGV0ZVJlY29yZHNDb21wbGV0ZWQocmVxdWVzdElkZW50aWZp
ZXIsIFdURk1vdmUocmVzdWx0KSk7CkBAIC0yNDAsNyArMjQwLDcgQEAgdm9pZCBXb3JrZXJDYWNo
ZVN0b3JhZ2VDb25uZWN0aW9uOjpiYXRjaFB1dE9wZXJhdGlvbih1aW50NjRfdCBjYWNoZUlkZW50
aWZpZXIsIFYKICAgICB1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciA9ICsrbV9sYXN0UmVxdWVz
dElkZW50aWZpZXI7CiAgICAgbV9iYXRjaERlbGV0ZUFuZFB1dFBlbmRpbmdSZXF1ZXN0cy5hZGQo
cmVxdWVzdElkZW50aWZpZXIsIFdURk1vdmUoY2FsbGJhY2spKTsKIAotICAgIGNhbGxPbk1haW5U
aHJlYWQoW3dvcmtlclRocmVhZCA9IG1ha2VSZWYobV9zY29wZS50aHJlYWQoKSksIG1haW5UaHJl
YWRDb25uZWN0aW9uID0gbV9tYWluVGhyZWFkQ29ubmVjdGlvbiwgcmVxdWVzdElkZW50aWZpZXIs
IGNhY2hlSWRlbnRpZmllciwgcmVjb3Jkc0RhdGEgPSByZWNvcmRzRGF0YUZyb21SZWNvcmRzKHJl
Y29yZHMpXSgpIG11dGFibGUgeworICAgIGNhbGxPbk1haW5UaHJlYWQoW3dvcmtlclRocmVhZCA9
IFJlZiB7IG1fc2NvcGUudGhyZWFkKCkgfSwgbWFpblRocmVhZENvbm5lY3Rpb24gPSBtX21haW5U
aHJlYWRDb25uZWN0aW9uLCByZXF1ZXN0SWRlbnRpZmllciwgY2FjaGVJZGVudGlmaWVyLCByZWNv
cmRzRGF0YSA9IHJlY29yZHNEYXRhRnJvbVJlY29yZHMocmVjb3JkcyldKCkgbXV0YWJsZSB7CiAg
ICAgICAgIG1haW5UaHJlYWRDb25uZWN0aW9uLT5iYXRjaFB1dE9wZXJhdGlvbihjYWNoZUlkZW50
aWZpZXIsIHJlY29yZHNGcm9tUmVjb3Jkc0RhdGEoV1RGTW92ZShyZWNvcmRzRGF0YSkpLCBbd29y
a2VyVGhyZWFkID0gV1RGTW92ZSh3b3JrZXJUaHJlYWQpLCByZXF1ZXN0SWRlbnRpZmllcl0gKFJl
Y29yZElkZW50aWZpZXJzT3JFcnJvciYmIHJlc3VsdCkgbXV0YWJsZSB7CiAgICAgICAgICAgICB3
b3JrZXJUaHJlYWQtPnJ1bkxvb3AoKS5wb3N0VGFza0Zvck1vZGUoW3JlcXVlc3RJZGVudGlmaWVy
LCByZXN1bHQgPSBXVEZNb3ZlKHJlc3VsdCldIChhdXRvJiBzY29wZSkgbXV0YWJsZSB7CiAgICAg
ICAgICAgICAgICAgZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KHNjb3BlKS5jYWNoZVN0b3Jh
Z2VDb25uZWN0aW9uKCkucHV0UmVjb3Jkc0NvbXBsZXRlZChyZXF1ZXN0SWRlbnRpZmllciwgV1RG
TW92ZShyZXN1bHQpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW50cmll
c2FwaS9ET01GaWxlU3lzdGVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW50cmllc2Fw
aS9ET01GaWxlU3lzdGVtLmNwcAppbmRleCAyNTQ5YzA3ODFhZWM1ZTk4ODc2MGRiZmI2MTMwZTI0
NTgxOTAzNTczLi5lYmI1YWRjYTkxMjgzMTNjYjkzODQxMTBkOTUyNTE1NDQxMGRhZmJkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJpZXNhcGkvRE9NRmlsZVN5c3RlbS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBpL0RPTUZpbGVTeXN0ZW0u
Y3BwCkBAIC0yNTQsNyArMjU0LDcgQEAgdm9pZCBET01GaWxlU3lzdGVtOjpsaXN0RGlyZWN0b3J5
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIEZpbGVTeXN0ZW1EaXIKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIAotICAgIG1fd29ya1F1ZXVlLT5kaXNwYXRjaChbcHJvdGVjdGVkVGhp
cyA9IFJlZiB7ICp0aGlzIH0sIGNvbnRleHQgPSBtYWtlUmVmKGNvbnRleHQpLCBjb21wbGV0aW9u
SGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBmdWxsUGF0aCA9IGNyb3NzVGhy
ZWFkQ29weShmdWxsUGF0aCksIGRpcmVjdG9yeVZpcnR1YWxQYXRoID0gY3Jvc3NUaHJlYWRDb3B5
KGRpcmVjdG9yeVZpcnR1YWxQYXRoKV0oKSBtdXRhYmxlIHsKKyAgICBtX3dvcmtRdWV1ZS0+ZGlz
cGF0Y2goW3Byb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBjb250ZXh0ID0gUmVmIHsgY29u
dGV4dCB9LCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBm
dWxsUGF0aCA9IGNyb3NzVGhyZWFkQ29weShmdWxsUGF0aCksIGRpcmVjdG9yeVZpcnR1YWxQYXRo
ID0gY3Jvc3NUaHJlYWRDb3B5KGRpcmVjdG9yeVZpcnR1YWxQYXRoKV0oKSBtdXRhYmxlIHsKICAg
ICAgICAgYXV0byBsaXN0ZWRDaGlsZHJlbiA9IGxpc3REaXJlY3RvcnlXaXRoTWV0YWRhdGEoZnVs
bFBhdGgpOwogICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRUaGlzID0gV1RGTW92
ZShwcm90ZWN0ZWRUaGlzKSwgY29udGV4dCA9IFdURk1vdmUoY29udGV4dCksIGNvbXBsZXRpb25I
YW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIGxpc3RlZENoaWxkcmVuID0gY3Jv
c3NUaHJlYWRDb3B5KGxpc3RlZENoaWxkcmVuKSwgZGlyZWN0b3J5VmlydHVhbFBhdGggPSBkaXJl
Y3RvcnlWaXJ0dWFsUGF0aC5pc29sYXRlZENvcHkoKV0oKSBtdXRhYmxlIHsKICAgICAgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKHRvRmlsZVN5c3RlbUVudHJpZXMoY29udGV4dCwgcHJvdGVjdGVk
VGhpcywgV1RGTW92ZShsaXN0ZWRDaGlsZHJlbiksIGRpcmVjdG9yeVZpcnR1YWxQYXRoKSk7CkBA
IC0yNjksNyArMjY5LDcgQEAgdm9pZCBET01GaWxlU3lzdGVtOjpnZXRQYXJlbnQoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCYgY29udGV4dCwgRmlsZVN5c3RlbUVudHJ5JgogICAgIGF1dG8gdmlydHVh
bFBhdGggPSByZXNvbHZlUmVsYXRpdmVWaXJ0dWFsUGF0aChlbnRyeS52aXJ0dWFsUGF0aCgpLCAi
Li4iKTsKICAgICBBU1NFUlQodmlydHVhbFBhdGhbMF0gPT0gJy8nKTsKICAgICBhdXRvIGZ1bGxQ
YXRoID0gZXZhbHVhdGVQYXRoKHZpcnR1YWxQYXRoKTsKLSAgICBtX3dvcmtRdWV1ZS0+ZGlzcGF0
Y2goW3Byb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBjb250ZXh0ID0gbWFrZVJlZihjb250
ZXh0KSwgZnVsbFBhdGggPSBjcm9zc1RocmVhZENvcHkoZnVsbFBhdGgpLCB2aXJ0dWFsUGF0aCA9
IGNyb3NzVGhyZWFkQ29weSh2aXJ0dWFsUGF0aCksIGNvbXBsZXRpb25DYWxsYmFjayA9IFdURk1v
dmUoY29tcGxldGlvbkNhbGxiYWNrKV0oKSBtdXRhYmxlIHsKKyAgICBtX3dvcmtRdWV1ZS0+ZGlz
cGF0Y2goW3Byb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBjb250ZXh0ID0gUmVmIHsgY29u
dGV4dCB9LCBmdWxsUGF0aCA9IGNyb3NzVGhyZWFkQ29weShmdWxsUGF0aCksIHZpcnR1YWxQYXRo
ID0gY3Jvc3NUaHJlYWRDb3B5KHZpcnR1YWxQYXRoKSwgY29tcGxldGlvbkNhbGxiYWNrID0gV1RG
TW92ZShjb21wbGV0aW9uQ2FsbGJhY2spXSgpIG11dGFibGUgewogICAgICAgICBhdXRvIHZhbGlk
YXRlZFZpcnR1YWxQYXRoID0gdmFsaWRhdGVQYXRoSXNFeHBlY3RlZFR5cGUoZnVsbFBhdGgsIFdU
Rk1vdmUodmlydHVhbFBhdGgpLCBGaWxlU3lzdGVtOjpGaWxlVHlwZTo6RGlyZWN0b3J5KTsKICAg
ICAgICAgY2FsbE9uTWFpblRocmVhZChbcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVk
VGhpcyksIGNvbnRleHQgPSBXVEZNb3ZlKGNvbnRleHQpLCB2YWxpZGF0ZWRWaXJ0dWFsUGF0aCA9
IGNyb3NzVGhyZWFkQ29weSh2YWxpZGF0ZWRWaXJ0dWFsUGF0aCksIGNvbXBsZXRpb25DYWxsYmFj
ayA9IFdURk1vdmUoY29tcGxldGlvbkNhbGxiYWNrKV0oKSBtdXRhYmxlIHsKICAgICAgICAgICAg
IGlmICh2YWxpZGF0ZWRWaXJ0dWFsUGF0aC5oYXNFeGNlcHRpb24oKSkKQEAgLTMwNCwxMyArMzA0
LDEzIEBAIHZvaWQgRE9NRmlsZVN5c3RlbTo6Z2V0RW50cnkoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCYgY29udGV4dCwgRmlsZVN5c3RlbURpcmVjdG9yCiAgICAgQVNTRVJUKHJlc29sdmVkVmlydHVh
bFBhdGhbMF0gPT0gJy8nKTsKICAgICBhdXRvIGZ1bGxQYXRoID0gZXZhbHVhdGVQYXRoKHJlc29s
dmVkVmlydHVhbFBhdGgpOwogICAgIGlmIChmdWxsUGF0aCA9PSBtX3Jvb3RQYXRoKSB7Ci0gICAg
ICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIGNvbnRleHQgPSBtYWtlUmVmKGNvbnRleHQpLCBj
b21wbGV0aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGNvbXBsZXRpb25DYWxsYmFjayldKCkgbXV0YWJs
ZSB7CisgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIGNvbnRleHQgPSBSZWYgeyBjb250
ZXh0IH0sIGNvbXBsZXRpb25DYWxsYmFjayA9IFdURk1vdmUoY29tcGxldGlvbkNhbGxiYWNrKV0o
KSBtdXRhYmxlIHsKICAgICAgICAgICAgIGNvbXBsZXRpb25DYWxsYmFjayhSZWY8RmlsZVN5c3Rl
bUVudHJ5PiB7IHJvb3QoY29udGV4dCkgfSk7CiAgICAgICAgIH0pOwogICAgICAgICByZXR1cm47
CiAgICAgfQogCi0gICAgbV93b3JrUXVldWUtPmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gUmVm
IHsgKnRoaXMgfSwgY29udGV4dCA9IG1ha2VSZWYoY29udGV4dCksIGZ1bGxQYXRoID0gY3Jvc3NU
aHJlYWRDb3B5KGZ1bGxQYXRoKSwgcmVzb2x2ZWRWaXJ0dWFsUGF0aCA9IGNyb3NzVGhyZWFkQ29w
eShyZXNvbHZlZFZpcnR1YWxQYXRoKSwgY29tcGxldGlvbkNhbGxiYWNrID0gV1RGTW92ZShjb21w
bGV0aW9uQ2FsbGJhY2spXSgpIG11dGFibGUgeworICAgIG1fd29ya1F1ZXVlLT5kaXNwYXRjaChb
cHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIGNvbnRleHQgPSBSZWYgeyBjb250ZXh0IH0s
IGZ1bGxQYXRoID0gY3Jvc3NUaHJlYWRDb3B5KGZ1bGxQYXRoKSwgcmVzb2x2ZWRWaXJ0dWFsUGF0
aCA9IGNyb3NzVGhyZWFkQ29weShyZXNvbHZlZFZpcnR1YWxQYXRoKSwgY29tcGxldGlvbkNhbGxi
YWNrID0gV1RGTW92ZShjb21wbGV0aW9uQ2FsbGJhY2spXSgpIG11dGFibGUgewogICAgICAgICBh
dXRvIGVudHJ5VHlwZSA9IGZpbGVUeXBlSWdub3JpbmdIaWRkZW5GaWxlcyhmdWxsUGF0aCk7CiAg
ICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3Byb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3Rl
ZFRoaXMpLCBjb250ZXh0ID0gV1RGTW92ZShjb250ZXh0KSwgcmVzb2x2ZWRWaXJ0dWFsUGF0aCA9
IGNyb3NzVGhyZWFkQ29weShyZXNvbHZlZFZpcnR1YWxQYXRoKSwgZW50cnlUeXBlLCBjb21wbGV0
aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGNvbXBsZXRpb25DYWxsYmFjayldKCkgbXV0YWJsZSB7CiAg
ICAgICAgICAgICBpZiAoIWVudHJ5VHlwZSkgewpAQCAtMzM2LDcgKzMzNiw3IEBAIHZvaWQgRE9N
RmlsZVN5c3RlbTo6Z2V0RmlsZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBGaWxl
U3lzdGVtRmlsZUVudHJ5CiB7CiAgICAgYXV0byB2aXJ0dWFsUGF0aCA9IGZpbGVFbnRyeS52aXJ0
dWFsUGF0aCgpOwogICAgIGF1dG8gZnVsbFBhdGggPSBldmFsdWF0ZVBhdGgodmlydHVhbFBhdGgp
OwotICAgIG1fd29ya1F1ZXVlLT5kaXNwYXRjaChbZnVsbFBhdGggPSBjcm9zc1RocmVhZENvcHko
ZnVsbFBhdGgpLCB2aXJ0dWFsUGF0aCA9IGNyb3NzVGhyZWFkQ29weSh2aXJ0dWFsUGF0aCksIGNv
bnRleHQgPSBtYWtlUmVmKGNvbnRleHQpLCBjb21wbGV0aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGNv
bXBsZXRpb25DYWxsYmFjayldKCkgbXV0YWJsZSB7CisgICAgbV93b3JrUXVldWUtPmRpc3BhdGNo
KFtmdWxsUGF0aCA9IGNyb3NzVGhyZWFkQ29weShmdWxsUGF0aCksIHZpcnR1YWxQYXRoID0gY3Jv
c3NUaHJlYWRDb3B5KHZpcnR1YWxQYXRoKSwgY29udGV4dCA9IFJlZiB7IGNvbnRleHQgfSwgY29t
cGxldGlvbkNhbGxiYWNrID0gV1RGTW92ZShjb21wbGV0aW9uQ2FsbGJhY2spXSgpIG11dGFibGUg
ewogICAgICAgICBhdXRvIHZhbGlkYXRlZFZpcnR1YWxQYXRoID0gdmFsaWRhdGVQYXRoSXNFeHBl
Y3RlZFR5cGUoZnVsbFBhdGgsIFdURk1vdmUodmlydHVhbFBhdGgpLCBGaWxlU3lzdGVtOjpGaWxl
VHlwZTo6UmVndWxhcik7CiAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW2Z1bGxQYXRoID0gY3Jv
c3NUaHJlYWRDb3B5KGZ1bGxQYXRoKSwgdmFsaWRhdGVkVmlydHVhbFBhdGggPSBjcm9zc1RocmVh
ZENvcHkodmFsaWRhdGVkVmlydHVhbFBhdGgpLCBjb250ZXh0ID0gV1RGTW92ZShjb250ZXh0KSwg
Y29tcGxldGlvbkNhbGxiYWNrID0gV1RGTW92ZShjb21wbGV0aW9uQ2FsbGJhY2spXSgpIG11dGFi
bGUgewogICAgICAgICAgICAgaWYgKHZhbGlkYXRlZFZpcnR1YWxQYXRoLmhhc0V4Y2VwdGlvbigp
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBpL0ZpbGVTeXN0
ZW1EaXJlY3RvcnlSZWFkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBp
L0ZpbGVTeXN0ZW1EaXJlY3RvcnlSZWFkZXIuY3BwCmluZGV4IGU1NTdjZGE0NjA4Yzg1M2E3OThi
YzRkMDU3MDQxMzhkOTQzMjBjYjEuLjQyNjVhNDJmMzA5ZGI0YzRjNTRiYzE5OTU4NWRlZWI4MmQ4
ZGI4ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW50cmllc2FwaS9GaWxl
U3lzdGVtRGlyZWN0b3J5UmVhZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Vu
dHJpZXNhcGkvRmlsZVN5c3RlbURpcmVjdG9yeVJlYWRlci5jcHAKQEAgLTgyLDcgKzgyLDcgQEAg
dm9pZCBGaWxlU3lzdGVtRGlyZWN0b3J5UmVhZGVyOjpyZWFkRW50cmllcyhTY3JpcHRFeGVjdXRp
b25Db250ZXh0JiBjb250ZXh0LCBSZWYKIAogICAgIG1faXNSZWFkaW5nID0gdHJ1ZTsKICAgICBh
dXRvIHBlbmRpbmdBY3Rpdml0eSA9IG1ha2VQZW5kaW5nQWN0aXZpdHkoKnRoaXMpOwotICAgIGNh
bGxPbk1haW5UaHJlYWQoW3RoaXMsIGNvbnRleHQgPSBtYWtlUmVmKGNvbnRleHQpLCBzdWNjZXNz
Q2FsbGJhY2sgPSBXVEZNb3ZlKHN1Y2Nlc3NDYWxsYmFjayksIGVycm9yQ2FsbGJhY2sgPSBXVEZN
b3ZlKGVycm9yQ2FsbGJhY2spLCBwZW5kaW5nQWN0aXZpdHkgPSBXVEZNb3ZlKHBlbmRpbmdBY3Rp
dml0eSldKCkgbXV0YWJsZSB7CisgICAgY2FsbE9uTWFpblRocmVhZChbdGhpcywgY29udGV4dCA9
IFJlZiB7IGNvbnRleHQgfSwgc3VjY2Vzc0NhbGxiYWNrID0gV1RGTW92ZShzdWNjZXNzQ2FsbGJh
Y2spLCBlcnJvckNhbGxiYWNrID0gV1RGTW92ZShlcnJvckNhbGxiYWNrKSwgcGVuZGluZ0FjdGl2
aXR5ID0gV1RGTW92ZShwZW5kaW5nQWN0aXZpdHkpXSgpIG11dGFibGUgewogICAgICAgICBtX2lz
UmVhZGluZyA9IGZhbHNlOwogICAgICAgICBtX2RpcmVjdG9yeS0+ZmlsZXN5c3RlbSgpLmxpc3RE
aXJlY3RvcnkoY29udGV4dCwgbV9kaXJlY3RvcnksIFt0aGlzLCBzdWNjZXNzQ2FsbGJhY2sgPSBX
VEZNb3ZlKHN1Y2Nlc3NDYWxsYmFjayksIGVycm9yQ2FsbGJhY2sgPSBXVEZNb3ZlKGVycm9yQ2Fs
bGJhY2spLCBwZW5kaW5nQWN0aXZpdHkgPSBXVEZNb3ZlKHBlbmRpbmdBY3Rpdml0eSldKEV4Y2Vw
dGlvbk9yPFZlY3RvcjxSZWY8RmlsZVN5c3RlbUVudHJ5Pj4+JiYgcmVzdWx0KSBtdXRhYmxlIHsK
ICAgICAgICAgICAgIGF1dG8qIGRvY3VtZW50ID0gdGhpcy0+ZG9jdW1lbnQoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmNwcAppbmRleCAwZGQ4ZGZjZDUxZjQ5NDhl
MjczMzY4YWI1NjgwMTM1YjhhYjRhN2VhLi4yZmRjNGMwMDIxZjZlMWZkZWM0NWY4ZmFmNjA5MDZj
MmJmODJlM2IxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNo
Qm9keS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuY3Bw
CkBAIC0yNjksMTAgKzI2OSw4IEBAIFJlZlB0cjxGb3JtRGF0YT4gRmV0Y2hCb2R5Ojpib2R5QXNG
b3JtRGF0YSgpIGNvbnN0CiAgICAgICAgIHJldHVybiBGb3JtRGF0YTo6Y3JlYXRlKGFycmF5QnVm
ZmVyQm9keSgpLmRhdGEoKSwgYXJyYXlCdWZmZXJCb2R5KCkuYnl0ZUxlbmd0aCgpKTsKICAgICBp
ZiAoaXNBcnJheUJ1ZmZlclZpZXcoKSkKICAgICAgICAgcmV0dXJuIEZvcm1EYXRhOjpjcmVhdGUo
YXJyYXlCdWZmZXJWaWV3Qm9keSgpLmJhc2VBZGRyZXNzKCksIGFycmF5QnVmZmVyVmlld0JvZHko
KS5ieXRlTGVuZ3RoKCkpOwotICAgIGlmIChpc0Zvcm1EYXRhKCkpIHsKLSAgICAgICAgYXV0byBi
b2R5ID0gbWFrZVJlZihjb25zdF9jYXN0PEZvcm1EYXRhJj4oZm9ybURhdGFCb2R5KCkpKTsKLSAg
ICAgICAgcmV0dXJuIGJvZHk7Ci0gICAgfQorICAgIGlmIChpc0Zvcm1EYXRhKCkpCisgICAgICAg
IHJldHVybiAmY29uc3RfY2FzdDxGb3JtRGF0YSY+KGZvcm1EYXRhQm9keSgpKTsKICAgICBpZiAo
YXV0byogZGF0YSA9IG1fY29uc3VtZXIuZGF0YSgpKQogICAgICAgICByZXR1cm4gRm9ybURhdGE6
OmNyZWF0ZShkYXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcAppbmRleCBiMWI5YzE5
ZDE3NjQyNzJmZDk0NWNjNzM2NTc1ZTkwMDY4Yzg3YjVkLi4zNjYzZjg0YzJiNjJiNWUxNjBhZWU0
MWFlYzViZDhhNGZmNTNhOTg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwCkBAIC0xNTcsNyArMTU3LDcgQEAgRXhjZXB0aW9u
T3I8UmVmPElEQk9iamVjdFN0b3JlPj4gSURCVHJhbnNhY3Rpb246Om9iamVjdFN0b3JlKGNvbnN0
IFN0cmluZyYgb2JqZWMKICAgICBMb2NrZXIgbG9ja2VyIHsgbV9yZWZlcmVuY2VkT2JqZWN0U3Rv
cmVMb2NrIH07CiAKICAgICBpZiAoYXV0byogc3RvcmUgPSBtX3JlZmVyZW5jZWRPYmplY3RTdG9y
ZXMuZ2V0KG9iamVjdFN0b3JlTmFtZSkpCi0gICAgICAgIHJldHVybiBtYWtlUmVmKCpzdG9yZSk7
CisgICAgICAgIHJldHVybiBSZWYgeyAqc3RvcmUgfTsKIAogICAgIGJvb2wgZm91bmQgPSBmYWxz
ZTsKICAgICBmb3IgKGF1dG8mIG9iamVjdFN0b3JlIDogbV9pbmZvLm9iamVjdFN0b3JlcygpKSB7
CkBAIC04ODYsNyArODg2LDcgQEAgdm9pZCBJREJUcmFuc2FjdGlvbjo6aXRlcmF0ZUN1cnNvcihJ
REJDdXJzb3ImIGN1cnNvciwgY29uc3QgSURCSXRlcmF0ZUN1cnNvckRhdGEKICAgICBhZGRSZXF1
ZXN0KCpjdXJzb3IucmVxdWVzdCgpKTsKIAogICAgIExPRyhJbmRleGVkREJPcGVyYXRpb25zLCAi
SURCIGl0ZXJhdGUgY3Vyc29yIG9wZXJhdGlvbjogJXMgJXMiLCBjdXJzb3IuaW5mbygpLmxvZ2dp
bmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpLCBkYXRhLmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0
YSgpKTsKLSAgICBzY2hlZHVsZU9wZXJhdGlvbihJREJDbGllbnQ6OlRyYW5zYWN0aW9uT3BlcmF0
aW9uSW1wbDo6Y3JlYXRlKCp0aGlzLCAqY3Vyc29yLnJlcXVlc3QoKSwgW3Byb3RlY3RlZFRoaXMg
PSBSZWYgeyAqdGhpcyB9LCByZXF1ZXN0ID0gbWFrZVJlZigqY3Vyc29yLnJlcXVlc3QoKSldIChj
b25zdCBhdXRvJiByZXN1bHQpIHsKKyAgICBzY2hlZHVsZU9wZXJhdGlvbihJREJDbGllbnQ6OlRy
YW5zYWN0aW9uT3BlcmF0aW9uSW1wbDo6Y3JlYXRlKCp0aGlzLCAqY3Vyc29yLnJlcXVlc3QoKSwg
W3Byb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCByZXF1ZXN0ID0gUmVmIHsgKmN1cnNvci5y
ZXF1ZXN0KCkgfV0gKGNvbnN0IGF1dG8mIHJlc3VsdCkgewogICAgICAgICBwcm90ZWN0ZWRUaGlz
LT5kaWRJdGVyYXRlQ3Vyc29yT25TZXJ2ZXIocmVxdWVzdC5nZXQoKSwgcmVzdWx0KTsKICAgICB9
LCBbcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIGRhdGEgPSBkYXRhLmlzb2xhdGVkQ29w
eSgpXSAoYXV0byYgb3BlcmF0aW9uKSB7CiAgICAgICAgIHByb3RlY3RlZFRoaXMtPml0ZXJhdGVD
dXJzb3JPblNlcnZlcihvcGVyYXRpb24sIGRhdGEpOwpAQCAtMTI2NSw3ICsxMjY1LDcgQEAgUmVm
PElEQlJlcXVlc3Q+IElEQlRyYW5zYWN0aW9uOjpyZXF1ZXN0UHV0T3JBZGQoSlNHbG9iYWxPYmpl
Y3QmIHN0YXRlLCBJREJPYmplY3QKICAgICBMT0coSW5kZXhlZERCT3BlcmF0aW9ucywgIklEQiBw
dXRPckFkZCBvcGVyYXRpb246ICVzIGtleTogJXMiLCBvYmplY3RTdG9yZS5pbmZvKCkuY29uZGVu
c2VkTG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCksIGtleSA/IGtleS0+bG9nZ2luZ1N0cmlu
ZygpLnV0ZjgoKS5kYXRhKCkgOiAiPG51bGwga2V5PiIpOwogICAgIHNjaGVkdWxlT3BlcmF0aW9u
KElEQkNsaWVudDo6VHJhbnNhY3Rpb25PcGVyYXRpb25JbXBsOjpjcmVhdGUoKnRoaXMsIHJlcXVl
c3QuZ2V0KCksIFtwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgcmVxdWVzdF0gKGNvbnN0
IGF1dG8mIHJlc3VsdCkgewogICAgICAgICBwcm90ZWN0ZWRUaGlzLT5kaWRQdXRPckFkZE9uU2Vy
dmVyKHJlcXVlc3QuZ2V0KCksIHJlc3VsdCk7Ci0gICAgfSwgW3Byb3RlY3RlZFRoaXMgPSBSZWYg
eyAqdGhpcyB9LCBrZXksIHZhbHVlID0gbWFrZVJlZih2YWx1ZSksIG92ZXJ3cml0ZU1vZGVdIChh
dXRvJiBvcGVyYXRpb24pIHsKKyAgICB9LCBbcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0s
IGtleSwgdmFsdWUgPSBSZWYgeyB2YWx1ZSB9LCBvdmVyd3JpdGVNb2RlXSAoYXV0byYgb3BlcmF0
aW9uKSB7CiAgICAgICAgIHByb3RlY3RlZFRoaXMtPnB1dE9yQWRkT25TZXJ2ZXIob3BlcmF0aW9u
LCBrZXkuZ2V0KCksIHZhbHVlLnB0cigpLCBvdmVyd3JpdGVNb2RlKTsKICAgICB9KSwgSXNXcml0
ZU9wZXJhdGlvbjo6WWVzKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3IuY3BwCmluZGV4IDZk
NzM0ZDU0YmFiM2JkYmRmOWQ2YmVmM2IwNjgwNTk3NWVkYzkyYzEuLjM0ZjI1NTg4ZDhiYTc4MmNj
MzQ5NDM0YmJiN2RjYmJmZTMyMTAwYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb25Db29yZGluYXRvci5jcHAK
QEAgLTU3LDcgKzU3LDcgQEAgUmVmPE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yPiBNZWRpYVNlc3Np
b25Db29yZGluYXRvcjo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnQKIAogTWVkaWFTZXNzaW9u
Q29vcmRpbmF0b3I6Ok1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIGNvbnRleHQpCiAgICAgOiBBY3RpdmVET01PYmplY3QoY29udGV4dCkKLSAgICAsIG1fbG9n
Z2VyKG1ha2VSZWYoRG9jdW1lbnQ6OnNoYXJlZExvZ2dlcigpKSkKKyAgICAsIG1fbG9nZ2VyKERv
Y3VtZW50OjpzaGFyZWRMb2dnZXIoKSkKICAgICAsIG1fbG9nSWRlbnRpZmllcihuZXh0Q29vcmRp
bmF0b3JMb2dJZGVudGlmaWVyKCkpCiB7CiAgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUGVlckNvbm5l
Y3Rpb25CYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUGVl
ckNvbm5lY3Rpb25CYWNrZW5kLmNwcAppbmRleCBjNTU2OThlZjNmYThjN2Y5OGNjY2QzYmU0ODg3
OTc0ZTk0OGYwYjE3Li4xNDAwZTExOTE1M2ZhZWFkM2JjYjk0M2Q5MDk0NzNiZjU0NjA2NDJiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1BlZXJDb25uZWN0
aW9uQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9Q
ZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3BwCkBAIC0zNzgsNyArMzc4LDcgQEAgdm9pZCBQZWVyQ29u
bmVjdGlvbkJhY2tlbmQ6Om5ld0lDRUNhbmRpZGF0ZShTdHJpbmcmJiBzZHAsIFN0cmluZyYmIG1p
ZCwgdW5zaWduZWQKIAogdm9pZCBQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6Om5ld0RhdGFDaGFubmVs
KFVuaXF1ZVJlZjxSVENEYXRhQ2hhbm5lbEhhbmRsZXI+JiYgY2hhbm5lbEhhbmRsZXIsIFN0cmlu
ZyYmIGxhYmVsLCBSVENEYXRhQ2hhbm5lbEluaXQmJiBjaGFubmVsSW5pdCkKIHsKLSAgICBtX3Bl
ZXJDb25uZWN0aW9uLnF1ZXVlVGFza0tlZXBpbmdPYmplY3RBbGl2ZShtX3BlZXJDb25uZWN0aW9u
LCBUYXNrU291cmNlOjpOZXR3b3JraW5nLCBbY29ubmVjdGlvbiA9IG1ha2VSZWYobV9wZWVyQ29u
bmVjdGlvbiksIGxhYmVsID0gV1RGTW92ZShsYWJlbCksIGNoYW5uZWxIYW5kbGVyID0gV1RGTW92
ZShjaGFubmVsSGFuZGxlciksIGNoYW5uZWxJbml0ID0gV1RGTW92ZShjaGFubmVsSW5pdCldKCkg
bXV0YWJsZSB7CisgICAgbV9wZWVyQ29ubmVjdGlvbi5xdWV1ZVRhc2tLZWVwaW5nT2JqZWN0QWxp
dmUobV9wZWVyQ29ubmVjdGlvbiwgVGFza1NvdXJjZTo6TmV0d29ya2luZywgW2Nvbm5lY3Rpb24g
PSBSZWYgeyBtX3BlZXJDb25uZWN0aW9uIH0sIGxhYmVsID0gV1RGTW92ZShsYWJlbCksIGNoYW5u
ZWxIYW5kbGVyID0gV1RGTW92ZShjaGFubmVsSGFuZGxlciksIGNoYW5uZWxJbml0ID0gV1RGTW92
ZShjaGFubmVsSW5pdCldKCkgbXV0YWJsZSB7CiAgICAgICAgIGlmIChjb25uZWN0aW9uLT5pc0Ns
b3NlZCgpKQogICAgICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNGcmFtZVRyYW5zZm9ybS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNGcmFtZVRyYW5zZm9ybS5jcHAKaW5k
ZXggMWJlYzdjMzE1YmU1YzA3NTAzMjAwYjA1ZDk1M2NlMjE4OWIxODdlMC4uMGYwNDM2ZWYyY2Zj
M2QwYTgxN2E2NWI3ODgxZDk2ZWIzYzc4MTAzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTRnJhbWVUcmFuc2Zvcm0uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU0ZyYW1lVHJhbnNmb3JtLmNwcApA
QCAtMTU5LDcgKzE1OSw3IEBAIHZvaWQgUlRDUnRwU0ZyYW1lVHJhbnNmb3JtOjppbml0aWFsaXpl
VHJhbnNmb3JtZXIoUlRDUnRwVHJhbnNmb3JtQmFja2VuZCYgYmFja2VuCiAgICAgbV90cmFuc2Zv
cm1lci0+c2V0SXNFbmNyeXB0aW5nKHNpZGUgPT0gU2lkZTo6U2VuZGVyKTsKICAgICBtX3RyYW5z
Zm9ybWVyLT5zZXRNZWRpYVR5cGUoYmFja2VuZC5tZWRpYVR5cGUoKSk7CiAKLSAgICBiYWNrZW5k
LnNldFRyYW5zZm9ybWFibGVGcmFtZUNhbGxiYWNrKFt0cmFuc2Zvcm1lciA9IG1fdHJhbnNmb3Jt
ZXIsIGlkZW50aWZpZXIgPSBjb250ZXh0LT5jb250ZXh0SWRlbnRpZmllcigpLCBiYWNrZW5kID0g
bWFrZVJlZihiYWNrZW5kKSwgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKV0oYXV0byYmIGZy
YW1lKSB7CisgICAgYmFja2VuZC5zZXRUcmFuc2Zvcm1hYmxlRnJhbWVDYWxsYmFjayhbdHJhbnNm
b3JtZXIgPSBtX3RyYW5zZm9ybWVyLCBpZGVudGlmaWVyID0gY29udGV4dC0+Y29udGV4dElkZW50
aWZpZXIoKSwgYmFja2VuZCA9IFJlZiB7IGJhY2tlbmQgfSwgd2Vha1RoaXMgPSBtYWtlV2Vha1B0
cih0aGlzKV0oYXV0byYmIGZyYW1lKSB7CiAgICAgICAgIGF1dG8gY2h1bmsgPSBmcmFtZS0+ZGF0
YSgpOwogICAgICAgICBpZiAoIWNodW5rLmRhdGEoKSB8fCAhY2h1bmsuc2l6ZSgpKQogICAgICAg
ICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9SVENSdHBTY3JpcHRUcmFuc2Zvcm0uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9SVENSdHBTY3JpcHRUcmFuc2Zvcm0uY3BwCmluZGV4IDlkN2U0NjQ4OWE0MWRj
ODNlYjUzZjUxNmIxMTVlZjgxYmU1Mjk4ODcuLmVjZGEyM2M4NzVmNzA3MjE1MTdlZGJlYTYxOTkz
NDQ2MjA5NzJhYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vUlRDUnRwU2NyaXB0VHJhbnNmb3JtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL1JUQ1J0cFNjcmlwdFRyYW5zZm9ybS5jcHAKQEAgLTYwLDcgKzYwLDcgQEAg
RXhjZXB0aW9uT3I8UmVmPFJUQ1J0cFNjcmlwdFRyYW5zZm9ybT4+IFJUQ1J0cFNjcmlwdFRyYW5z
Zm9ybTo6Y3JlYXRlKEpTQzo6SlNHbG8KICAgICBpZiAoY2hhbm5lbHMuaGFzRXhjZXB0aW9uKCkp
CiAgICAgICAgIHJldHVybiBjaGFubmVscy5yZWxlYXNlRXhjZXB0aW9uKCk7CiAKLSAgICBhdXRv
IHRyYW5zZm9ybSA9IGFkb3B0UmVmKCpuZXcgUlRDUnRwU2NyaXB0VHJhbnNmb3JtKCpjb250ZXh0
LCBtYWtlUmVmKHdvcmtlcikpKTsKKyAgICBhdXRvIHRyYW5zZm9ybSA9IGFkb3B0UmVmKCpuZXcg
UlRDUnRwU2NyaXB0VHJhbnNmb3JtKCpjb250ZXh0LCB3b3JrZXIpKTsKICAgICB0cmFuc2Zvcm0t
PnN1c3BlbmRJZk5lZWRlZCgpOwogCiAgICAgd29ya2VyLmNyZWF0ZVJUQ1J0cFNjcmlwdFRyYW5z
Zm9ybWVyKHRyYW5zZm9ybSwgeyBzZXJpYWxpemVkT3B0aW9ucy5yZWxlYXNlUmV0dXJuVmFsdWUo
KSwgY2hhbm5lbHMucmVsZWFzZVJldHVyblZhbHVlKCkgfSk7CkBAIC0xMTMsOCArMTEzLDggQEAg
dm9pZCBSVENSdHBTY3JpcHRUcmFuc2Zvcm06OndpbGxDbGVhckJhY2tlbmQoUlRDUnRwVHJhbnNm
b3JtQmFja2VuZCYpCiB2b2lkIFJUQ1J0cFNjcmlwdFRyYW5zZm9ybTo6aW5pdGlhbGl6ZVRyYW5z
Zm9ybWVyKFJUQ1J0cFRyYW5zZm9ybUJhY2tlbmQmIGJhY2tlbmQpCiB7CiAgICAgbV9pc0F0dGFj
aGVkID0gdHJ1ZTsKLSAgICBpZiAoIXNldHVwVHJhbnNmb3JtZXIobWFrZVJlZihiYWNrZW5kKSkp
Ci0gICAgICAgIG1fYmFja2VuZCA9IG1ha2VSZWYoYmFja2VuZCk7CisgICAgaWYgKCFzZXR1cFRy
YW5zZm9ybWVyKGJhY2tlbmQpKQorICAgICAgICBtX2JhY2tlbmQgPSAmYmFja2VuZDsKIH0KIAog
Ym9vbCBSVENSdHBTY3JpcHRUcmFuc2Zvcm06OnNldHVwVHJhbnNmb3JtZXIoUmVmPFJUQ1J0cFRy
YW5zZm9ybUJhY2tlbmQ+JiYgYmFja2VuZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2NyaXB0VHJhbnNmb3JtZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTY3JpcHRUcmFuc2Zvcm1lci5jcHAKaW5k
ZXggMDM2OTAyZTM5YzNhMGFkODBmYWViYjdkNmRkOTE0Y2FkOGYxZTRiOS4uZjg0ZDdkNzNhZGI1
MzBlYzU5ODIwOGFmOWYxODYyNTFkYjVmMDhlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTY3JpcHRUcmFuc2Zvcm1lci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTY3JpcHRUcmFuc2Zvcm1lci5j
cHAKQEAgLTEwMCw5ICsxMDAsOSBAQCBFeGNlcHRpb25PcjxSZWY8V3JpdGFibGVTdHJlYW0+PiBS
VENSdHBTY3JpcHRUcmFuc2Zvcm1lcjo6d3JpdGFibGUoKQogICAgICAgICAgICAgICAgIHJldHVy
biBFeGNlcHRpb24geyBFeGlzdGluZ0V4Y2VwdGlvbkVycm9yIH07CiAKICAgICAgICAgICAgIGF1
dG8gcnRjRnJhbWUgPSBXVEY6OnN3aXRjaE9uKGZyYW1lLCBbJl0oUmVmUHRyPFJUQ0VuY29kZWRB
dWRpb0ZyYW1lPiYgdmFsdWUpIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gbWFrZVJlZih2YWx1
ZS0+cnRjRnJhbWUoKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIFJlZiB7IHZhbHVlLT5ydGNG
cmFtZSgpIH07CiAgICAgICAgICAgICB9LCBbJl0oUmVmUHRyPFJUQ0VuY29kZWRWaWRlb0ZyYW1l
PiYgdmFsdWUpIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gbWFrZVJlZih2YWx1ZS0+cnRjRnJh
bWUoKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIFJlZiB7IHZhbHVlLT5ydGNGcmFtZSgpIH07
CiAgICAgICAgICAgICB9KTsKIAogICAgICAgICAgICAgLy8gSWYgbm8gZGF0YSwgc2tpcCB0aGUg
ZnJhbWUgc2luY2UgdGhlcmUgaXMgbm90aGluZyB0byBwYWNrZXRpemUgb3IgZGVjb2RlLgpAQCAt
MTE0LDcgKzExNCw3IEBAIEV4Y2VwdGlvbk9yPFJlZjxXcml0YWJsZVN0cmVhbT4+IFJUQ1J0cFNj
cmlwdFRyYW5zZm9ybWVyOjp3cml0YWJsZSgpCiAgICAgICAgICAgICByZXR1cm4gd3JpdGFibGVP
ckV4Y2VwdGlvbjsKICAgICAgICAgbV93cml0YWJsZSA9IHdyaXRhYmxlT3JFeGNlcHRpb24ucmVs
ZWFzZVJldHVyblZhbHVlKCk7CiAgICAgfQotICAgIHJldHVybiBtYWtlUmVmKCptX3dyaXRhYmxl
KTsKKyAgICByZXR1cm4gUmVmIHsgKm1fd3JpdGFibGUgfTsKIH0KIAogdm9pZCBSVENSdHBTY3Jp
cHRUcmFuc2Zvcm1lcjo6c3RhcnQoUmVmPFJUQ1J0cFRyYW5zZm9ybUJhY2tlbmQ+JiYgYmFja2Vu
ZCkKQEAgLTEyMiw3ICsxMjIsNyBAQCB2b2lkIFJUQ1J0cFNjcmlwdFRyYW5zZm9ybWVyOjpzdGFy
dChSZWY8UlRDUnRwVHJhbnNmb3JtQmFja2VuZD4mJiBiYWNrZW5kKQogICAgIG1fYmFja2VuZCA9
IFdURk1vdmUoYmFja2VuZCk7CiAKICAgICBhdXRvJiBjb250ZXh0ID0gZG93bmNhc3Q8V29ya2Vy
R2xvYmFsU2NvcGU+KCpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOwotICAgIG1fYmFja2VuZC0+
c2V0VHJhbnNmb3JtYWJsZUZyYW1lQ2FsbGJhY2soW3JlYWRhYmxlU291cmNlID0gbWFrZVdlYWtQ
dHIobV9yZWFkYWJsZVNvdXJjZS5nZXQoKSksIGlzQXVkaW8gPSBtX2JhY2tlbmQtPm1lZGlhVHlw
ZSgpID09IFJUQ1J0cFRyYW5zZm9ybUJhY2tlbmQ6Ok1lZGlhVHlwZTo6QXVkaW8sIHRocmVhZCA9
IG1ha2VSZWYoY29udGV4dC50aHJlYWQoKSldKGF1dG8mJiBmcmFtZSkgbXV0YWJsZSB7CisgICAg
bV9iYWNrZW5kLT5zZXRUcmFuc2Zvcm1hYmxlRnJhbWVDYWxsYmFjayhbcmVhZGFibGVTb3VyY2Ug
PSBtYWtlV2Vha1B0cihtX3JlYWRhYmxlU291cmNlLmdldCgpKSwgaXNBdWRpbyA9IG1fYmFja2Vu
ZC0+bWVkaWFUeXBlKCkgPT0gUlRDUnRwVHJhbnNmb3JtQmFja2VuZDo6TWVkaWFUeXBlOjpBdWRp
bywgdGhyZWFkID0gUmVmIHsgY29udGV4dC50aHJlYWQoKSB9XShhdXRvJiYgZnJhbWUpIG11dGFi
bGUgewogICAgICAgICB0aHJlYWQtPnJ1bkxvb3AoKS5wb3N0VGFza0Zvck1vZGUoW3JlYWRhYmxl
U291cmNlLCBpc0F1ZGlvLCBmcmFtZSA9IFdURk1vdmUoZnJhbWUpXShhdXRvJiBjb250ZXh0KSBt
dXRhYmxlIHsKICAgICAgICAgICAgIGlmICghcmVhZGFibGVTb3VyY2UpCiAgICAgICAgICAgICAg
ICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9saWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFDaGFubmVsSGFu
ZGxlci5jcHAKaW5kZXggZGMzMDU1NjA3NThlMmQ5N2M5ZGFiZjQwOTA2MTE4ZDdiZTExNTUwNy4u
MTlhYjllMzI4NjViYzdlNTQ0ZTJmNjgwYjBkNGNlZmZkMjE2YTdhNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNo
YW5uZWxIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuY3BwCkBAIC0xNTUsNyArMTU1
LDcgQEAgdm9pZCBMaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXI6OmNoZWNrU3RhdGUoKQogICAg
ICAgICBtX2J1ZmZlcmVkTWVzc2FnZXMuYXBwZW5kKFN0YXRlQ2hhbmdlIHsgc3RhdGUsIFdURk1v
dmUoZXJyb3IpIH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIHBvc3RUYXNrKFtwcm90
ZWN0ZWRDbGllbnQgPSBtYWtlUmVmKCptX2NsaWVudCksIHN0YXRlLCBlcnJvciA9IFdURk1vdmUo
ZXJyb3IpXSB7CisgICAgcG9zdFRhc2soW3Byb3RlY3RlZENsaWVudCA9IFJlZiB7ICptX2NsaWVu
dCB9LCBzdGF0ZSwgZXJyb3IgPSBXVEZNb3ZlKGVycm9yKV0gewogICAgICAgICBpZiAoZXJyb3Ig
JiYgIWVycm9yLT5vaygpKSB7CiAgICAgICAgICAgICBhdXRvIHJ0Y0Vycm9yID0gdG9SVENFcnJv
cigqZXJyb3IpOwogICAgICAgICAgICAgaWYgKCFydGNFcnJvcikKQEAgLTE3OSw3ICsxNzksNyBA
QCB2b2lkIExpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlcjo6T25NZXNzYWdlKGNvbnN0IHdlYnJ0
Yzo6RGF0YUJ1ZmZlciYgYnVmZmVyKQogICAgIH0KIAogICAgIHN0ZDo6dW5pcXVlX3B0cjx3ZWJy
dGM6OkRhdGFCdWZmZXI+IHByb3RlY3RlZEJ1ZmZlcihuZXcgd2VicnRjOjpEYXRhQnVmZmVyKGJ1
ZmZlcikpOwotICAgIHBvc3RUYXNrKFtwcm90ZWN0ZWRDbGllbnQgPSBtYWtlUmVmKCptX2NsaWVu
dCksIGJ1ZmZlciA9IFdURk1vdmUocHJvdGVjdGVkQnVmZmVyKV0geworICAgIHBvc3RUYXNrKFtw
cm90ZWN0ZWRDbGllbnQgPSBSZWYgeyAqbV9jbGllbnQgfSwgYnVmZmVyID0gV1RGTW92ZShwcm90
ZWN0ZWRCdWZmZXIpXSB7CiAgICAgICAgIGF1dG8qIGRhdGEgPSBidWZmZXItPmRhdGEuZGF0YTx1
aW50OF90PigpOwogICAgICAgICBpZiAoYnVmZmVyLT5iaW5hcnkpCiAgICAgICAgICAgICBwcm90
ZWN0ZWRDbGllbnQtPmRpZFJlY2VpdmVSYXdEYXRhKGRhdGEsIGJ1ZmZlci0+c2l6ZSgpKTsKQEAg
LTE5NCw3ICsxOTQsNyBAQCB2b2lkIExpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlcjo6T25CdWZm
ZXJlZEFtb3VudENoYW5nZSh1aW50NjRfdCBhbW91bnQpCiAgICAgaWYgKCFtX2NsaWVudCkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgcG9zdFRhc2soW3Byb3RlY3RlZENsaWVudCA9IG1ha2VSZWYo
Km1fY2xpZW50KSwgYW1vdW50XSB7CisgICAgcG9zdFRhc2soW3Byb3RlY3RlZENsaWVudCA9IFJl
ZiB7ICptX2NsaWVudCB9LCBhbW91bnRdIHsKICAgICAgICAgcHJvdGVjdGVkQ2xpZW50LT5idWZm
ZXJlZEFtb3VudElzRGVjcmVhc2luZyhzdGF0aWNfY2FzdDxzaXplX3Q+KGFtb3VudCkpOwogICAg
IH0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9s
aWJ3ZWJydGMvTGliV2ViUlRDRHRsc1RyYW5zcG9ydEJhY2tlbmQuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRHRsc1RyYW5zcG9ydEJh
Y2tlbmQuY3BwCmluZGV4IDA3YWExMTY4OTM0MjE3OWU5M2VlZDgxNWMxN2EwN2QzOGMwMTE0MzAu
LjdlNzJiZDU1MTJmMDhiYWFkMWUyY2M5YWIxYzY0ODhhMDNmN2NmYmQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0R0bHNU
cmFuc3BvcnRCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEdGxzVHJhbnNwb3J0QmFja2VuZC5jcHAKQEAgLTEwMSw3
ICsxMDEsNyBAQCB2b2lkIExpYldlYlJUQ0R0bHNUcmFuc3BvcnRCYWNrZW5kT2JzZXJ2ZXI6OnVw
ZGF0ZVN0YXRlKHdlYnJ0Yzo6RHRsc1RyYW5zcG9ydEluZgogCiB2b2lkIExpYldlYlJUQ0R0bHNU
cmFuc3BvcnRCYWNrZW5kT2JzZXJ2ZXI6OnN0YXJ0KCkKIHsKLSAgICBMaWJXZWJSVENQcm92aWRl
cjo6Y2FsbE9uV2ViUlRDTmV0d29ya1RocmVhZChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VS
ZWYoKnRoaXMpXSgpIG11dGFibGUgeworICAgIExpYldlYlJUQ1Byb3ZpZGVyOjpjYWxsT25XZWJS
VENOZXR3b3JrVGhyZWFkKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfV0oKSBt
dXRhYmxlIHsKICAgICAgICAgbV9iYWNrZW5kLT5SZWdpc3Rlck9ic2VydmVyKHRoaXMpOwogICAg
ICAgICBjYWxsT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRU
aGlzKSwgaW5mbyA9IG1fYmFja2VuZC0+SW5mb3JtYXRpb24oKV0oKSBtdXRhYmxlIHsKICAgICAg
ICAgICAgIHByb3RlY3RlZFRoaXMtPnVwZGF0ZVN0YXRlKFdURk1vdmUoaW5mbykpOwpAQCAtMTEy
LDIxICsxMTIsMjEgQEAgdm9pZCBMaWJXZWJSVENEdGxzVHJhbnNwb3J0QmFja2VuZE9ic2VydmVy
OjpzdGFydCgpCiB2b2lkIExpYldlYlJUQ0R0bHNUcmFuc3BvcnRCYWNrZW5kT2JzZXJ2ZXI6OnN0
b3AoKQogewogICAgIG1fY2xpZW50ID0gbnVsbHB0cjsKLSAgICBMaWJXZWJSVENQcm92aWRlcjo6
Y2FsbE9uV2ViUlRDTmV0d29ya1RocmVhZChbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMp
XSB7CisgICAgTGliV2ViUlRDUHJvdmlkZXI6OmNhbGxPbldlYlJUQ05ldHdvcmtUaHJlYWQoW3By
b3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9XSB7CiAgICAgICAgIHByb3RlY3RlZFRoaXMtPm1f
YmFja2VuZC0+VW5yZWdpc3Rlck9ic2VydmVyKCk7CiAgICAgfSk7CiB9CiAKIHZvaWQgTGliV2Vi
UlRDRHRsc1RyYW5zcG9ydEJhY2tlbmRPYnNlcnZlcjo6T25TdGF0ZUNoYW5nZSh3ZWJydGM6OkR0
bHNUcmFuc3BvcnRJbmZvcm1hdGlvbiBpbmZvKQogewotICAgIGNhbGxPbk1haW5UaHJlYWQoW3By
b3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgaW5mbyA9IFdURk1vdmUoaW5mbyldKCkgbXV0
YWJsZSB7CisgICAgY2FsbE9uTWFpblRocmVhZChbcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlz
IH0sIGluZm8gPSBXVEZNb3ZlKGluZm8pXSgpIG11dGFibGUgewogICAgICAgICBwcm90ZWN0ZWRU
aGlzLT51cGRhdGVTdGF0ZShXVEZNb3ZlKGluZm8pKTsKICAgICB9KTsKIH0KIAogdm9pZCBMaWJX
ZWJSVENEdGxzVHJhbnNwb3J0QmFja2VuZE9ic2VydmVyOjpPbkVycm9yKHdlYnJ0Yzo6UlRDRXJy
b3IpCiB7Ci0gICAgY2FsbE9uTWFpblRocmVhZChbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRo
aXMpXSB7CisgICAgY2FsbE9uTWFpblRocmVhZChbcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlz
IH1dIHsKICAgICAgICAgaWYgKHByb3RlY3RlZFRoaXMtPm1fY2xpZW50KQogICAgICAgICAgICAg
cHJvdGVjdGVkVGhpcy0+bV9jbGllbnQtPm9uRXJyb3IoKTsKICAgICB9KTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0lj
ZVRyYW5zcG9ydEJhY2tlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9saWJ3ZWJydGMvTGliV2ViUlRDSWNlVHJhbnNwb3J0QmFja2VuZC5jcHAKaW5kZXggNTgyOWMz
ZWY1YzAzOGFjZDA4Njc3NjRiNzY3ODAxNTlmMWU1YTlhMC4uNDZmZGM0ODdiNjk0N2E2YTE2NzNj
YzVhNTQ4MjlhODlmMDA4NWM4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDSWNlVHJhbnNwb3J0QmFja2VuZC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRD
SWNlVHJhbnNwb3J0QmFja2VuZC5jcHAKQEAgLTEwMiw3ICsxMDIsNyBAQCBMaWJXZWJSVENJY2VU
cmFuc3BvcnRCYWNrZW5kT2JzZXJ2ZXI6OkxpYldlYlJUQ0ljZVRyYW5zcG9ydEJhY2tlbmRPYnNl
cnZlcihSVENJYwogCiB2b2lkIExpYldlYlJUQ0ljZVRyYW5zcG9ydEJhY2tlbmRPYnNlcnZlcjo6
c3RhcnQoKQogewotICAgIExpYldlYlJUQ1Byb3ZpZGVyOjpjYWxsT25XZWJSVENOZXR3b3JrVGhy
ZWFkKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldKCkgbXV0YWJsZSB7Cisg
ICAgTGliV2ViUlRDUHJvdmlkZXI6OmNhbGxPbldlYlJUQ05ldHdvcmtUaHJlYWQoW3RoaXMsIHBy
b3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9XSgpIG11dGFibGUgewogICAgICAgICBhdXRvKiBp
bnRlcm5hbCA9IG1fYmFja2VuZC0+aW50ZXJuYWwoKTsKICAgICAgICAgaWYgKCFpbnRlcm5hbCkK
ICAgICAgICAgICAgIHJldHVybjsKQEAgLTExNCw3ICsxMTQsNyBAQCB2b2lkIExpYldlYlJUQ0lj
ZVRyYW5zcG9ydEJhY2tlbmRPYnNlcnZlcjo6c3RhcnQoKQogdm9pZCBMaWJXZWJSVENJY2VUcmFu
c3BvcnRCYWNrZW5kT2JzZXJ2ZXI6OnN0b3AoKQogewogICAgIG1fY2xpZW50ID0gbnVsbHB0cjsK
LSAgICBMaWJXZWJSVENQcm92aWRlcjo6Y2FsbE9uV2ViUlRDTmV0d29ya1RocmVhZChbdGhpcywg
cHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSB7CisgICAgTGliV2ViUlRDUHJvdmlkZXI6
OmNhbGxPbldlYlJUQ05ldHdvcmtUaHJlYWQoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAq
dGhpcyB9XSB7CiAgICAgICAgIGF1dG8qIGludGVybmFsID0gbV9iYWNrZW5kLT5pbnRlcm5hbCgp
OwogICAgICAgICBpZiAoIWludGVybmFsKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTI1LDcg
KzEyNSw3IEBAIHZvaWQgTGliV2ViUlRDSWNlVHJhbnNwb3J0QmFja2VuZE9ic2VydmVyOjpzdG9w
KCkKIAogdm9pZCBMaWJXZWJSVENJY2VUcmFuc3BvcnRCYWNrZW5kT2JzZXJ2ZXI6Om9uSWNlVHJh
bnNwb3J0U3RhdGVDaGFuZ2VkKGNyaWNrZXQ6OkljZVRyYW5zcG9ydEludGVybmFsKiBpbnRlcm5h
bCkKIHsKLSAgICBjYWxsT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhp
cyksIHN0YXRlID0gaW50ZXJuYWwtPkdldEljZVRyYW5zcG9ydFN0YXRlKCldIHsKKyAgICBjYWxs
T25NYWluVGhyZWFkKFtwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgc3RhdGUgPSBpbnRl
cm5hbC0+R2V0SWNlVHJhbnNwb3J0U3RhdGUoKV0gewogICAgICAgICBpZiAocHJvdGVjdGVkVGhp
cy0+bV9jbGllbnQpCiAgICAgICAgICAgICBwcm90ZWN0ZWRUaGlzLT5tX2NsaWVudC0+b25TdGF0
ZUNoYW5nZWQodG9SVENJY2VUcmFuc3BvcnRTdGF0ZShzdGF0ZSkpOwogICAgIH0pOwpAQCAtMTMz
LDcgKzEzMyw3IEBAIHZvaWQgTGliV2ViUlRDSWNlVHJhbnNwb3J0QmFja2VuZE9ic2VydmVyOjpv
bkljZVRyYW5zcG9ydFN0YXRlQ2hhbmdlZChjcmlja2V0OjpJCiAKIHZvaWQgTGliV2ViUlRDSWNl
VHJhbnNwb3J0QmFja2VuZE9ic2VydmVyOjpvbkdhdGhlcmluZ1N0YXRlQ2hhbmdlZChjcmlja2V0
OjpJY2VUcmFuc3BvcnRJbnRlcm5hbCogaW50ZXJuYWwpCiB7Ci0gICAgY2FsbE9uTWFpblRocmVh
ZChbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBzdGF0ZSA9IGludGVybmFsLT5nYXRo
ZXJpbmdfc3RhdGUoKV0geworICAgIGNhbGxPbk1haW5UaHJlYWQoW3Byb3RlY3RlZFRoaXMgPSBS
ZWYgeyAqdGhpcyB9LCBzdGF0ZSA9IGludGVybmFsLT5nYXRoZXJpbmdfc3RhdGUoKV0gewogICAg
ICAgICBpZiAocHJvdGVjdGVkVGhpcy0+bV9jbGllbnQpCiAgICAgICAgICAgICBwcm90ZWN0ZWRU
aGlzLT5tX2NsaWVudC0+b25HYXRoZXJpbmdTdGF0ZUNoYW5nZWQodG9SVENJY2VHYXRoZXJpbmdT
dGF0ZShzdGF0ZSkpOwogICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDTWVkaWFFbmRwb2ludC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENNZWRpYUVu
ZHBvaW50LmNwcAppbmRleCA5NmM4ZjMzYTc0YjFlMDQwZjFhNTM4ZTA3ODdlODVjNWQ3NTc5NDM0
Li5iMjA1ZGMyNTA1NmRmN2Q0YzBjYWVlZjgyN2UxOWFiZjM3ZTg4YzVlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENNZWRp
YUVuZHBvaW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xp
YndlYnJ0Yy9MaWJXZWJSVENNZWRpYUVuZHBvaW50LmNwcApAQCAtMzA3LDcgKzMwNyw3IEBAIHZv
aWQgTGliV2ViUlRDTWVkaWFFbmRwb2ludDo6YWRkUGVuZGluZ1RyYWNrRXZlbnQoUmVmPFJUQ1J0
cFJlY2VpdmVyPiYmIHJlY2VpdmVyCiAgICAgfSk7CiAgICAgbV9yZW1vdGVTdHJlYW1zRnJvbVJl
bW90ZVRyYWNrLmFkZCgmdHJhY2ssIFdURk1vdmUoc3RyZWFtSWRzKSk7CiAKLSAgICBtX3BlZXJD
b25uZWN0aW9uQmFja2VuZC5hZGRQZW5kaW5nVHJhY2tFdmVudCh7IFdURk1vdmUocmVjZWl2ZXIp
LCBtYWtlUmVmKHRyYWNrKSwgV1RGTW92ZShzdHJlYW1zKSwgV1RGTW92ZSh0cmFuc2NlaXZlcikg
fSk7CisgICAgbV9wZWVyQ29ubmVjdGlvbkJhY2tlbmQuYWRkUGVuZGluZ1RyYWNrRXZlbnQoeyBX
VEZNb3ZlKHJlY2VpdmVyKSwgdHJhY2ssIFdURk1vdmUoc3RyZWFtcyksIFdURk1vdmUodHJhbnNj
ZWl2ZXIpIH0pOwogfQogCiB2b2lkIExpYldlYlJUQ01lZGlhRW5kcG9pbnQ6OmNvbGxlY3RUcmFu
c2NlaXZlcnMoKQpAQCAtMzQzLDcgKzM0Myw3IEBAIHZvaWQgTGliV2ViUlRDTWVkaWFFbmRwb2lu
dDo6bmV3VHJhbnNjZWl2ZXIocnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6UnRwVHJhbnNjCiAg
ICAgaWYgKCF0cmFuc2NlaXZlcikKICAgICAgICAgdHJhbnNjZWl2ZXIgPSAmbV9wZWVyQ29ubmVj
dGlvbkJhY2tlbmQubmV3UmVtb3RlVHJhbnNjZWl2ZXIobWFrZVVuaXF1ZTxMaWJXZWJSVENSdHBU
cmFuc2NlaXZlckJhY2tlbmQ+KFdURk1vdmUocnRjVHJhbnNjZWl2ZXIpKSwgcnRjUmVjZWl2ZXIt
Pm1lZGlhX3R5cGUoKSA9PSBjcmlja2V0OjpNRURJQV9UWVBFX0FVRElPID8gUmVhbHRpbWVNZWRp
YVNvdXJjZTo6VHlwZTo6QXVkaW8gOiBSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlOjpWaWRlbyk7
CiAKLSAgICBhZGRQZW5kaW5nVHJhY2tFdmVudChtYWtlUmVmKHRyYW5zY2VpdmVyLT5yZWNlaXZl
cigpKSwgdHJhbnNjZWl2ZXItPnJlY2VpdmVyKCkudHJhY2soKSwgcnRjUmVjZWl2ZXItPnN0cmVh
bXMoKSwgbWFrZVJlZigqdHJhbnNjZWl2ZXIpKTsKKyAgICBhZGRQZW5kaW5nVHJhY2tFdmVudCh0
cmFuc2NlaXZlci0+cmVjZWl2ZXIoKSwgdHJhbnNjZWl2ZXItPnJlY2VpdmVyKCkudHJhY2soKSwg
cnRjUmVjZWl2ZXItPnN0cmVhbXMoKSwgdHJhbnNjZWl2ZXIpOwogfQogCiB2b2lkIExpYldlYlJU
Q01lZGlhRW5kcG9pbnQ6OnJlbW92ZVJlbW90ZVRyYWNrKHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJy
dGM6OlJ0cFJlY2VpdmVySW50ZXJmYWNlPiYmIHJlY2VpdmVyKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUGVlckNvbm5l
Y3Rpb25CYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGli
d2VicnRjL0xpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZC5jcHAKaW5kZXggMDBlYmJmODA1
YTQ4ZDM3Njg1YWZmMjRjN2NkODQzODZmOGYxMjM3OC4uZDgwMmI4MDM5ZjIxNjQwZmU1YzRjZjBm
ZmI1ZTNkMzY4MzdiZDc3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQ
ZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3BwCkBAIC0zMDgsNyArMzA4LDcgQEAgc3RhdGljIGlubGlu
ZSBSZWZQdHI8UlRDUnRwU2VuZGVyPiBmaW5kRXhpc3RpbmdTZW5kZXIoY29uc3QgVmVjdG9yPFJl
ZlB0cjxSVENSdHAKICAgICBmb3IgKGF1dG8mIHRyYW5zY2VpdmVyIDogdHJhbnNjZWl2ZXJzKSB7
CiAgICAgICAgIGF1dG8mIHNlbmRlciA9IHRyYW5zY2VpdmVyLT5zZW5kZXIoKTsKICAgICAgICAg
aWYgKCFzZW5kZXIuaXNTdG9wcGVkKCkgJiYgc2VuZGVyQmFja2VuZC5ydGNTZW5kZXIoKSA9PSBi
YWNrZW5kRnJvbVJUUFNlbmRlcihzZW5kZXIpLnJ0Y1NlbmRlcigpKQotICAgICAgICAgICAgcmV0
dXJuIG1ha2VSZWYoc2VuZGVyKTsKKyAgICAgICAgICAgIHJldHVybiBSZWYgeyBzZW5kZXIgfTsK
ICAgICB9CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CkBAIC0zMjEsMTQgKzMyMSwxNCBAQCBFeGNl
cHRpb25PcjxSZWY8UlRDUnRwU2VuZGVyPj4gTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5k
OjphZGRUcmFjayhNZWRpYVN0cgogCiAgICAgaWYgKGF1dG8gc2VuZGVyID0gZmluZEV4aXN0aW5n
U2VuZGVyKG1fcGVlckNvbm5lY3Rpb24uY3VycmVudFRyYW5zY2VpdmVycygpLCAqc2VuZGVyQmFj
a2VuZCkpIHsKICAgICAgICAgYmFja2VuZEZyb21SVFBTZW5kZXIoKnNlbmRlcikudGFrZVNvdXJj
ZSgqc2VuZGVyQmFja2VuZCk7Ci0gICAgICAgIHNlbmRlci0+c2V0VHJhY2sobWFrZVJlZih0cmFj
aykpOworICAgICAgICBzZW5kZXItPnNldFRyYWNrKHRyYWNrKTsKICAgICAgICAgc2VuZGVyLT5z
ZXRNZWRpYVN0cmVhbUlkcyhtZWRpYVN0cmVhbUlkcyk7CiAgICAgICAgIHJldHVybiBzZW5kZXIu
cmVsZWFzZU5vbk51bGwoKTsKICAgICB9CiAKICAgICBhdXRvIHRyYW5zY2VpdmVyQmFja2VuZCA9
IG1fZW5kcG9pbnQtPnRyYW5zY2VpdmVyQmFja2VuZEZyb21TZW5kZXIoKnNlbmRlckJhY2tlbmQp
OwogCi0gICAgYXV0byBzZW5kZXIgPSBSVENSdHBTZW5kZXI6OmNyZWF0ZShtX3BlZXJDb25uZWN0
aW9uLCBtYWtlUmVmKHRyYWNrKSwgV1RGTW92ZShzZW5kZXJCYWNrZW5kKSk7CisgICAgYXV0byBz
ZW5kZXIgPSBSVENSdHBTZW5kZXI6OmNyZWF0ZShtX3BlZXJDb25uZWN0aW9uLCB0cmFjaywgV1RG
TW92ZShzZW5kZXJCYWNrZW5kKSk7CiAgICAgc2VuZGVyLT5zZXRNZWRpYVN0cmVhbUlkcyhtZWRp
YVN0cmVhbUlkcyk7CiAgICAgYXV0byByZWNlaXZlciA9IGNyZWF0ZVJlY2VpdmVyKHRyYW5zY2Vp
dmVyQmFja2VuZC0+Y3JlYXRlUmVjZWl2ZXJCYWNrZW5kKCkpOwogICAgIGF1dG8gdHJhbnNjZWl2
ZXIgPSBSVENSdHBUcmFuc2NlaXZlcjo6Y3JlYXRlKHNlbmRlci5jb3B5UmVmKCksIFdURk1vdmUo
cmVjZWl2ZXIpLCBXVEZNb3ZlKHRyYW5zY2VpdmVyQmFja2VuZCkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDU2N0cFRy
YW5zcG9ydEJhY2tlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9s
aWJ3ZWJydGMvTGliV2ViUlRDU2N0cFRyYW5zcG9ydEJhY2tlbmQuY3BwCmluZGV4IDA0NDBiYjhi
Y2E2ZWVlZWJjNWFiNjVjYzM3M2NhMTAxMjY2OGIwZmYuLjgwYzJiNzc1NmViYTRkOWM1MDJiNWE5
YTQwMGZlMDI3ZDg3NzVjNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1NjdHBUcmFuc3BvcnRCYWNrZW5kLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENT
Y3RwVHJhbnNwb3J0QmFja2VuZC5jcHAKQEAgLTk0LDcgKzk0LDcgQEAgdm9pZCBMaWJXZWJSVENT
Y3RwVHJhbnNwb3J0QmFja2VuZE9ic2VydmVyOjp1cGRhdGVTdGF0ZSh3ZWJydGM6OlNjdHBUcmFu
c3BvcnRJbmYKIAogdm9pZCBMaWJXZWJSVENTY3RwVHJhbnNwb3J0QmFja2VuZE9ic2VydmVyOjpz
dGFydCgpCiB7Ci0gICAgTGliV2ViUlRDUHJvdmlkZXI6OmNhbGxPbldlYlJUQ05ldHdvcmtUaHJl
YWQoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0oKSBtdXRhYmxlIHsKKyAg
ICBMaWJXZWJSVENQcm92aWRlcjo6Y2FsbE9uV2ViUlRDTmV0d29ya1RocmVhZChbdGhpcywgcHJv
dGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH1dKCkgbXV0YWJsZSB7CiAgICAgICAgIG1fYmFja2Vu
ZC0+UmVnaXN0ZXJPYnNlcnZlcih0aGlzKTsKICAgICAgICAgY2FsbE9uTWFpblRocmVhZChbcHJv
dGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIGluZm8gPSBtX2JhY2tlbmQtPklu
Zm9ybWF0aW9uKCldKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBwcm90ZWN0ZWRUaGlzLT51cGRh
dGVTdGF0ZShXVEZNb3ZlKGluZm8pKTsKQEAgLTEwNSwxNCArMTA1LDE0IEBAIHZvaWQgTGliV2Vi
UlRDU2N0cFRyYW5zcG9ydEJhY2tlbmRPYnNlcnZlcjo6c3RhcnQoKQogdm9pZCBMaWJXZWJSVENT
Y3RwVHJhbnNwb3J0QmFja2VuZE9ic2VydmVyOjpzdG9wKCkKIHsKICAgICBtX2NsaWVudCA9IG51
bGxwdHI7Ci0gICAgTGliV2ViUlRDUHJvdmlkZXI6OmNhbGxPbldlYlJUQ05ldHdvcmtUaHJlYWQo
W3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0geworICAgIExpYldlYlJUQ1Byb3ZpZGVy
OjpjYWxsT25XZWJSVENOZXR3b3JrVGhyZWFkKFtwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMg
fV0gewogICAgICAgICBwcm90ZWN0ZWRUaGlzLT5tX2JhY2tlbmQtPlVucmVnaXN0ZXJPYnNlcnZl
cigpOwogICAgIH0pOwogfQogCiB2b2lkIExpYldlYlJUQ1NjdHBUcmFuc3BvcnRCYWNrZW5kT2Jz
ZXJ2ZXI6Ok9uU3RhdGVDaGFuZ2Uod2VicnRjOjpTY3RwVHJhbnNwb3J0SW5mb3JtYXRpb24gaW5m
bykKIHsKLSAgICBjYWxsT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhp
cyksIGluZm8gPSBXVEZNb3ZlKGluZm8pXSgpIG11dGFibGUgeworICAgIGNhbGxPbk1haW5UaHJl
YWQoW3Byb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBpbmZvID0gV1RGTW92ZShpbmZvKV0o
KSBtdXRhYmxlIHsKICAgICAgICAgcHJvdGVjdGVkVGhpcy0+dXBkYXRlU3RhdGUoV1RGTW92ZShp
bmZvKSk7CiAgICAgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25v
dGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90
aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uY3BwCmluZGV4IGVmYzJmZDQwNGY4NTIwODc4OTU3MDZm
MTIzYjVmNWIyNmEzNGU2ZDEuLmI2M2ZkMDgwNWExYjI2YzVmNzg5NDY3NTQ2YzdhMWFiYTQ5ZGEw
YTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3Rp
ZmljYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9O
b3RpZmljYXRpb24uY3BwCkBAIC0xODgsNyArMTg4LDcgQEAgYXV0byBOb3RpZmljYXRpb246OnBl
cm1pc3Npb24oRG9jdW1lbnQmIGRvY3VtZW50KSAtPiBQZXJtaXNzaW9uCiAKIHZvaWQgTm90aWZp
Y2F0aW9uOjpyZXF1ZXN0UGVybWlzc2lvbihEb2N1bWVudCYgZG9jdW1lbnQsIFJlZlB0cjxOb3Rp
ZmljYXRpb25QZXJtaXNzaW9uQ2FsbGJhY2s+JiYgY2FsbGJhY2ssIFJlZjxEZWZlcnJlZFByb21p
c2U+JiYgcHJvbWlzZSkKIHsKLSAgICBhdXRvIHJlc29sdmVQcm9taXNlQW5kQ2FsbGJhY2sgPSBb
ZG9jdW1lbnQgPSBtYWtlUmVmKGRvY3VtZW50KSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNr
KSwgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSldKFBlcm1pc3Npb24gcGVybWlzc2lvbikgbXV0
YWJsZSB7CisgICAgYXV0byByZXNvbHZlUHJvbWlzZUFuZENhbGxiYWNrID0gW2RvY3VtZW50ID0g
UmVmIHsgZG9jdW1lbnQgfSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgcHJvbWlzZSA9
IFdURk1vdmUocHJvbWlzZSldKFBlcm1pc3Npb24gcGVybWlzc2lvbikgbXV0YWJsZSB7CiAgICAg
ICAgIGRvY3VtZW50LT5ldmVudExvb3AoKS5xdWV1ZVRhc2soVGFza1NvdXJjZTo6RE9NTWFuaXB1
bGF0aW9uLCBbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgcHJvbWlzZSA9IFdURk1vdmUo
cHJvbWlzZSksIHBlcm1pc3Npb25dKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBpZiAoY2FsbGJh
Y2spCiAgICAgICAgICAgICAgICAgY2FsbGJhY2stPmhhbmRsZUV2ZW50KHBlcm1pc3Npb24pOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRp
b25SZXN1bHRMaXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJl
Y29nbml0aW9uUmVzdWx0TGlzdC5jcHAKaW5kZXggYzg1MTAzNTM5MWYxNGQwZGFhNjAwYmE1MGI0
YjY0ZGM5ZGI1OGRjYS4uMjE5ZDc3MDE2YmE4YTE0MjA5ZGJiMWFmMmNhMzU4ZjM0N2E0ZTYzNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRp
b25SZXN1bHRMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVl
Y2hSZWNvZ25pdGlvblJlc3VsdExpc3QuY3BwCkBAIC01MCw3ICs1MCw3IEBAIFNwZWVjaFJlY29n
bml0aW9uUmVzdWx0KiBTcGVlY2hSZWNvZ25pdGlvblJlc3VsdExpc3Q6Oml0ZW0odWludDY0X3Qg
aW5kZXgpIGNvbnN0CiAKIHZvaWQgU3BlZWNoUmVjb2duaXRpb25SZXN1bHRMaXN0OjphZGQoU3Bl
ZWNoUmVjb2duaXRpb25SZXN1bHQmIHJlc3VsdCkKIHsKLSAgICBtX2xpc3QuYXBwZW5kKG1ha2VS
ZWYocmVzdWx0KSk7CisgICAgbV9saXN0LmFwcGVuZChyZXN1bHQpOwogfQogCiBTcGVlY2hSZWNv
Z25pdGlvblJlc3VsdExpc3Q6OlNwZWVjaFJlY29nbml0aW9uUmVzdWx0TGlzdChWZWN0b3I8UmVm
PFNwZWVjaFJlY29nbml0aW9uUmVzdWx0Pj4mJiBsaXN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9Bc3luY0F1ZGlvRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0FzeW5jQXVkaW9EZWNvZGVyLmNwcAppbmRleCA5NzVjZmMz
ZWNkNTcyMzJhYmU3NzNiOWQxYmM0ZDA0NGIzYzVlZTg0Li4wNGY0ZWYyYzI5ZWRhM2JjZTZlZTVj
NmM0YjQzNmRjOTNiNjkxYzkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL0FzeW5jQXVkaW9EZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL0FzeW5jQXVkaW9EZWNvZGVyLmNwcApAQCAtOTgsNyArOTgsNyBAQCB2b2lkIEFz
eW5jQXVkaW9EZWNvZGVyOjpEZWNvZGluZ1Rhc2s6OmRlY29kZSgpCiB2b2lkIEFzeW5jQXVkaW9E
ZWNvZGVyOjpEZWNvZGluZ1Rhc2s6Om5vdGlmeUNvbXBsZXRlKCkKIHsKICAgICBpZiAoYXV0byog
YXVkaW9CdWZmZXIgPSB0aGlzLT5hdWRpb0J1ZmZlcigpKQotICAgICAgICBjYWxsYmFjaygpKG1h
a2VSZWYoKmF1ZGlvQnVmZmVyKSk7CisgICAgICAgIGNhbGxiYWNrKCkoUmVmIHsgKmF1ZGlvQnVm
ZmVyIH0pOwogICAgIGVsc2UKICAgICAgICAgY2FsbGJhY2soKShFeGNlcHRpb24geyBFbmNvZGlu
Z0Vycm9yLCAiRGVjb2RpbmcgZmFpbGVkIl9zIH0pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL0F1ZGlvTm9kZS5jcHAKaW5kZXggNjNmMGE4MzNkZTIwNjc5MmUyNTIwZWU3
MzMxZDFmZTMzN2Y0NTlhYi4uMjE4N2NkYzlhNWVlNDkwNjk3YzZhY2UzZTc1NTBlY2IyMWY0YWM3
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb05vZGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2RlLmNwcApA
QCAtMTAzLDcgKzEwMyw3IEBAIGF1dG8gQXVkaW9Ob2RlOjp0b1dlYWtPclN0cm9uZ0NvbnRleHQo
QmFzZUF1ZGlvQ29udGV4dCYgY29udGV4dCwgTm9kZVR5cGUgbm9kZVR5CiAgICAgLy8gRGVzdGlu
YXRpb24gbm9kZXMgYXJlIG93bmVkIGJ5IHRoZSBCYXNlQXVkaW9Db250ZXh0IHNvIHdlIHVzZSBX
ZWFrUHRyIHRvIGF2b2lkIGEgcmV0YWluIGN5Y2xlLgogICAgIGlmIChub2RlVHlwZSA9PSBBdWRp
b05vZGU6Ok5vZGVUeXBlRGVzdGluYXRpb24pCiAgICAgICAgIHJldHVybiBtYWtlV2Vha1B0cihj
b250ZXh0LCBFbmFibGVXZWFrUHRyVGhyZWFkaW5nQXNzZXJ0aW9uczo6Tm8pOyAvLyBXZWJBdWRp
byBjb2RlIHVzZXMgbG9ja2luZyB3aGVuIGFjY2Vzc2luZyB0aGUgY29udGV4dC4KLSAgICByZXR1
cm4gbWFrZVJlZihjb250ZXh0KTsKKyAgICByZXR1cm4gUmVmIHsgY29udGV4dCB9OwogfQogCiBB
dWRpb05vZGU6OkF1ZGlvTm9kZShCYXNlQXVkaW9Db250ZXh0JiBjb250ZXh0LCBOb2RlVHlwZSB0
eXBlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dv
cmtsZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXQu
Y3BwCmluZGV4IDk0NTQxNzI4M2IyOTAzNjIyY2E1NWIzN2Y1MjM0OTBhZTNhODcwYTMuLjQ0ZTE1
ZDNiODJlMjg0MWJjNDk1MWIwYWYwMDA1NTM1Y2NiZGIwODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldC5jcHAKQEAgLTgyLDcgKzgyLDcgQEAg
dm9pZCBBdWRpb1dvcmtsZXQ6OmNyZWF0ZVByb2Nlc3Nvcihjb25zdCBTdHJpbmcmIG5hbWUsIFRy
YW5zZmVycmVkTWVzc2FnZVBvcnQgcG8KICAgICBpZiAoIXByb3h5KQogICAgICAgICByZXR1cm47
CiAKLSAgICBwcm94eS0+cG9zdFRhc2tGb3JNb2RlVG9Xb3JrbGV0R2xvYmFsU2NvcGUoW25hbWUg
PSBuYW1lLmlzb2xhdGVkQ29weSgpLCBwb3J0LCBvcHRpb25zID0gV1RGTW92ZShvcHRpb25zKSwg
bm9kZSA9IG1ha2VSZWYobm9kZSldKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIG11
dGFibGUgeworICAgIHByb3h5LT5wb3N0VGFza0Zvck1vZGVUb1dvcmtsZXRHbG9iYWxTY29wZShb
bmFtZSA9IG5hbWUuaXNvbGF0ZWRDb3B5KCksIHBvcnQsIG9wdGlvbnMgPSBXVEZNb3ZlKG9wdGlv
bnMpLCBub2RlID0gUmVmIHsgbm9kZSB9XShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0
KSBtdXRhYmxlIHsKICAgICAgICAgbm9kZS0+c2V0UHJvY2Vzc29yKGRvd25jYXN0PEF1ZGlvV29y
a2xldEdsb2JhbFNjb3BlPihjb250ZXh0KS5jcmVhdGVQcm9jZXNzb3IobmFtZSwgcG9ydCwgV1RG
TW92ZShvcHRpb25zKSkpOwogICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtub2RlID0gV1RGTW92
ZShub2RlKV0geyB9KTsKICAgICB9LCBXb3JrZXJSdW5Mb29wOjpkZWZhdWx0TW9kZSgpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRGVmYXVsdEF1ZGlvRGVz
dGluYXRpb25Ob2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRGVmYXVs
dEF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcAppbmRleCBiZGQwMmRkYWQxNWYxMzk2OTkzNzY5Y2Mw
ZTMyM2YzMjAwOTNlMTQ5Li45ZWU2NGI3OTM3MDQ5NGI1MzUzOTk3NDcyYTkxZTc4ZmMwZWZiNzY2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0RlZmF1bHRBdWRp
b0Rlc3RpbmF0aW9uTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9EZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwCkBAIC0xMzksNyArMTM5LDcgQEAgdm9p
ZCBEZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGU6OmVuYWJsZUlucHV0KGNvbnN0IFN0cmluZyYg
aW5wdXREZXZpY2VJZCkKIEZ1bmN0aW9uPHZvaWQoRnVuY3Rpb248dm9pZCgpPiYmKT4gRGVmYXVs
dEF1ZGlvRGVzdGluYXRpb25Ob2RlOjpkaXNwYXRjaFRvUmVuZGVyVGhyZWFkRnVuY3Rpb24oKQog
ewogICAgIGlmIChhdXRvKiB3b3JrbGV0UHJveHkgPSBjb250ZXh0KCkuYXVkaW9Xb3JrbGV0KCku
cHJveHkoKSkgewotICAgICAgICByZXR1cm4gW3dvcmtsZXRQcm94eSA9IG1ha2VSZWYoKndvcmts
ZXRQcm94eSldKEZ1bmN0aW9uPHZvaWQoKT4mJiBmdW5jdGlvbikgeworICAgICAgICByZXR1cm4g
W3dvcmtsZXRQcm94eSA9IFJlZiB7ICp3b3JrbGV0UHJveHkgfV0oRnVuY3Rpb248dm9pZCgpPiYm
IGZ1bmN0aW9uKSB7CiAgICAgICAgICAgICB3b3JrbGV0UHJveHktPnBvc3RUYXNrRm9yTW9kZVRv
V29ya2xldEdsb2JhbFNjb3BlKFtmdW5jdGlvbiA9IFdURk1vdmUoZnVuY3Rpb24pXShTY3JpcHRF
eGVjdXRpb25Db250ZXh0JikgbXV0YWJsZSB7CiAgICAgICAgICAgICAgICAgZnVuY3Rpb24oKTsK
ICAgICAgICAgICAgIH0sIFdvcmtlclJ1bkxvb3A6OmRlZmF1bHRNb2RlKCkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlLmNwcAppbmRleCBiMDFkOWU4
NWNhZTgyNWUwOWYwZjFiNGE3ZjkyMTNhZTk0YWExMjgyLi43N2ZmZDkzMTk3ZDZlMjNiZTIwMTEw
YTNlM2I5MjVlNzk3Y2EyZWZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmRhdGFiYXNlL0RhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRh
dGFiYXNlL0RhdGFiYXNlLmNwcApAQCAtNjg0LDcgKzY4NCw3IEBAIHZvaWQgRGF0YWJhc2U6OnJ1
blRyYW5zYWN0aW9uKFJlZlB0cjxTUUxUcmFuc2FjdGlvbkNhbGxiYWNrPiYmIGNhbGxiYWNrLCBS
ZWZQdHI8CiAgICAgTG9ja2VyIGxvY2tlciB7IG1fdHJhbnNhY3Rpb25JblByb2dyZXNzTG9jayB9
OwogICAgIGlmICghbV9pc1RyYW5zYWN0aW9uUXVldWVFbmFibGVkKSB7CiAgICAgICAgIGlmIChl
cnJvckNhbGxiYWNrKSB7Ci0gICAgICAgICAgICBtX2RvY3VtZW50LT5ldmVudExvb3AoKS5xdWV1
ZVRhc2soVGFza1NvdXJjZTo6TmV0d29ya2luZywgW2Vycm9yQ2FsbGJhY2sgPSBtYWtlUmVmKCpl
cnJvckNhbGxiYWNrKV0oKSB7CisgICAgICAgICAgICBtX2RvY3VtZW50LT5ldmVudExvb3AoKS5x
dWV1ZVRhc2soVGFza1NvdXJjZTo6TmV0d29ya2luZywgW2Vycm9yQ2FsbGJhY2sgPSBSZWYgeyAq
ZXJyb3JDYWxsYmFjayB9XSgpIHsKICAgICAgICAgICAgICAgICBlcnJvckNhbGxiYWNrLT5oYW5k
bGVFdmVudChTUUxFcnJvcjo6Y3JlYXRlKFNRTEVycm9yOjpVTktOT1dOX0VSUiwgImRhdGFiYXNl
IGhhcyBiZWVuIGNsb3NlZCIpKTsKICAgICAgICAgICAgIH0pOwogICAgICAgICB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSSW5wdXRTb3VyY2VBcnJheS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSSW5wdXRTb3VyY2VBcnJheS5j
cHAKaW5kZXggNGE2Y2UyNTZjZDlmNWI3ZmFlMzFiNTZlYzk3NTA5YWFmZGVmMjAzMi4uNTYwZDAz
YWI3ZmI5YzNlY2E1YzExMTg2YzQxNjQ4OWZiOTkyYzAwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUklucHV0U291cmNlQXJyYXkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJJbnB1dFNvdXJjZUFycmF5LmNwcApAQCAtODgs
NyArODgsNyBAQCB2b2lkIFdlYlhSSW5wdXRTb3VyY2VBcnJheTo6dXBkYXRlKGRvdWJsZSB0aW1l
c3RhbXAsIGNvbnN0IElucHV0U291cmNlTGlzdCYgaW5wdQogICAgIGlmICghYWRkZWQuaXNFbXB0
eSgpIHx8ICFyZW1vdmVkLmlzRW1wdHkoKSkgewogICAgICAgICAvLyBBIHVzZXIgYWdlbnQgTVVT
VCBkaXNwYXRjaCBhbiBpbnB1dHNvdXJjZXNjaGFuZ2UgZXZlbnQgb24gYW4gWFJTZXNzaW9uIHdo
ZW4gdGhlIHNlc3Npb27igJlzIGxpc3Qgb2YgYWN0aXZlIFhSIGlucHV0IHNvdXJjZXMgaGFzIGNo
YW5nZWQuCiAgICAgICAgIFhSSW5wdXRTb3VyY2VzQ2hhbmdlRXZlbnQ6OkluaXQgaW5pdDsKLSAg
ICAgICAgaW5pdC5zZXNzaW9uID0gbWFrZVJlZihtX3Nlc3Npb24pOworICAgICAgICBpbml0LnNl
c3Npb24gPSAmbV9zZXNzaW9uOwogICAgICAgICBpbml0LmFkZGVkID0gV1RGTW92ZShhZGRlZCk7
CiAgICAgICAgIGluaXQucmVtb3ZlZCA9IFdURk1vdmUocmVtb3ZlZCk7CiAgICAgICAgIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlN5c3RlbS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSU3lzdGVtLmNwcAppbmRleCAwNGVjYmVk
MjNkMmEzMjdkZmI3YmIyM2I5MzMxYTQ0ZjQ3ZDcyOGY5Li5lNDZkODczMTU4MmU5MTUzOTljYWE2
Yzg4MTBlYzhjM2MyZDY3NTAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YnhyL1dlYlhSU3lzdGVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dl
YlhSU3lzdGVtLmNwcApAQCAtNDA2LDcgKzQwNiw3IEBAIHZvaWQgV2ViWFJTeXN0ZW06OnJlcXVl
c3RTZXNzaW9uKERvY3VtZW50JiBkb2N1bWVudCwgWFJTZXNzaW9uTW9kZSBtb2RlLCBjb25zdCBY
CiAgICAgLy8gNS4yIExldCBvcHRpb25hbEZlYXR1cmVzIGJlIG9wdGlvbnMnIG9wdGlvbmFsRmVh
dHVyZXMuCiAgICAgLy8gNS4zIFNldCBkZXZpY2UgdG8gdGhlIHJlc3VsdCBvZiBvYnRhaW5pbmcg
dGhlIGN1cnJlbnQgZGV2aWNlIGZvciBtb2RlLCByZXF1aXJlZEZlYXR1cmVzLCBhbmQgb3B0aW9u
YWxGZWF0dXJlcy4KICAgICAvLyA1LjQgUXVldWUgYSB0YXNrIHRvIHBlcmZvcm0gdGhlIGZvbGxv
d2luZyBzdGVwczoKLSAgICBvYnRhaW5DdXJyZW50RGV2aWNlKG1vZGUsIGluaXQucmVxdWlyZWRG
ZWF0dXJlcywgaW5pdC5vcHRpb25hbEZlYXR1cmVzLCBbdGhpcywgcHJvdGVjdGVkRG9jdW1lbnQg
PSBtYWtlUmVmKGRvY3VtZW50KSwgaW1tZXJzaXZlLCBpbml0LCBtb2RlLCBwcm9taXNlID0gV1RG
TW92ZShwcm9taXNlKV0oYXV0byogZGV2aWNlKSBtdXRhYmxlIHsKKyAgICBvYnRhaW5DdXJyZW50
RGV2aWNlKG1vZGUsIGluaXQucmVxdWlyZWRGZWF0dXJlcywgaW5pdC5vcHRpb25hbEZlYXR1cmVz
LCBbdGhpcywgcHJvdGVjdGVkRG9jdW1lbnQgPSBSZWYgeyBkb2N1bWVudCB9LCBpbW1lcnNpdmUs
IGluaXQsIG1vZGUsIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpXShhdXRvKiBkZXZpY2UpIG11
dGFibGUgewogICAgICAgICBhdXRvIHJlamVjdFByb21pc2VXaXRoTm90U3VwcG9ydGVkRXJyb3Ig
PSBtYWtlU2NvcGVFeGl0KFsmXSgpIHsKICAgICAgICAgICAgIHByb21pc2UucmVqZWN0KEV4Y2Vw
dGlvbiB7IE5vdFN1cHBvcnRlZEVycm9yIH0pOwogICAgICAgICAgICAgbV9wZW5kaW5nSW1tZXJz
aXZlU2Vzc2lvbiA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BWE9iamVjdENhY2hlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhP
YmplY3RDYWNoZS5jcHAKaW5kZXggZGU3NDIzZmMwY2FmMmQzYzRlZjg3ODFmNzRmNDU0OTM2ZTI1
YTcxZi4uMGZjNjU4NThkMzJmNTE5Yzc3NjBhYjVkZTg1NmRhMTRmZThhNGU2MyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwCkBAIC03MTUsNyAr
NzE1LDcgQEAgQWNjZXNzaWJpbGl0eU9iamVjdCogQVhPYmplY3RDYWNoZTo6Z2V0T3JDcmVhdGUo
Tm9kZSogbm9kZSkKICAgICBpZiAoIWluQ2FudmFzU3VidHJlZSAmJiAhaXNIaWRkZW4gJiYgIWlu
c2lkZU1ldGVyRWxlbWVudCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBhdXRvIHBy
b3RlY3RlZE5vZGUgPSBtYWtlUmVmKCpub2RlKTsKKyAgICBSZWYgcHJvdGVjdGVkTm9kZSB7ICpu
b2RlIH07CiAKICAgICAvLyBGYWxsYmFjayBjb250ZW50IGlzIG9ubHkgZm9jdXNhYmxlIGFzIGxv
bmcgYXMgdGhlIGNhbnZhcyBpcyBkaXNwbGF5ZWQgYW5kIHZpc2libGUuCiAgICAgLy8gVXBkYXRl
IHRoZSBzdHlsZSBiZWZvcmUgRWxlbWVudDo6aXNGb2N1c2FibGUoKSBnZXRzIGNhbGxlZC4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9Eb2N1bWVudFRpbWVsaW5lc0NvbnRy
b2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0RvY3VtZW50VGltZWxpbmVzQ29u
dHJvbGxlci5jcHAKaW5kZXggZjkxNTBhMWFhYjcxYTdkOGUxOGQ2NWZhMGM3M2M0NmE1OGYzZWJm
Yi4uNzdiOWZiMmNhY2VkMjIwZGU0MTU1Njc5N2Y4NTcyYjBhNmNhOGQ4MyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0RvY3VtZW50VGltZWxpbmVzQ29udHJvbGxlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0RvY3VtZW50VGltZWxpbmVzQ29udHJvbGxl
ci5jcHAKQEAgLTEzMyw3ICsxMzMsNyBAQCB2b2lkIERvY3VtZW50VGltZWxpbmVzQ29udHJvbGxl
cjo6dXBkYXRlQW5pbWF0aW9uc0FuZFNlbmRFdmVudHMoUmVkdWNlZFJlc29sdXRpbwogICAgICAg
ICB0aW1lbGluZS0+cmVtb3ZlUmVwbGFjZWRBbmltYXRpb25zKCk7CiAKICAgICAvLyAzLiBQZXJm
b3JtIGEgbWljcm90YXNrIGNoZWNrcG9pbnQuCi0gICAgbWFrZVJlZihtX2RvY3VtZW50KS0+ZXZl
bnRMb29wKCkucGVyZm9ybU1pY3JvdGFza0NoZWNrcG9pbnQoKTsKKyAgICBSZWYgeyBtX2RvY3Vt
ZW50IH0tPmV2ZW50TG9vcCgpLnBlcmZvcm1NaWNyb3Rhc2tDaGVja3BvaW50KCk7CiAKICAgICAv
LyA0LiBMZXQgZXZlbnRzIHRvIGRpc3BhdGNoIGJlIGEgY29weSBvZiBkb2MncyBwZW5kaW5nIGFu
aW1hdGlvbiBldmVudCBxdWV1ZS4KICAgICAvLyA1LiBDbGVhciBkb2MncyBwZW5kaW5nIGFuaW1h
dGlvbiBldmVudCBxdWV1ZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRXZlbnRMaXN0ZW5lci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudExp
c3RlbmVyLmgKaW5kZXggODg0OWJkYmFhYWNhYmM5MDI3M2RjMDlmYjczZGNlMWU2MjA5M2E3Yi4u
MTYzY2I5MjJhNzY3YTQyZDI4YjVmNmVjZjkwMjc1OGJmOWNkYzdlZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudExpc3RlbmVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNFdmVudExpc3RlbmVyLmgKQEAgLTEwMiw3ICsxMDIsNyBAQCBp
bmxpbmUgSlNDOjpKU09iamVjdCogSlNFdmVudExpc3RlbmVyOjplbnN1cmVKU0Z1bmN0aW9uKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmCiAgICAgLy8gaW5pdGlhbGl6ZUpTRnVuY3Rpb24gY2FuIHRy
aWdnZXIgY29kZSB0aGF0IGRlbGV0ZXMgdGhpcyBldmVudCBsaXN0ZW5lcgogICAgIC8vIGJlZm9y
ZSB3ZSdyZSBkb25lLiBJdCBzaG91bGQgYWx3YXlzIHJldHVybiBudWxsIGluIHRoaXMgY2FzZS4K
ICAgICBKU0M6OlZNJiB2bSA9IG1faXNvbGF0ZWRXb3JsZC0+dm0oKTsKLSAgICBhdXRvIHByb3Rl
Y3QgPSBtYWtlUmVmKGNvbnN0X2Nhc3Q8SlNFdmVudExpc3RlbmVyJj4oKnRoaXMpKTsKKyAgICBS
ZWYgcHJvdGVjdCA9IGNvbnN0X2Nhc3Q8SlNFdmVudExpc3RlbmVyJj4oKnRoaXMpOwogICAgIEpT
Qzo6RW5zdXJlU3RpbGxBbGl2ZVNjb3BlIHByb3RlY3RlZFdyYXBwZXIobV93cmFwcGVyLmdldCgp
KTsKIAogICAgIGlmICghbV9pc0luaXRpYWxpemVkKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAppbmRleCA0NDcxZjZkMzU5
NjI3NzFlYzNjNTBjZWQ3MjUxMzk5MDMwMTk2YjcwLi5iYzAzODY5OTU2Mjc5N2FhMzg3OWIzMzQ3
YTBhM2E0ZjExNWY1M2M3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9T
ZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKQEAgLTEzNDcsNyArMTM0Nyw3IEBAIHByaXZhdGU6
CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgICAgICAgICAgICAgIHVp
bnQzMl90IGluZGV4ID0gbV93YXNtTW9kdWxlcy5zaXplKCk7IAotICAgICAgICAgICAgICAgIG1f
d2FzbU1vZHVsZXMuYXBwZW5kKG1ha2VSZWYobW9kdWxlLT5tb2R1bGUoKSkpOworICAgICAgICAg
ICAgICAgIG1fd2FzbU1vZHVsZXMuYXBwZW5kKCZtb2R1bGUtPm1vZHVsZSgpKTsKICAgICAgICAg
ICAgICAgICB3cml0ZShXYXNtTW9kdWxlVGFnKTsKICAgICAgICAgICAgICAgICB3cml0ZShpbmRl
eCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0xMzYyLDcgKzEzNjIsNyBAQCBw
cml2YXRlOgogICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICAgICAgdWludDMyX3QgaW5kZXggPSBtX3dhc21NZW1vcnlIYW5kbGVz
LnNpemUoKTsKLSAgICAgICAgICAgICAgICBtX3dhc21NZW1vcnlIYW5kbGVzLmFwcGVuZChtYWtl
UmVmKG1lbW9yeS0+bWVtb3J5KCkuaGFuZGxlKCkpKTsKKyAgICAgICAgICAgICAgICBtX3dhc21N
ZW1vcnlIYW5kbGVzLmFwcGVuZCgmbWVtb3J5LT5tZW1vcnkoKS5oYW5kbGUoKSk7CiAgICAgICAg
ICAgICAgICAgd3JpdGUoV2FzbU1lbW9yeVRhZyk7CiAgICAgICAgICAgICAgICAgd3JpdGUoaW5k
ZXgpOwogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvY3J5cHRvL1N1YnRsZUNyeXB0by5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vU3Vi
dGxlQ3J5cHRvLmNwcAppbmRleCBlOGM2MDJhN2E3ZTAyNzI1Njg3ZjJlNmE5ZThlZDFhYzQ3MTg2
M2FiLi5jYTM5NDNhM2M5NTM1MGE0MWQ3MzhjOGEyMWQ1MTE2OWVhNzQ4NzY5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vU3VidGxlQ3J5cHRvLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9jcnlwdG8vU3VidGxlQ3J5cHRvLmNwcApAQCAtMTAxNyw3ICsxMDE3LDcgQEAgdm9pZCBT
dWJ0bGVDcnlwdG86OndyYXBLZXkoSlNDOjpKU0dsb2JhbE9iamVjdCYgc3RhdGUsIEtleUZvcm1h
dCBmb3JtYXQsIENyeXB0b0sKICAgICBhdXRvIGluZGV4ID0gcHJvbWlzZS5wdHIoKTsKICAgICBt
X3BlbmRpbmdQcm9taXNlcy5hZGQoaW5kZXgsIFdURk1vdmUocHJvbWlzZSkpOwogICAgIGF1dG8g
c3VidGxlQ3J5cHRvV2Vha1BvaW50ZXIgPSBtYWtlV2Vha1B0cigqdGhpcyk7Ci0gICAgYXV0byBj
YWxsYmFjayA9IFtpbmRleCwgc3VidGxlQ3J5cHRvV2Vha1BvaW50ZXIsIHdyYXBBbGdvcml0aG0s
IHdyYXBwaW5nS2V5ID0gbWFrZVJlZih3cmFwcGluZ0tleSksIHdyYXBQYXJhbXMgPSBXVEZNb3Zl
KHdyYXBQYXJhbXMpLCBpc0VuY3J5cHRpb24sIGNvbnRleHQsIHdvcmtRdWV1ZSA9IG1fd29ya1F1
ZXVlXShTdWJ0bGVDcnlwdG86OktleUZvcm1hdCBmb3JtYXQsIEtleURhdGEmJiBrZXkpIG11dGFi
bGUgeworICAgIGF1dG8gY2FsbGJhY2sgPSBbaW5kZXgsIHN1YnRsZUNyeXB0b1dlYWtQb2ludGVy
LCB3cmFwQWxnb3JpdGhtLCB3cmFwcGluZ0tleSA9IFJlZiB7IHdyYXBwaW5nS2V5IH0sIHdyYXBQ
YXJhbXMgPSBXVEZNb3ZlKHdyYXBQYXJhbXMpLCBpc0VuY3J5cHRpb24sIGNvbnRleHQsIHdvcmtR
dWV1ZSA9IG1fd29ya1F1ZXVlXShTdWJ0bGVDcnlwdG86OktleUZvcm1hdCBmb3JtYXQsIEtleURh
dGEmJiBrZXkpIG11dGFibGUgewogICAgICAgICBpZiAoc3VidGxlQ3J5cHRvV2Vha1BvaW50ZXIp
IHsKICAgICAgICAgICAgIGlmIChhdXRvIHByb21pc2UgPSBzdWJ0bGVDcnlwdG9XZWFrUG9pbnRl
ci0+bV9wZW5kaW5nUHJvbWlzZXMuZ2V0KGluZGV4KSkgewogICAgICAgICAgICAgICAgIFZlY3Rv
cjx1aW50OF90PiBieXRlczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250
RmFjZVNldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTZXQuY3BwCmluZGV4
IGY4NzI2NjkwM2NkOWE0NDhjNjM5OTM1ZDNkZmMxYWE3NGU0OTE3MzkuLjE4YzJhZjhjZGYyMWFk
OGFjNmI5NmE0MGM0NjQ2MmUwYjhmMzFmMDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NGb250RmFjZVNldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNl
U2V0LmNwcApAQCAtMjUyLDcgKzI1Miw3IEBAIHZvaWQgQ1NTRm9udEZhY2VTZXQ6OnJlbW92ZUZy
b21GYWNlc0xvb2t1cFRhYmxlKGNvbnN0IENTU0ZvbnRGYWNlJiBmYWNlLCBjb25zdCBDCiAKIHZv
aWQgQ1NTRm9udEZhY2VTZXQ6OnJlbW92ZShjb25zdCBDU1NGb250RmFjZSYgZmFjZSkKIHsKLSAg
ICBhdXRvIHByb3RlY3QgPSBtYWtlUmVmKGZhY2UpOworICAgIFJlZiBwcm90ZWN0IHsgZmFjZSB9
OwogCiAgICAgbV9jYWNoZS5jbGVhcigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTRm9udFNlbGVjdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250U2VsZWN0
b3IuY3BwCmluZGV4IDRjOWYzMjViYWYxMDUzOTIwOTcxMzc2N2MyNjhjNzVlN2EzZTgxNWQuLjEy
ZTk0OGQ5Y2M3ZWM4MmIxYTEzYzgwMDYyZTM4MDYxNzBmNTM5ODcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NGb250U2VsZWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NGb250U2VsZWN0b3IuY3BwCkBAIC02NSw3ICs2NSw3IEBAIHN0YXRpYyB1bnNpZ25lZCBm
b250U2VsZWN0b3JJZDsKIENTU0ZvbnRTZWxlY3Rvcjo6Q1NTRm9udFNlbGVjdG9yKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpCiAgICAgOiBBY3RpdmVET01PYmplY3QoJmNvbnRleHQp
CiAgICAgLCBtX2NvbnRleHQobWFrZVdlYWtQdHIoY29udGV4dCkpCi0gICAgLCBtX2ZvbnRDYWNo
ZShtYWtlUmVmKGNvbnRleHQuZm9udENhY2hlKCkpKQorICAgICwgbV9mb250Q2FjaGUoY29udGV4
dC5mb250Q2FjaGUoKSkKICAgICAsIG1fY3NzRm9udEZhY2VTZXQoQ1NTRm9udEZhY2VTZXQ6OmNy
ZWF0ZSh0aGlzKSkKICAgICAsIG1fZm9udE1vZGlmaWVkT2JzZXJ2ZXIoW3RoaXNdIHsgZm9udE1v
ZGlmaWVkKCk7IH0pCiAgICAgLCBtX3VuaXF1ZUlkKCsrZm9udFNlbGVjdG9ySWQpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRE9NQ1NTUGFpbnRXb3JrbGV0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9ET01DU1NQYWludFdvcmtsZXQuY3BwCmluZGV4IDJmYTRlMjBiMDY3YzVhN2M4
ZWMwZWYyNjQ0M2NiZWYwNWEwYWNjYzMuLjAzZTJmYWIzNmUyOWIyMDU5NmY3Y2NhYTRhMTRlNDJk
Njc0MThlMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9ET01DU1NQYWludFdvcmts
ZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9ET01DU1NQYWludFdvcmtsZXQuY3BwCkBA
IC03OCw3ICs3OCw3IEBAIHZvaWQgUGFpbnRXb3JrbGV0OjphZGRNb2R1bGUoY29uc3QgU3RyaW5n
JiBtb2R1bGVVUkwsIFdvcmtsZXRPcHRpb25zJiYsIERPTVByb21pCiAKICAgICBMb2NrZXIgbG9j
a2VyIHsgY29udGV4dC0+cGFpbnREZWZpbml0aW9uTG9jaygpIH07CiAgICAgZm9yIChhdXRvJiBu
YW1lIDogY29udGV4dC0+cGFpbnREZWZpbml0aW9uTWFwKCkua2V5cygpKQotICAgICAgICBkb2N1
bWVudC0+c2V0UGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVGb3JOYW1lKG5hbWUsIG1ha2VSZWYoY29u
dGV4dC5nZXQoKSkpOworICAgICAgICBkb2N1bWVudC0+c2V0UGFpbnRXb3JrbGV0R2xvYmFsU2Nv
cGVGb3JOYW1lKG5hbWUsIGNvbnRleHQuY29weVJlZigpKTsKICAgICBwcm9taXNlLnJlc29sdmUo
KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL3R5cGVkb20vQ1NTTnVtZXJp
Y1ZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy90eXBlZG9tL0NTU051bWVyaWNWYWx1ZS5j
cHAKaW5kZXggMjM3ODM1Yzg2ZTMwNTAwNjBlZTAzMGQxMTM3YzY2N2UxNGVhMDMzZC4uOWMwYzFj
NzI1NDhhZDU3OGFmOWI5Mzg4NzE1MjliZjEyNTE1Y2Y0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3NzL3R5cGVkb20vQ1NTTnVtZXJpY1ZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvdHlwZWRvbS9DU1NOdW1lcmljVmFsdWUuY3BwCkBAIC00OSw3ICs0OSw3IEBAIFJlZjxD
U1NOdW1lcmljVmFsdWU+IENTU051bWVyaWNWYWx1ZTo6YWRkKFZlY3RvcjxDU1NOdW1iZXJpc2g+
JiYgdmFsdWVzKQogICAgIFVOVVNFRF9QQVJBTSh2YWx1ZXMpOwogICAgIC8vIEZJWE1FOiBhZGQg
aW1wbC4KIAotICAgIHJldHVybiBtYWtlUmVmKCp0aGlzKTsKKyAgICByZXR1cm4gKnRoaXM7CiB9
CiAKIFJlZjxDU1NOdW1lcmljVmFsdWU+IENTU051bWVyaWNWYWx1ZTo6c3ViKFZlY3RvcjxDU1NO
dW1iZXJpc2g+JiYgdmFsdWVzKQpAQCAtNTcsNyArNTcsNyBAQCBSZWY8Q1NTTnVtZXJpY1ZhbHVl
PiBDU1NOdW1lcmljVmFsdWU6OnN1YihWZWN0b3I8Q1NTTnVtYmVyaXNoPiYmIHZhbHVlcykKICAg
ICBVTlVTRURfUEFSQU0odmFsdWVzKTsKICAgICAvLyBGSVhNRTogYWRkIGltcGwuCiAKLSAgICBy
ZXR1cm4gbWFrZVJlZigqdGhpcyk7CisgICAgcmV0dXJuICp0aGlzOwogfQogCiBSZWY8Q1NTTnVt
ZXJpY1ZhbHVlPiBDU1NOdW1lcmljVmFsdWU6Om11bChWZWN0b3I8Q1NTTnVtYmVyaXNoPiYmIHZh
bHVlcykKQEAgLTY1LDcgKzY1LDcgQEAgUmVmPENTU051bWVyaWNWYWx1ZT4gQ1NTTnVtZXJpY1Zh
bHVlOjptdWwoVmVjdG9yPENTU051bWJlcmlzaD4mJiB2YWx1ZXMpCiAgICAgVU5VU0VEX1BBUkFN
KHZhbHVlcyk7CiAgICAgLy8gRklYTUU6IGFkZCBpbXBsLgogCi0gICAgcmV0dXJuIG1ha2VSZWYo
KnRoaXMpOworICAgIHJldHVybiAqdGhpczsKIH0KIAogUmVmPENTU051bWVyaWNWYWx1ZT4gQ1NT
TnVtZXJpY1ZhbHVlOjpkaXYoVmVjdG9yPENTU051bWJlcmlzaD4mJiB2YWx1ZXMpCkBAIC03Mywy
MSArNzMsMjEgQEAgUmVmPENTU051bWVyaWNWYWx1ZT4gQ1NTTnVtZXJpY1ZhbHVlOjpkaXYoVmVj
dG9yPENTU051bWJlcmlzaD4mJiB2YWx1ZXMpCiAgICAgVU5VU0VEX1BBUkFNKHZhbHVlcyk7CiAg
ICAgLy8gRklYTUU6IGFkZCBpbXBsLgogCi0gICAgcmV0dXJuIG1ha2VSZWYoKnRoaXMpOworICAg
IHJldHVybiAqdGhpczsKIH0KIFJlZjxDU1NOdW1lcmljVmFsdWU+IENTU051bWVyaWNWYWx1ZTo6
bWluKFZlY3RvcjxDU1NOdW1iZXJpc2g+JiYgdmFsdWVzKQogewogICAgIFVOVVNFRF9QQVJBTSh2
YWx1ZXMpOwogICAgIC8vIEZJWE1FOiBhZGQgaW1wbC4KIAotICAgIHJldHVybiBtYWtlUmVmKCp0
aGlzKTsKKyAgICByZXR1cm4gKnRoaXM7CiB9CiBSZWY8Q1NTTnVtZXJpY1ZhbHVlPiBDU1NOdW1l
cmljVmFsdWU6Om1heChWZWN0b3I8Q1NTTnVtYmVyaXNoPiYmIHZhbHVlcykKIHsKICAgICBVTlVT
RURfUEFSQU0odmFsdWVzKTsKICAgICAvLyBGSVhNRTogYWRkIGltcGwuCiAKLSAgICByZXR1cm4g
bWFrZVJlZigqdGhpcyk7CisgICAgcmV0dXJuICp0aGlzOwogfQogCiBSZWY8Q1NTTnVtZXJpY1Zh
bHVlPiBDU1NOdW1lcmljVmFsdWU6OnJlY3RpZnlOdW1iZXJpc2goQ1NTTnVtYmVyaXNoJiYgbnVt
YmVyaXNoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL3R5cGVkb20vQ1NTU3R5bGVW
YWx1ZUZhY3RvcnkuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL3R5cGVkb20vQ1NTU3R5bGVWYWx1
ZUZhY3RvcnkuY3BwCmluZGV4IGYxZGE3NDM5MDRlNGQyNTEzMTZlMTYzZTljYTliODFiMGE0ZGQ4
ZjkuLmIxZDM0Zjc4ZGU5ZThiMjdjNTRkMmQ1MWViMmMyMGYxODA4YTMxOGQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy90eXBlZG9tL0NTU1N0eWxlVmFsdWVGYWN0b3J5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvdHlwZWRvbS9DU1NTdHlsZVZhbHVlRmFjdG9yeS5jcHAKQEAg
LTIzMCw3ICsyMzAsNyBAQCBFeGNlcHRpb25PcjxSZWY8Q1NTU3R5bGVWYWx1ZT4+IENTU1N0eWxl
VmFsdWVGYWN0b3J5OjpyZWlmeVZhbHVlKFJlZjxDU1NWYWx1ZT4mJgogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KICAgICB9IGVsc2UgaWYgKGlzPENTU0ltYWdlVmFsdWU+KGNzc1ZhbHVl
LmdldCgpKSkKLSAgICAgICAgcmV0dXJuIFJlZjxDU1NTdHlsZVZhbHVlPiB7IENTU1N0eWxlSW1h
Z2VWYWx1ZTo6Y3JlYXRlKG1ha2VSZWYoZG93bmNhc3Q8Q1NTSW1hZ2VWYWx1ZT4oY3NzVmFsdWUu
Z2V0KCkpKSwgZG9jdW1lbnQpIH07CisgICAgICAgIHJldHVybiBSZWY8Q1NTU3R5bGVWYWx1ZT4g
eyBDU1NTdHlsZUltYWdlVmFsdWU6OmNyZWF0ZShkb3duY2FzdDxDU1NJbWFnZVZhbHVlPihjc3NW
YWx1ZS5nZXQoKSksIGRvY3VtZW50KSB9OwogICAgIGVsc2UgaWYgKGlzPENTU1ZhcmlhYmxlUmVm
ZXJlbmNlVmFsdWU+KGNzc1ZhbHVlLmdldCgpKSkgewogICAgICAgICByZXR1cm4gUmVmPENTU1N0
eWxlVmFsdWU+IHsgQ1NTVW5wYXJzZWRWYWx1ZTo6Y3JlYXRlKGRvd25jYXN0PENTU1ZhcmlhYmxl
UmVmZXJlbmNlVmFsdWU+KGNzc1ZhbHVlLmdldCgpKS5kYXRhKCkudG9rZW5SYW5nZSgpKSB9Owog
ICAgIH0gZWxzZSBpZiAoaXM8Q1NTUGVuZGluZ1N1YnN0aXR1dGlvblZhbHVlPihjc3NWYWx1ZS5n
ZXQoKSkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy90eXBlZG9tL1N0eWxlUHJv
cGVydHlNYXBSZWFkT25seS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvdHlwZWRvbS9TdHlsZVBy
b3BlcnR5TWFwUmVhZE9ubHkuY3BwCmluZGV4IDM1ZGYwNTM4NDYwZDZmM2IwNTIyNGRkMTM3MWMw
Zjc4ZGY3NDJiMjMuLjk2OTk1MGZkMTFiMzE3NWJjZTM3YzNhNDk4MTEwMzgwZGE5ODQ4ZmUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy90eXBlZG9tL1N0eWxlUHJvcGVydHlNYXBSZWFk
T25seS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL3R5cGVkb20vU3R5bGVQcm9wZXJ0eU1h
cFJlYWRPbmx5LmNwcApAQCAtNDcsNyArNDcsNyBAQCBSZWZQdHI8Q1NTU3R5bGVWYWx1ZT4gU3R5
bGVQcm9wZXJ0eU1hcFJlYWRPbmx5OjpyZWlmeVZhbHVlKENTU1ZhbHVlKiB2YWx1ZSwgRG9jdQog
ewogICAgIGlmICghdmFsdWUpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIGF1dG8gcmVz
dWx0ID0gQ1NTU3R5bGVWYWx1ZUZhY3Rvcnk6OnJlaWZ5VmFsdWUobWFrZVJlZigqdmFsdWUpLCAm
ZG9jdW1lbnQpOworICAgIGF1dG8gcmVzdWx0ID0gQ1NTU3R5bGVWYWx1ZUZhY3Rvcnk6OnJlaWZ5
VmFsdWUoKnZhbHVlLCAmZG9jdW1lbnQpOwogICAgIHJldHVybiAocmVzdWx0Lmhhc0V4Y2VwdGlv
bigpID8gbnVsbHB0ciA6IFJlZlB0cjxDU1NTdHlsZVZhbHVlPiB7IHJlc3VsdC5yZWxlYXNlUmV0
dXJuVmFsdWUoKSB9KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0FjdGl2
ZURPTU9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQWN0aXZlRE9NT2JqZWN0LmNwcApp
bmRleCAxNmRmZDU2ODg5N2Q0MGNkYzVhZDM1ZWI2NTk1MjA4YWVkZGVhZDZkLi5jNzliNjIxYjRm
NWYxNWRhMzg5MWMyZmI4NDg3ZTg3NzAwYTkyN2UwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vQWN0aXZlRE9NT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQWN0aXZl
RE9NT2JqZWN0LmNwcApAQCAtMTcyLDcgKzE3Miw3IEBAIHZvaWQgQWN0aXZlRE9NT2JqZWN0Ojpx
dWV1ZVRhc2tUb0Rpc3BhdGNoRXZlbnRJbnRlcm5hbChFdmVudFRhcmdldCYgdGFyZ2V0LCBUYXNr
CiAgICAgaWYgKCFjb250ZXh0KQogICAgICAgICByZXR1cm47CiAgICAgYXV0byYgZXZlbnRMb29w
VGFza0dyb3VwID0gY29udGV4dC0+ZXZlbnRMb29wKCk7Ci0gICAgYXV0byB0YXNrID0gbWFrZVVu
aXF1ZTxBY3RpdmVET01PYmplY3RFdmVudERpc3BhdGNoVGFzaz4oc291cmNlLCBldmVudExvb3BU
YXNrR3JvdXAsICp0aGlzLCBbdGFyZ2V0ID0gbWFrZVJlZih0YXJnZXQpLCBldmVudCA9IFdURk1v
dmUoZXZlbnQpXSB7CisgICAgYXV0byB0YXNrID0gbWFrZVVuaXF1ZTxBY3RpdmVET01PYmplY3RF
dmVudERpc3BhdGNoVGFzaz4oc291cmNlLCBldmVudExvb3BUYXNrR3JvdXAsICp0aGlzLCBbdGFy
Z2V0ID0gUmVmIHsgdGFyZ2V0IH0sIGV2ZW50ID0gV1RGTW92ZShldmVudCldIHsKICAgICAgICAg
dGFyZ2V0LT5kaXNwYXRjaEV2ZW50KGV2ZW50KTsKICAgICB9KTsKICAgICBldmVudExvb3BUYXNr
R3JvdXAucXVldWVUYXNrKFdURk1vdmUodGFzaykpOwpAQCAtMTg1LDcgKzE4NSw3IEBAIHZvaWQg
QWN0aXZlRE9NT2JqZWN0OjpxdWV1ZUNhbmNlbGxhYmxlVGFza1RvRGlzcGF0Y2hFdmVudEludGVy
bmFsKEV2ZW50VGFyZ2V0JiB0CiAgICAgaWYgKCFjb250ZXh0KQogICAgICAgICByZXR1cm47CiAg
ICAgYXV0byYgZXZlbnRMb29wVGFza0dyb3VwID0gY29udGV4dC0+ZXZlbnRMb29wKCk7Ci0gICAg
YXV0byB0YXNrID0gbWFrZVVuaXF1ZTxBY3RpdmVET01PYmplY3RFdmVudERpc3BhdGNoVGFzaz4o
c291cmNlLCBldmVudExvb3BUYXNrR3JvdXAsICp0aGlzLCBDYW5jZWxsYWJsZVRhc2soY2FuY2Vs
bGF0aW9uR3JvdXAsIFt0YXJnZXQgPSBtYWtlUmVmKHRhcmdldCksIGV2ZW50ID0gV1RGTW92ZShl
dmVudCldIHsKKyAgICBhdXRvIHRhc2sgPSBtYWtlVW5pcXVlPEFjdGl2ZURPTU9iamVjdEV2ZW50
RGlzcGF0Y2hUYXNrPihzb3VyY2UsIGV2ZW50TG9vcFRhc2tHcm91cCwgKnRoaXMsIENhbmNlbGxh
YmxlVGFzayhjYW5jZWxsYXRpb25Hcm91cCwgW3RhcmdldCA9IFJlZiB7IHRhcmdldCB9LCBldmVu
dCA9IFdURk1vdmUoZXZlbnQpXSB7CiAgICAgICAgIHRhcmdldC0+ZGlzcGF0Y2hFdmVudChldmVu
dCk7CiAgICAgfSkpOwogICAgIGV2ZW50TG9vcFRhc2tHcm91cC5xdWV1ZVRhc2soV1RGTW92ZSh0
YXNrKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQWN0aXZlRE9NT2JqZWN0Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vQWN0aXZlRE9NT2JqZWN0LmgKaW5kZXggNjU3OGI2NDA5ZDM0
OTczN2Y0NmEyNzVhMmQ4OTU5Nzc3Zjk5NGMxNi4uMGU3OTRhMmEwNjA5ZWIyZWJlMzFlM2U2Mzkw
NTI2NWQyYzgzYTRjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0FjdGl2ZURPTU9i
amVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9BY3RpdmVET01PYmplY3QuaApAQCAtMTA2
LDcgKzEwNiw3IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogICAgIHN0YXRp
YyB2b2lkIHF1ZXVlVGFza0tlZXBpbmdPYmplY3RBbGl2ZShUJiBvYmplY3QsIFRhc2tTb3VyY2Ug
c291cmNlLCBGdW5jdGlvbjx2b2lkICgpPiYmIHRhc2spCiAgICAgewotICAgICAgICBvYmplY3Qu
cXVldWVUYXNrSW5FdmVudExvb3Aoc291cmNlLCBbcHJvdGVjdGVkT2JqZWN0ID0gbWFrZVJlZihv
YmplY3QpLCBhY3Rpdml0eSA9IG9iamVjdC5BY3RpdmVET01PYmplY3Q6Om1ha2VQZW5kaW5nQWN0
aXZpdHkob2JqZWN0KSwgdGFzayA9IFdURk1vdmUodGFzayldICgpIHsKKyAgICAgICAgb2JqZWN0
LnF1ZXVlVGFza0luRXZlbnRMb29wKHNvdXJjZSwgW3Byb3RlY3RlZE9iamVjdCA9IFJlZiB7IG9i
amVjdCB9LCBhY3Rpdml0eSA9IG9iamVjdC5BY3RpdmVET01PYmplY3Q6Om1ha2VQZW5kaW5nQWN0
aXZpdHkob2JqZWN0KSwgdGFzayA9IFdURk1vdmUodGFzayldICgpIHsKICAgICAgICAgICAgIHRh
c2soKTsKICAgICAgICAgfSk7CiAgICAgfQpAQCAtMTE1LDcgKzExNSw3IEBAIHB1YmxpYzoKICAg
ICBzdGF0aWMgdm9pZCBxdWV1ZUNhbmNlbGxhYmxlVGFza0tlZXBpbmdPYmplY3RBbGl2ZShUJiBv
YmplY3QsIFRhc2tTb3VyY2Ugc291cmNlLCBUYXNrQ2FuY2VsbGF0aW9uR3JvdXAmIGNhbmNlbGxh
dGlvbkdyb3VwLCBGdW5jdGlvbjx2b2lkKCk+JiYgdGFzaykKICAgICB7CiAgICAgICAgIENhbmNl
bGxhYmxlVGFzayBjYW5jZWxsYWJsZVRhc2soY2FuY2VsbGF0aW9uR3JvdXAsIFdURk1vdmUodGFz
aykpOwotICAgICAgICBvYmplY3QucXVldWVUYXNrSW5FdmVudExvb3Aoc291cmNlLCBbcHJvdGVj
dGVkT2JqZWN0ID0gbWFrZVJlZihvYmplY3QpLCBhY3Rpdml0eSA9IG9iamVjdC5BY3RpdmVET01P
YmplY3Q6Om1ha2VQZW5kaW5nQWN0aXZpdHkob2JqZWN0KSwgY2FuY2VsbGFibGVUYXNrID0gV1RG
TW92ZShjYW5jZWxsYWJsZVRhc2spXSgpIG11dGFibGUgeworICAgICAgICBvYmplY3QucXVldWVU
YXNrSW5FdmVudExvb3Aoc291cmNlLCBbcHJvdGVjdGVkT2JqZWN0ID0gUmVmIHsgb2JqZWN0IH0s
IGFjdGl2aXR5ID0gb2JqZWN0LkFjdGl2ZURPTU9iamVjdDo6bWFrZVBlbmRpbmdBY3Rpdml0eShv
YmplY3QpLCBjYW5jZWxsYWJsZVRhc2sgPSBXVEZNb3ZlKGNhbmNlbGxhYmxlVGFzayldKCkgbXV0
YWJsZSB7CiAgICAgICAgICAgICBjYW5jZWxsYWJsZVRhc2soKTsKICAgICAgICAgfSk7CiAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RldmljZU9yaWVudGF0aW9uQW5kTW90
aW9uQWNjZXNzQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRGV2aWNlT3JpZW50
YXRpb25BbmRNb3Rpb25BY2Nlc3NDb250cm9sbGVyLmNwcAppbmRleCBlNzUyNTFlMTIzNWYxMDhi
ZDJjYTQ3YzdhMTY2Nzk1ZWE3YTdiM2Q2Li5lYmZhMzJmYmRkM2U4Yzg4MThjMDU0M2EyNjY3YmZm
YTQ2MmM2ZGQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRGV2aWNlT3JpZW50YXRp
b25BbmRNb3Rpb25BY2Nlc3NDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RGV2aWNlT3JpZW50YXRpb25BbmRNb3Rpb25BY2Nlc3NDb250cm9sbGVyLmNwcApAQCAtNzIsNyAr
NzIsNyBAQCB2b2lkIERldmljZU9yaWVudGF0aW9uQW5kTW90aW9uQWNjZXNzQ29udHJvbGxlcjo6
c2hvdWxkQWxsb3dBY2Nlc3MoY29uc3QgRG9jdW1lbgogICAgICAgICByZXR1cm4gY2FsbGJhY2so
YWNjZXNzU3RhdGUpOwogCiAgICAgYm9vbCBtYXlQcm9tcHQgPSBVc2VyR2VzdHVyZUluZGljYXRv
cjo6cHJvY2Vzc2luZ1VzZXJHZXN0dXJlKCZkb2N1bWVudCk7Ci0gICAgcGFnZS0+Y2hyb21lKCku
Y2xpZW50KCkuc2hvdWxkQWxsb3dEZXZpY2VPcmllbnRhdGlvbkFuZE1vdGlvbkFjY2VzcygqZG9j
dW1lbnQuZnJhbWUoKSwgbWF5UHJvbXB0LCBbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0
aGlzKSwgc2VjdXJpdHlPcmlnaW4gPSBtYWtlUmVmKGRvY3VtZW50LnNlY3VyaXR5T3JpZ2luKCkp
LCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShEZXZpY2VPcmllbnRhdGlvbk9yTW90aW9u
UGVybWlzc2lvblN0YXRlIHBlcm1pc3Npb25TdGF0ZSkgbXV0YWJsZSB7CisgICAgcGFnZS0+Y2hy
b21lKCkuY2xpZW50KCkuc2hvdWxkQWxsb3dEZXZpY2VPcmllbnRhdGlvbkFuZE1vdGlvbkFjY2Vz
cygqZG9jdW1lbnQuZnJhbWUoKSwgbWF5UHJvbXB0LCBbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vh
a1B0cih0aGlzKSwgc2VjdXJpdHlPcmlnaW4gPSBSZWYgeyBkb2N1bWVudC5zZWN1cml0eU9yaWdp
bigpIH0sIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKERldmljZU9yaWVudGF0aW9uT3JN
b3Rpb25QZXJtaXNzaW9uU3RhdGUgcGVybWlzc2lvblN0YXRlKSBtdXRhYmxlIHsKICAgICAgICAg
aWYgKCF3ZWFrVGhpcykKICAgICAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5j
cHAKaW5kZXggNmJjYjcwYmMzZTdhY2Y2ODY0ZjRhZGRhNjcwYmJmMzlkZjE5Y2I5My4uMDU4MTJj
MzYxNTkyOWM5MGI2NDFjODIwYzc5MzkxMmMwY2MwNjY2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQu
Y3BwCkBAIC0xOTA3LDcgKzE5MDcsNyBAQCB2b2lkIERvY3VtZW50Ojpmb3JFYWNoTWVkaWFFbGVt
ZW50KGNvbnN0IEZ1bmN0aW9uPHZvaWQoSFRNTE1lZGlhRWxlbWVudCYpPiYgZnVuYwogewogICAg
IEFTU0VSVCghbV9tZWRpYUVsZW1lbnRzLmhhc051bGxSZWZlcmVuY2VzKCkpOwogICAgIG1fbWVk
aWFFbGVtZW50cy5mb3JFYWNoKFsmXShhdXRvJiBlbGVtZW50KSB7Ci0gICAgICAgIGZ1bmN0aW9u
KG1ha2VSZWYoZWxlbWVudCkpOworICAgICAgICBmdW5jdGlvbihSZWYgeyBlbGVtZW50IH0pOwog
ICAgIH0pOwogfQogCkBAIC01NzkzLDcgKzU3OTMsNyBAQCBib29sIERvY3VtZW50OjpzaG91bGRD
cmVhdGVSZW5kZXJlcnMoKQogCiBzdGF0aWMgRWRpdG9yOjpDb21tYW5kIGNvbW1hbmQoRG9jdW1l
bnQqIGRvY3VtZW50LCBjb25zdCBTdHJpbmcmIGNvbW1hbmROYW1lLCBib29sIHVzZXJJbnRlcmZh
Y2UgPSBmYWxzZSkKIHsKLSAgICBhdXRvIHByb3RlY3RlZERvY3VtZW50ID0gbWFrZVJlZigqZG9j
dW1lbnQpOworICAgIFJlZiBwcm90ZWN0ZWREb2N1bWVudCB7ICpkb2N1bWVudCB9OwogCiAgICAg
ZG9jdW1lbnQtPnVwZGF0ZVN0eWxlSWZOZWVkZWQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCmlu
ZGV4IDI3MzE3M2YwZWY0MjNhY2YwMjA4MWY3ODQ2MmYwZWM4NzQzMTZkNzEuLjNlNmY3NGIzMTBk
YTJhNzlhNzI4N2M4ZTBjMmFkZWE3NzYzYzU3NGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKQEAg
LTMwNjMsNyArMzA2Myw3IEBAIHZvaWQgRWxlbWVudDo6Zm9jdXMoY29uc3QgRm9jdXNPcHRpb25z
JiBvcHRpb25zKQogICAgIGlmICghaXNDb25uZWN0ZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgYXV0byBkb2N1bWVudCA9IG1ha2VSZWYodGhpcy0+ZG9jdW1lbnQoKSk7CisgICAgUmVmIGRv
Y3VtZW50IHsgdGhpcy0+ZG9jdW1lbnQoKSB9OwogICAgIGlmIChkb2N1bWVudC0+Zm9jdXNlZEVs
ZW1lbnQoKSA9PSB0aGlzKSB7CiAgICAgICAgIGlmIChkb2N1bWVudC0+cGFnZSgpKQogICAgICAg
ICAgICAgZG9jdW1lbnQtPnBhZ2UoKS0+Y2hyb21lKCkuY2xpZW50KCkuZWxlbWVudERpZFJlZm9j
dXMoKnRoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0lkbGVDYWxsYmFja0Nv
bnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0lkbGVDYWxsYmFja0NvbnRyb2xsZXIu
Y3BwCmluZGV4IGM2OTIxZGE2OGMwMDY2N2JhZTg0MmRiZjBhNTE2YjQ0OGVkZmI3NWIuLjc4ODI1
NGQxZDg5YTFiMTk4ZDk0ODQzM2ZlNTE4NDdmMGZhZjk2YzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9JZGxlQ2FsbGJhY2tDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vSWRsZUNhbGxiYWNrQ29udHJvbGxlci5jcHAKQEAgLTcxLDcgKzcxLDcgQEAgdm9pZCBJ
ZGxlQ2FsbGJhY2tDb250cm9sbGVyOjpyZW1vdmVJZGxlQ2FsbGJhY2soaW50IHNpZ25lZElkZW50
aWZpZXIpCiAKIHZvaWQgSWRsZUNhbGxiYWNrQ29udHJvbGxlcjo6cXVldWVUYXNrVG9TdGFydElk
bGVQZXJpb2QoKQogewotICAgIG1fZG9jdW1lbnQtPmV2ZW50TG9vcCgpLnF1ZXVlVGFzayhUYXNr
U291cmNlOjpJZGxlVGFzaywgW3Byb3RlY3RlZERvY3VtZW50ID0gbWFrZVJlZigqbV9kb2N1bWVu
dCksIHRoaXNdIHsKKyAgICBtX2RvY3VtZW50LT5ldmVudExvb3AoKS5xdWV1ZVRhc2soVGFza1Nv
dXJjZTo6SWRsZVRhc2ssIFtwcm90ZWN0ZWREb2N1bWVudCA9IFJlZiB7ICptX2RvY3VtZW50IH0s
IHRoaXNdIHsKICAgICAgICAgUkVMRUFTRV9BU1NFUlQocHJvdGVjdGVkRG9jdW1lbnQtPmlkbGVD
YWxsYmFja0NvbnRyb2xsZXIoKSA9PSB0aGlzKTsKICAgICAgICAgc3RhcnRJZGxlUGVyaW9kKCk7
CiAgICAgfSk7CkBAIC0xMDAsNyArMTAwLDcgQEAgdm9pZCBJZGxlQ2FsbGJhY2tDb250cm9sbGVy
OjpzdGFydElkbGVQZXJpb2QoKQogCiB2b2lkIElkbGVDYWxsYmFja0NvbnRyb2xsZXI6OnF1ZXVl
VGFza1RvSW52b2tlSWRsZUNhbGxiYWNrcyhNb25vdG9uaWNUaW1lIGRlYWRsaW5lKQogewotICAg
IG1fZG9jdW1lbnQtPmV2ZW50TG9vcCgpLnF1ZXVlVGFzayhUYXNrU291cmNlOjpJZGxlVGFzaywg
W3Byb3RlY3RlZERvY3VtZW50ID0gbWFrZVJlZigqbV9kb2N1bWVudCksIGRlYWRsaW5lLCB0aGlz
XSB7CisgICAgbV9kb2N1bWVudC0+ZXZlbnRMb29wKCkucXVldWVUYXNrKFRhc2tTb3VyY2U6Oklk
bGVUYXNrLCBbcHJvdGVjdGVkRG9jdW1lbnQgPSBSZWYgeyAqbV9kb2N1bWVudCB9LCBkZWFkbGlu
ZSwgdGhpc10gewogICAgICAgICBSRUxFQVNFX0FTU0VSVChwcm90ZWN0ZWREb2N1bWVudC0+aWRs
ZUNhbGxiYWNrQ29udHJvbGxlcigpID09IHRoaXMpOwogICAgICAgICBpbnZva2VJZGxlQ2FsbGJh
Y2tzKGRlYWRsaW5lKTsKICAgICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9N
aWNyb3Rhc2tzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NaWNyb3Rhc2tzLmNwcAppbmRleCA0
MjJjN2FmZThiNTFkYTRiMGZmMTI4YzZhMGJiZjA5Mjg5MzMyYzY1Li41MWEwNzE2MWZkNzY1NWE5
NTE2ZmZjZmY1OWIzZDRkOWQ3YzEwMTJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
TWljcm90YXNrcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL01pY3JvdGFza3MuY3BwCkBA
IC0zMiw3ICszMiw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIE1pY3JvdGFza1F1ZXVlOjpN
aWNyb3Rhc2tRdWV1ZShKU0M6OlZNJiB2bSkKLSAgICA6IG1fdm0obWFrZVJlZih2bSkpCisgICAg
OiBtX3ZtKHZtKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRp
b25PYnNlcnZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25PYnNlcnZlci5jcHAK
aW5kZXggZmRmNjFlM2I4MTgzZmEyOWQ3MGVjMzliYmUzZjdmMmZhNzc5MWRjOS4uNDc2ZjhkYWI5
YjY1MTYxODg5ZWY5ZTgwYmI0NThjYjY2ZGVmNGRiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL011dGF0aW9uT2JzZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRh
dGlvbk9ic2VydmVyLmNwcApAQCAtMTQzLDEyICsxNDMsMTIgQEAgdm9pZCBNdXRhdGlvbk9ic2Vy
dmVyOjplbnF1ZXVlTXV0YXRpb25SZWNvcmQoUmVmPE11dGF0aW9uUmVjb3JkPiYmIG11dGF0aW9u
KQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgQVNTRVJUKG11dGF0aW9uLT50
YXJnZXQoKSk7Ci0gICAgYXV0byBkb2N1bWVudCA9IG1ha2VSZWYobXV0YXRpb24tPnRhcmdldCgp
LT5kb2N1bWVudCgpKTsKKyAgICBSZWYgZG9jdW1lbnQgPSBtdXRhdGlvbi0+dGFyZ2V0KCktPmRv
Y3VtZW50KCk7CiAKICAgICBtX3BlbmRpbmdUYXJnZXRzLmFkZCgqbXV0YXRpb24tPnRhcmdldCgp
KTsKICAgICBtX3JlY29yZHMuYXBwZW5kKFdURk1vdmUobXV0YXRpb24pKTsKIAotICAgIGF1dG8g
ZXZlbnRMb29wID0gbWFrZVJlZihkb2N1bWVudC0+d2luZG93RXZlbnRMb29wKCkpOworICAgIFJl
ZiBldmVudExvb3AgPSBkb2N1bWVudC0+d2luZG93RXZlbnRMb29wKCk7CiAgICAgZXZlbnRMb29w
LT5hY3RpdmVNdXRhdGlvbk9ic2VydmVycygpLmFkZCh0aGlzKTsKICAgICBldmVudExvb3AtPnF1
ZXVlTXV0YXRpb25PYnNlcnZlckNvbXBvdW5kTWljcm90YXNrKCk7CiB9CkBAIC0xNTYsNyArMTU2
LDcgQEAgdm9pZCBNdXRhdGlvbk9ic2VydmVyOjplbnF1ZXVlTXV0YXRpb25SZWNvcmQoUmVmPE11
dGF0aW9uUmVjb3JkPiYmIG11dGF0aW9uKQogdm9pZCBNdXRhdGlvbk9ic2VydmVyOjplbnF1ZXVl
U2xvdENoYW5nZUV2ZW50KEhUTUxTbG90RWxlbWVudCYgc2xvdCkKIHsKICAgICBBU1NFUlQoaXNN
YWluVGhyZWFkKCkpOwotICAgIGF1dG8gZXZlbnRMb29wID0gbWFrZVJlZihzbG90LmRvY3VtZW50
KCkud2luZG93RXZlbnRMb29wKCkpOworICAgIFJlZiBldmVudExvb3AgPSBzbG90LmRvY3VtZW50
KCkud2luZG93RXZlbnRMb29wKCk7CiAgICAgYXV0byYgbGlzdCA9IGV2ZW50TG9vcC0+c2lnbmFs
U2xvdExpc3QoKTsKICAgICBBU1NFUlQobGlzdC5maW5kTWF0Y2hpbmcoWyZzbG90XShhdXRvJiBl
bnRyeSkgeyByZXR1cm4gZW50cnkucHRyKCkgPT0gJnNsb3Q7IH0pID09IG5vdEZvdW5kKTsKICAg
ICBsaXN0LmFwcGVuZChzbG90KTsKQEAgLTE2Niw3ICsxNjYsNyBAQCB2b2lkIE11dGF0aW9uT2Jz
ZXJ2ZXI6OmVucXVldWVTbG90Q2hhbmdlRXZlbnQoSFRNTFNsb3RFbGVtZW50JiBzbG90KQogCiB2
b2lkIE11dGF0aW9uT2JzZXJ2ZXI6OnNldEhhc1RyYW5zaWVudFJlZ2lzdHJhdGlvbihEb2N1bWVu
dCYgZG9jdW1lbnQpCiB7Ci0gICAgYXV0byBldmVudExvb3AgPSBtYWtlUmVmKGRvY3VtZW50Lndp
bmRvd0V2ZW50TG9vcCgpKTsKKyAgICBSZWYgZXZlbnRMb29wID0gZG9jdW1lbnQud2luZG93RXZl
bnRMb29wKCk7CiAgICAgZXZlbnRMb29wLT5hY3RpdmVNdXRhdGlvbk9ic2VydmVycygpLmFkZCh0
aGlzKTsKICAgICBldmVudExvb3AtPnF1ZXVlTXV0YXRpb25PYnNlcnZlckNvbXBvdW5kTWljcm90
YXNrKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RWxlbWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RWxlbWVudC5jcHAKaW5kZXggZDVmMDc3NzBk
MGEzMGJkNjIzMWJlOWYxYTgxYjdiMTMzNmU2ZGYzNy4uY2NmZTUxMTZmZTM1YTdjZjRlZjQ1ZjY1
ZjA1ZDQxMzkyYWY1Y2E3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEVs
ZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFbGVtZW50LmNwcApAQCAt
MzU3LDcgKzM1Nyw3IEBAIGJvb2wgU2NyaXB0RWxlbWVudDo6cmVxdWVzdE1vZHVsZVNjcmlwdChj
b25zdCBUZXh0UG9zaXRpb24mIHNjcmlwdFN0YXJ0UG9zaXRpb24pCiAgICAgICAgIG1fbG9hZGFi
bGVTY3JpcHQgPSBXVEZNb3ZlKHNjcmlwdCk7CiAgICAgICAgIGlmIChhdXRvKiBmcmFtZSA9IG1f
ZWxlbWVudC5kb2N1bWVudCgpLmZyYW1lKCkpIHsKICAgICAgICAgICAgIGF1dG8mIHNjcmlwdCA9
IGRvd25jYXN0PExvYWRhYmxlTW9kdWxlU2NyaXB0PigqbV9sb2FkYWJsZVNjcmlwdC5nZXQoKSk7
Ci0gICAgICAgICAgICBmcmFtZS0+c2NyaXB0KCkubG9hZE1vZHVsZVNjcmlwdChzY3JpcHQsIG1v
ZHVsZVNjcmlwdFJvb3RVUkwuc3RyaW5nKCksIG1ha2VSZWYoc2NyaXB0LnBhcmFtZXRlcnMoKSkp
OworICAgICAgICAgICAgZnJhbWUtPnNjcmlwdCgpLmxvYWRNb2R1bGVTY3JpcHQoc2NyaXB0LCBt
b2R1bGVTY3JpcHRSb290VVJMLnN0cmluZygpLCBzY3JpcHQucGFyYW1ldGVycygpKTsKICAgICAg
ICAgfQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0FsdGVybmF0aXZlVGV4dENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9BbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLmNwcAppbmRleCBmOGM5YjYzYjc4
ZjdmOWU4NmVhNGVhYTljMmMxNzFmZDIxNThlNTBiLi4zNmFiNGE0MDIzOGFjNDAyNzhjNmQ3NGFh
ZjFkYjRhNjYwZWJhNzhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FsdGVy
bmF0aXZlVGV4dENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQWx0
ZXJuYXRpdmVUZXh0Q29udHJvbGxlci5jcHAKQEAgLTYwMyw3ICs2MDMsNyBAQCB2b2lkIEFsdGVy
bmF0aXZlVGV4dENvbnRyb2xsZXI6OmFwcGx5QWx0ZXJuYXRpdmVUZXh0VG9SYW5nZShjb25zdCBT
aW1wbGVSYW5nZSYgcgogICAgIGF1dG8gcGFyYWdyYXBoU3RhcnQgPSBtYWtlQm91bmRhcnlQb2lu
dChzdGFydE9mUGFyYWdyYXBoKG1ha2VEZXByZWNhdGVkTGVnYWN5UG9zaXRpb24ocmFuZ2Uuc3Rh
cnQpKSk7CiAgICAgaWYgKCFwYXJhZ3JhcGhTdGFydCkKICAgICAgICAgcmV0dXJuOwotICAgIGF1
dG8gdHJlZVNjb3BlUm9vdCA9IG1ha2VSZWYocmFuZ2Uuc3RhcnQuY29udGFpbmVyLT50cmVlU2Nv
cGUoKS5yb290Tm9kZSgpKTsKKyAgICBSZWYgdHJlZVNjb3BlUm9vdCA9IHJhbmdlLnN0YXJ0LmNv
bnRhaW5lci0+dHJlZVNjb3BlKCkucm9vdE5vZGUoKTsKICAgICBhdXRvIHRyZWVTY29wZVN0YXJ0
ID0gQm91bmRhcnlQb2ludCB7IHRyZWVTY29wZVJvb3QuZ2V0KCksIDAgfTsKICAgICBhdXRvIGNv
cnJlY3Rpb25PZmZzZXRJblBhcmFncmFwaCA9IGNoYXJhY3RlckNvdW50KHsgKnBhcmFncmFwaFN0
YXJ0LCByYW5nZS5zdGFydCB9KTsKICAgICBhdXRvIHBhcmFncmFwaE9mZnNldEluVHJlZVNjb3Bl
ID0gY2hhcmFjdGVyQ291bnQoeyB0cmVlU2NvcGVTdGFydCwgKnBhcmFncmFwaFN0YXJ0IH0pOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9EZWxldGVTZWxlY3Rpb25Db21tYW5k
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRGVsZXRlU2VsZWN0aW9uQ29tbWFuZC5jcHAK
aW5kZXggMzI5YWMzMmIxYTFmYWQxNTJlNjUzZGFmOTljMWY0YjI1Yjc5ODg0Zi4uMzdhOTEwZWI2
YzcwYmVlNTI4MjQ5NTc4NThlOTg4NTE4NmQ3NjNlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9EZWxldGVTZWxlY3Rpb25Db21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0RlbGV0ZVNlbGVjdGlvbkNvbW1hbmQuY3BwCkBAIC02MDEsNyArNjAxLDcgQEAg
dm9pZCBEZWxldGVTZWxlY3Rpb25Db21tYW5kOjptYWtlU3R5bGluZ0VsZW1lbnRzRGlyZWN0Q2hp
bGRyZW5PZkVkaXRhYmxlUm9vdFRvUHIKICAgICAgICAgcmV0dXJuOwogICAgIGF1dG8gbm9kZXMg
PSBpbnRlcnNlY3RpbmdOb2RlcygqcmFuZ2UpLmJlZ2luKCk7CiAgICAgd2hpbGUgKG5vZGVzKSB7
Ci0gICAgICAgIGF1dG8gbm9kZSA9IG1ha2VSZWYoKm5vZGVzKTsKKyAgICAgICAgUmVmIG5vZGUg
PSAqbm9kZXM7CiAgICAgICAgIGF1dG8gc2hvdWxkTW92ZSA9IGlzPEhUTUxMaW5rRWxlbWVudD4o
bm9kZSkKICAgICAgICAgICAgIHx8IChpczxIVE1MU3R5bGVFbGVtZW50Pihub2RlKSAmJiAhZG93
bmNhc3Q8SFRNTFN0eWxlRWxlbWVudD4obm9kZS5nZXQoKSkuaGFzQXR0cmlidXRlV2l0aG91dFN5
bmNocm9uaXphdGlvbihzY29wZWRBdHRyKSk7CiAgICAgICAgIGlmICghc2hvdWxkTW92ZSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvRWRpdG9yLmNwcAppbmRleCA3YzM2ZWUwNmYwZTc5NjE1YjkxNDM3MmVlMDU1
NThhMmRkNTUwMDI3Li41NjU3ODI3ZDlhNjZiYjNiNzNlZmI1NWY5MzE2MWVlODM4YjQ1YTMwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCkBAIC0xMTI2LDcgKzExMjYsNyBAQCB2b2lkIEVk
aXRvcjo6YXBwbGllZEVkaXRpbmcoQ29tcG9zaXRlRWRpdENvbW1hbmQmIGNvbW1hbmQpCiAgICAg
ZG9jdW1lbnQoKS51cGRhdGVMYXlvdXQoKTsKIAogICAgIEFTU0VSVChjb21tYW5kLmNvbXBvc2l0
aW9uKCkpOwotICAgIGF1dG8gY29tcG9zaXRpb24gPSBtYWtlUmVmKCpjb21tYW5kLmNvbXBvc2l0
aW9uKCkpOworICAgIFJlZiBjb21wb3NpdGlvbiA9ICpjb21tYW5kLmNvbXBvc2l0aW9uKCk7CiAg
ICAgVmlzaWJsZVNlbGVjdGlvbiBuZXdTZWxlY3Rpb24oY29tbWFuZC5lbmRpbmdTZWxlY3Rpb24o
KSk7CiAKICAgICBub3RpZnlUZXh0RnJvbUNvbnRyb2xzKGNvbXBvc2l0aW9uLT5zdGFydGluZ1Jv
b3RFZGl0YWJsZUVsZW1lbnQoKSwgY29tcG9zaXRpb24tPmVuZGluZ1Jvb3RFZGl0YWJsZUVsZW1l
bnQoKSk7CkBAIC0yNzA2LDcgKzI3MDYsNyBAQCB2b2lkIEVkaXRvcjo6bWFya0FsbE1pc3NwZWxs
aW5nc0FuZEJhZEdyYW1tYXJJblJhbmdlcyhPcHRpb25TZXQ8VGV4dENoZWNraW5nVHlwZQogICAg
ICAgICByZXR1cm47CiAKICAgICAvLyBJZiB3ZSdyZSBub3QgaW4gYW4gZWRpdGFibGUgbm9kZSwg
YmFpbC4KLSAgICBhdXRvIGVkaXRhYmxlTm9kZSA9IG1ha2VSZWYoc3BlbGxpbmdSYW5nZS0+c3Rh
cnRDb250YWluZXIoKSk7CisgICAgUmVmIGVkaXRhYmxlTm9kZSA9IHNwZWxsaW5nUmFuZ2UtPnN0
YXJ0Q29udGFpbmVyKCk7CiAgICAgaWYgKCFlZGl0YWJsZU5vZGUtPmhhc0VkaXRhYmxlU3R5bGUo
KSkKICAgICAgICAgcmV0dXJuOwogCkBAIC0yNzY1LDcgKzI3NjUsNyBAQCB2b2lkIEVkaXRvcjo6
cmVwbGFjZVJhbmdlRm9yU3BlbGxDaGVja2luZyhjb25zdCBTaW1wbGVSYW5nZSYgcmFuZ2VUb1Jl
cGxhY2UsIGNvbgogCiBzdGF0aWMgdm9pZCBjb3JyZWN0U3BlbGxjaGVja2luZ1ByZXNlcnZpbmdU
ZXh0Q2hlY2tpbmdQYXJhZ3JhcGgoVGV4dENoZWNraW5nUGFyYWdyYXBoJiBwYXJhZ3JhcGgsIGNv
bnN0IFNpbXBsZVJhbmdlJiByYW5nZVRvUmVwbGFjZSwgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVu
dCwgQ2hhcmFjdGVyUmFuZ2UgcmVzdWx0Q2hhcmFjdGVyUmFuZ2UpCiB7Ci0gICAgYXV0byBzY29w
ZU5vZGUgPSBtYWtlUmVmKGRvd25jYXN0PENvbnRhaW5lck5vZGU+KHBhcmFncmFwaC5wYXJhZ3Jh
cGhSYW5nZSgpLnN0YXJ0Q29udGFpbmVyKCkucm9vdE5vZGUoKSkpOworICAgIFJlZiBzY29wZU5v
ZGUgPSBkb3duY2FzdDxDb250YWluZXJOb2RlPihwYXJhZ3JhcGgucGFyYWdyYXBoUmFuZ2UoKS5z
dGFydENvbnRhaW5lcigpLnJvb3ROb2RlKCkpOwogICAgIGF1dG8gcGFyYWdyYXBoQ2hhcmFjdGVy
UmFuZ2UgPSBjaGFyYWN0ZXJSYW5nZShtYWtlQm91bmRhcnlQb2ludEJlZm9yZU5vZGVDb250ZW50
cyhzY29wZU5vZGUpLCBwYXJhZ3JhcGgucGFyYWdyYXBoUmFuZ2UoKSk7CiAKICAgICBTcGVsbGlu
Z0NvcnJlY3Rpb25Db21tYW5kOjpjcmVhdGUocmFuZ2VUb1JlcGxhY2UsIHJlcGxhY2VtZW50KS0+
YXBwbHkoKTsKQEAgLTM2NzUsNyArMzY3NSw3IEBAIGJvb2wgRWRpdG9yOjpzaG91bGREZXRlY3RU
ZWxlcGhvbmVOdW1iZXJzKCkgY29uc3QKIHN0YXRpYyBWZWN0b3I8U2ltcGxlUmFuZ2U+IHNjYW5G
b3JUZWxlcGhvbmVOdW1iZXJzKGNvbnN0IFNpbXBsZVJhbmdlJiByYW5nZSkKIHsKICAgICAvLyBE
b24ndCBzY2FuIGZvciBwaG9uZSBudW1iZXJzIGluc2lkZSBlZGl0YWJsZSByZWdpb25zLgotICAg
IGlmIChhdXRvIHN0YXJ0Tm9kZSA9IG1ha2VSZWYocmFuZ2Uuc3RhcnRDb250YWluZXIoKSk7IHN0
YXJ0Tm9kZS0+aGFzRWRpdGFibGVTdHlsZSgpKQorICAgIGlmIChSZWYgc3RhcnROb2RlID0gcmFu
Z2Uuc3RhcnRDb250YWluZXIoKTsgc3RhcnROb2RlLT5oYXNFZGl0YWJsZVN0eWxlKCkpCiAgICAg
ICAgIHJldHVybiB7IH07CiAKICAgICBpZiAoSFRNTEVsZW1lbnQ6OmlzSW5zaWRlSW1hZ2VPdmVy
bGF5KHJhbmdlKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNl
bGVjdGlvbkNvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNlU2VsZWN0
aW9uQ29tbWFuZC5jcHAKaW5kZXggNmJlNTI4NzdlZGFmZDY3NTMwMGNhYzMxMzE2NzNjMjYzMWE2
NGJmYi4uYjA0MmJkMWFkZWE3Mjg5OGUyOGY5YWEzZDBmNGQwNzc4YjYyYzUxNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5jcHAKQEAg
LTIyOCw3ICsyMjgsNyBAQCB2b2lkIFJlcGxhY2VtZW50RnJhZ21lbnQ6OnJlbW92ZUNvbnRlbnRz
V2l0aFNpZGVFZmZlY3RzKCkKICAgICBhdXRvIGl0ID0gZGVzY2VuZGFudHNPZlR5cGU8RWxlbWVu
dD4oKm1fZnJhZ21lbnQpLmJlZ2luKCk7CiAgICAgYXV0byBlbmQgPSBkZXNjZW5kYW50c09mVHlw
ZTxFbGVtZW50PigqbV9mcmFnbWVudCkuZW5kKCk7CiAgICAgd2hpbGUgKGl0ICE9IGVuZCkgewot
ICAgICAgICBhdXRvIGVsZW1lbnQgPSBtYWtlUmVmKCppdCk7CisgICAgICAgIFJlZiBlbGVtZW50
ID0gKml0OwogICAgICAgICBpZiAoaXNTY3JpcHRFbGVtZW50KGVsZW1lbnQpIHx8IChpczxIVE1M
U3R5bGVFbGVtZW50PihlbGVtZW50KSAmJiBlbGVtZW50LT5nZXRBdHRyaWJ1dGUoY2xhc3NBdHRy
KSAhPSBXZWJLaXRNU09MaXN0UXVpcmtzU3R5bGUpCiAgICAgICAgICAgICB8fCBpczxIVE1MQmFz
ZUVsZW1lbnQ+KGVsZW1lbnQpIHx8IGlzPEhUTUxMaW5rRWxlbWVudD4oZWxlbWVudCkgfHwgaXM8
SFRNTE1ldGFFbGVtZW50PihlbGVtZW50KSB8fCBpczxIVE1MVGl0bGVFbGVtZW50PihlbGVtZW50
KSkgewogICAgICAgICAgICAgZWxlbWVudHNUb1JlbW92ZS5hcHBlbmQoV1RGTW92ZShlbGVtZW50
KSk7CkBAIC0yOTYsNyArMjk2LDcgQEAgdm9pZCBSZXBsYWNlbWVudEZyYWdtZW50OjppbnNlcnRO
b2RlQmVmb3JlKE5vZGUmIG5vZGUsIE5vZGUmIHJlZk5vZGUpCiAKIFJlZjxIVE1MRWxlbWVudD4g
UmVwbGFjZW1lbnRGcmFnbWVudDo6aW5zZXJ0RnJhZ21lbnRGb3JUZXN0UmVuZGVyaW5nKE5vZGUq
IHJvb3ROb2RlKQogewotICAgIGF1dG8gZG9jdW1lbnQgPSBtYWtlUmVmKHJvb3ROb2RlLT5kb2N1
bWVudCgpKTsKKyAgICBSZWYgZG9jdW1lbnQgPSByb290Tm9kZS0+ZG9jdW1lbnQoKTsKICAgICBh
dXRvIGhvbGRlciA9IGNyZWF0ZURlZmF1bHRQYXJhZ3JhcGhFbGVtZW50KGRvY3VtZW50LmdldCgp
KTsKIAogICAgIGhvbGRlci0+YXBwZW5kQ2hpbGQoKm1fZnJhZ21lbnQpOwpAQCAtMTY4MSw3ICsx
NjgxLDcgQEAgdm9pZCBSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6bWVyZ2VUZXh0Tm9kZXNBcm91
bmRQb3NpdGlvbihQb3NpdGlvbiYgcG9zaXRpb24sIFAKICAgICAgICAgcmV0dXJuOwogCiAgICAg
aWYgKGF1dG8qIHByZXZpb3VzU2libGluZyA9IHRleHQtPnByZXZpb3VzU2libGluZygpOyBpczxU
ZXh0PihwcmV2aW91c1NpYmxpbmcpKSB7Ci0gICAgICAgIGF1dG8gcHJldmlvdXMgPSBtYWtlUmVm
KGRvd25jYXN0PFRleHQ+KCpwcmV2aW91c1NpYmxpbmcpKTsKKyAgICAgICAgUmVmIHByZXZpb3Vz
ID0gZG93bmNhc3Q8VGV4dD4oKnByZXZpb3VzU2libGluZyk7CiAgICAgICAgIGluc2VydFRleHRJ
bnRvTm9kZSgqdGV4dCwgMCwgcHJldmlvdXMtPmRhdGEoKSk7CiAKICAgICAgICAgaWYgKHBvc2l0
aW9uSXNPZmZzZXRJbkFuY2hvcikKQEAgLTE3MDAsNyArMTcwMCw3IEBAIHZvaWQgUmVwbGFjZVNl
bGVjdGlvbkNvbW1hbmQ6Om1lcmdlVGV4dE5vZGVzQXJvdW5kUG9zaXRpb24oUG9zaXRpb24mIHBv
c2l0aW9uLCBQCiAgICAgICAgIHJlbW92ZU5vZGUocHJldmlvdXMpOwogICAgIH0KICAgICBpZiAo
YXV0byogbmV4dFNpYmxpbmcgPSB0ZXh0LT5uZXh0U2libGluZygpOyBpczxUZXh0PihuZXh0U2li
bGluZykpIHsKLSAgICAgICAgYXV0byBuZXh0ID0gbWFrZVJlZihkb3duY2FzdDxUZXh0PigqbmV4
dFNpYmxpbmcpKTsKKyAgICAgICAgUmVmIG5leHQgPSBkb3duY2FzdDxUZXh0PigqbmV4dFNpYmxp
bmcpOwogICAgICAgICB1bnNpZ25lZCBvcmlnaW5hbExlbmd0aCA9IHRleHQtPmxlbmd0aCgpOwog
ICAgICAgICBpbnNlcnRUZXh0SW50b05vZGUoKnRleHQsIG9yaWdpbmFsTGVuZ3RoLCBuZXh0LT5k
YXRhKCkpOwogCkBAIC0xNzk2LDcgKzE3OTYsNyBAQCBib29sIFJlcGxhY2VTZWxlY3Rpb25Db21t
YW5kOjpwZXJmb3JtVHJpdmlhbFJlcGxhY2UoY29uc3QgUmVwbGFjZW1lbnRGcmFnbWVudCYgZgog
ewogICAgIGlmICghaXM8VGV4dD4oZnJhZ21lbnQuZmlyc3RDaGlsZCgpKSB8fCBmcmFnbWVudC5m
aXJzdENoaWxkKCkgIT0gZnJhZ21lbnQubGFzdENoaWxkKCkpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICBhdXRvIHRleHROb2RlID0gbWFrZVJlZihkb3duY2FzdDxUZXh0PigqZnJhZ21lbnQu
Zmlyc3RDaGlsZCgpKSk7CisgICAgUmVmIHRleHROb2RlID0gZG93bmNhc3Q8VGV4dD4oKmZyYWdt
ZW50LmZpcnN0Q2hpbGQoKSk7CiAKICAgICAvLyBGSVhNRTogV291bGQgYmUgbmljZSB0byBoYW5k
bGUgc21hcnQgcmVwbGFjZSBpbiB0aGUgZmFzdCBwYXRoLgogICAgIGlmIChtX3NtYXJ0UmVwbGFj
ZSB8fCBmcmFnbWVudC5oYXNJbnRlcmNoYW5nZU5ld2xpbmVBdFN0YXJ0KCkgfHwgZnJhZ21lbnQu
aGFzSW50ZXJjaGFuZ2VOZXdsaW5lQXRFbmQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0
ZXJhdG9yLmNwcAppbmRleCAxNzZlNzQ2YzI5N2Y3NzE5NWU3YTU3MjUzZDg5MGVhM2U5NzhhODJm
Li40MjJjMWY5ZTI2MzJhZjI4YTY4ZjY1NjA1N2FjZGFlMDJhMjMxMTBmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwCkBAIC0yNDM0LDcgKzI0MzQsNyBAQCBTdHJpbmcg
cGxhaW5UZXh0KGNvbnN0IFNpbXBsZVJhbmdlJiByYW5nZSwgVGV4dEl0ZXJhdG9yQmVoYXZpb3Jz
IGRlZmF1bHRCZWhhdmlvcgogICAgIC8vIFRoZSBpbml0aWFsIGJ1ZmZlciBzaXplIGNhbiBiZSBj
cml0aWNhbCBmb3IgcGVyZm9ybWFuY2U6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD04MTE5MgogICAgIGNvbnN0ZXhwciB1bnNpZ25lZCBpbml0aWFsQ2FwYWNpdHkgPSAx
IDw8IDE1OwogCi0gICAgYXV0byBkb2N1bWVudCA9IG1ha2VSZWYocmFuZ2Uuc3RhcnQuZG9jdW1l
bnQoKSk7CisgICAgUmVmIGRvY3VtZW50ID0gcmFuZ2Uuc3RhcnQuZG9jdW1lbnQoKTsKIAogICAg
IHVuc2lnbmVkIGJ1ZmZlckxlbmd0aCA9IDA7CiAgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlU2VsZWN0aW9uLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVNlbGVjdGlvbi5jcHAKaW5kZXggNmJmZWFk
MmE5MGI0MGU4Y2FkZmJiODZmYjlmOGNiNzc2NjQyZDM4Zi4uZDQ2OTc3MDk2NjI1NzFhMDhjMzZh
NTdiMzdhYmJlODIwNWVkYTA2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9W
aXNpYmxlU2VsZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVT
ZWxlY3Rpb24uY3BwCkBAIC01MjYsOCArNTI2LDggQEAgdm9pZCBWaXNpYmxlU2VsZWN0aW9uOjph
ZGp1c3RTZWxlY3Rpb25Ub0F2b2lkQ3Jvc3NpbmdTaGFkb3dCb3VuZGFyaWVzKCkKICAgICBpZiAo
bV9zdGFydC5pc051bGwoKSB8fCBtX2VuZC5pc051bGwoKSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgYXV0byBzdGFydE5vZGUgPSBtYWtlUmVmKCptX3N0YXJ0LmFuY2hvck5vZGUoKSk7Ci0gICAg
YXV0byBlbmROb2RlID0gbWFrZVJlZigqbV9lbmQuYW5jaG9yTm9kZSgpKTsKKyAgICBSZWYgc3Rh
cnROb2RlID0gKm1fc3RhcnQuYW5jaG9yTm9kZSgpOworICAgIFJlZiBlbmROb2RlID0gKm1fZW5k
LmFuY2hvck5vZGUoKTsKICAgICBpZiAoJnN0YXJ0Tm9kZS0+dHJlZVNjb3BlKCkgPT0gJmVuZE5v
ZGUtPnRyZWVTY29wZSgpKQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0KaW5kZXggOWExMjA5
ODk4NjZmMzY2ZWYxNWZhNjQ2MTlmZTIyMzcxMTk0YmUxYy4uMzIyNmYzMjk4NDA1YmEyZjM4YmNh
MmQzNTI5MzI4MDFhYmNhNGYxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9j
b2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0KQEAgLTcwMyw3ICs3MDMsNyBAQCBzdGF0
aWMgU3RyaW5nIHR5cGVGb3JBdHRhY2htZW50RWxlbWVudChjb25zdCBTdHJpbmcmIGNvbnRlbnRU
eXBlKQogCiBzdGF0aWMgUmVmPEhUTUxFbGVtZW50PiBhdHRhY2htZW50Rm9yRmlsZVBhdGgoRnJh
bWUmIGZyYW1lLCBjb25zdCBTdHJpbmcmIHBhdGgsIFByZXNlbnRhdGlvblNpemUgcHJlZmVycmVk
U2l6ZSwgY29uc3QgU3RyaW5nJiBleHBsaWNpdENvbnRlbnRUeXBlKQogewotICAgIGF1dG8gZG9j
dW1lbnQgPSBtYWtlUmVmKCpmcmFtZS5kb2N1bWVudCgpKTsKKyAgICBSZWYgZG9jdW1lbnQgPSAq
ZnJhbWUuZG9jdW1lbnQoKTsKICAgICBhdXRvIGF0dGFjaG1lbnQgPSBIVE1MQXR0YWNobWVudEVs
ZW1lbnQ6OmNyZWF0ZShIVE1MTmFtZXM6OmF0dGFjaG1lbnRUYWcsIGRvY3VtZW50KTsKICAgICBp
ZiAoIXN1cHBvcnRzQ2xpZW50U2lkZUF0dGFjaG1lbnREYXRhKGZyYW1lKSkgewogICAgICAgICBh
dHRhY2htZW50LT5zZXRGaWxlKEZpbGU6OmNyZWF0ZShkb2N1bWVudC5wdHIoKSwgcGF0aCksIEhU
TUxBdHRhY2htZW50RWxlbWVudDo6VXBkYXRlRGlzcGxheUF0dHJpYnV0ZXM6Olllcyk7CkBAIC03
NDcsNyArNzQ3LDcgQEAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAKIHN0YXRp
YyBSZWY8SFRNTEVsZW1lbnQ+IGF0dGFjaG1lbnRGb3JEYXRhKEZyYW1lJiBmcmFtZSwgU2hhcmVk
QnVmZmVyJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIGNvbnN0IFN0cmluZyYg
bmFtZSwgUHJlc2VudGF0aW9uU2l6ZSBwcmVmZXJyZWRTaXplKQogewotICAgIGF1dG8gZG9jdW1l
bnQgPSBtYWtlUmVmKCpmcmFtZS5kb2N1bWVudCgpKTsKKyAgICBSZWYgZG9jdW1lbnQgPSAqZnJh
bWUuZG9jdW1lbnQoKTsKICAgICBhdXRvIGF0dGFjaG1lbnQgPSBIVE1MQXR0YWNobWVudEVsZW1l
bnQ6OmNyZWF0ZShIVE1MTmFtZXM6OmF0dGFjaG1lbnRUYWcsIGRvY3VtZW50KTsKICAgICBhdXRv
IGF0dGFjaG1lbnRUeXBlID0gdHlwZUZvckF0dGFjaG1lbnRFbGVtZW50KGNvbnRlbnRUeXBlKTsK
IApAQCAtODE3LDcgKzgxNyw3IEBAIGJvb2wgV2ViQ29udGVudFJlYWRlcjo6cmVhZFVSTChjb25z
dCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB0aXRsZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
I2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKLSAgICBhdXRvIGRvY3VtZW50ID0gbWFr
ZVJlZigqZnJhbWUuZG9jdW1lbnQoKSk7CisgICAgUmVmIGRvY3VtZW50ID0gKmZyYW1lLmRvY3Vt
ZW50KCk7CiAgICAgYXV0byBhbmNob3IgPSBIVE1MQW5jaG9yRWxlbWVudDo6Y3JlYXRlKGRvY3Vt
ZW50LmdldCgpKTsKICAgICBhbmNob3ItPnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRp
b24oSFRNTE5hbWVzOjpocmVmQXR0ciwgdXJsLnN0cmluZygpKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9t
YXJrdXAuY3BwCmluZGV4IGJmYTEzMGMzOGE1OGNjZWU0NDdiYzRlZmY0YzY2ZTc1ODA1YzBjYmEu
LmEwMGIzNTA3NzEyM2M5YTE3YWY4OGNmMTA3YjZkZDJjMWZiYTA1YjcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL21hcmt1cC5jcHAKQEAgLTEyNTEsNyArMTI1MSw3IEBAIFN0cmluZyB1cmxUb01hcmt1cChj
b25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB0aXRsZSkKIGVudW0gY2xhc3MgRG9jdW1lbnRG
cmFnbWVudE1vZGUgeyBOZXcsIFJldXNlRm9ySW5uZXJPdXRlckhUTUwgfTsKIHN0YXRpYyBBTFdB
WVNfSU5MSU5FIEV4Y2VwdGlvbk9yPFJlZjxEb2N1bWVudEZyYWdtZW50Pj4gY3JlYXRlRnJhZ21l
bnRGb3JNYXJrdXAoRWxlbWVudCYgY29udGV4dEVsZW1lbnQsIGNvbnN0IFN0cmluZyYgbWFya3Vw
LCBEb2N1bWVudEZyYWdtZW50TW9kZSBtb2RlLCBQYXJzZXJDb250ZW50UG9saWN5IHBhcnNlckNv
bnRlbnRQb2xpY3kpCiB7Ci0gICAgYXV0byBkb2N1bWVudCA9IG1ha2VSZWYoY29udGV4dEVsZW1l
bnQuaGFzVGFnTmFtZSh0ZW1wbGF0ZVRhZykgPyBjb250ZXh0RWxlbWVudC5kb2N1bWVudCgpLmVu
c3VyZVRlbXBsYXRlRG9jdW1lbnQoKSA6IGNvbnRleHRFbGVtZW50LmRvY3VtZW50KCkpOworICAg
IFJlZiBkb2N1bWVudCA9IGNvbnRleHRFbGVtZW50Lmhhc1RhZ05hbWUodGVtcGxhdGVUYWcpID8g
Y29udGV4dEVsZW1lbnQuZG9jdW1lbnQoKS5lbnN1cmVUZW1wbGF0ZURvY3VtZW50KCkgOiBjb250
ZXh0RWxlbWVudC5kb2N1bWVudCgpOwogICAgIGF1dG8gZnJhZ21lbnQgPSBtb2RlID09IERvY3Vt
ZW50RnJhZ21lbnRNb2RlOjpOZXcgPyBEb2N1bWVudEZyYWdtZW50OjpjcmVhdGUoZG9jdW1lbnQu
Z2V0KCkpIDogZG9jdW1lbnQtPmRvY3VtZW50RnJhZ21lbnRGb3JJbm5lck91dGVySFRNTCgpOwog
ICAgIEFTU0VSVCghZnJhZ21lbnQtPmhhc0NoaWxkTm9kZXMoKSk7CiAgICAgaWYgKGRvY3VtZW50
LT5pc0hUTUxEb2N1bWVudCgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5
L0NhY2hlZEZyYW1lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQ2FjaGVkRnJhbWUuY3Bw
CmluZGV4IDhkZTI2ZTFiYzE1MzNmZDBiM2YwNzRmMDZiMWYzNGQzZTgwYjg5OGEuLjIyMmJkM2I1
OTZlOTZmYjEwNjc0ZDZlODBlYTM1NmY5YzFiNzc3MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2hpc3RvcnkvQ2FjaGVkRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2hpc3Rvcnkv
Q2FjaGVkRnJhbWUuY3BwCkBAIC05Myw3ICs5Myw3IEBAIHZvaWQgQ2FjaGVkRnJhbWVCYXNlOjpy
ZXN0b3JlKCkKICAgICBpZiAobV9pc01haW5GcmFtZSkKICAgICAgICAgbV92aWV3LT5zZXRQYXJl
bnRWaXNpYmxlKHRydWUpOwogCi0gICAgYXV0byBmcmFtZSA9IG1ha2VSZWYobV92aWV3LT5mcmFt
ZSgpKTsKKyAgICBSZWYgZnJhbWUgPSBtX3ZpZXctPmZyYW1lKCk7CiAgICAgewogICAgICAgICBT
dHlsZTo6UG9zdFJlc29sdXRpb25DYWxsYmFja0Rpc2FibGVyIGRpc2FibGVyKCptX2RvY3VtZW50
KTsKICAgICAgICAgV2lkZ2V0SGllcmFyY2h5VXBkYXRlc1N1c3BlbnNpb25TY29wZSBzdXNwZW5k
V2lkZ2V0SGllcmFyY2h5VXBkYXRlczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEJvZHlFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEJvZHlFbGVtZW50
LmNwcAppbmRleCBjZTEzZjM3Zjg1Yzc5Mjk4MTQ1NjYwNmE3M2IyZjViODJmMWExZThkLi43NWE4
NGM3MDExZTdlY2I3MjgxMDM5MGQ3NmE1Mzc5NjQ0Zjg3NmRkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxCb2R5RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MQm9keUVsZW1lbnQuY3BwCkBAIC0xOTQsNyArMTk0LDcgQEAgTm9kZTo6SW5zZXJ0ZWRJ
bnRvQW5jZXN0b3JSZXN1bHQgSFRNTEJvZHlFbGVtZW50OjppbnNlcnRlZEludG9BbmNlc3RvcihJ
bnNlcnRpb24KIHZvaWQgSFRNTEJvZHlFbGVtZW50OjpkaWRGaW5pc2hJbnNlcnRpbmdOb2RlKCkK
IHsKICAgICBBU1NFUlQoaXM8SFRNTEZyYW1lRWxlbWVudEJhc2U+KGRvY3VtZW50KCkub3duZXJF
bGVtZW50KCkpKTsKLSAgICBhdXRvIG93bmVyRWxlbWVudCA9IG1ha2VSZWYoKmRvY3VtZW50KCku
b3duZXJFbGVtZW50KCkpOworICAgIFJlZiBvd25lckVsZW1lbnQgPSAqZG9jdW1lbnQoKS5vd25l
ckVsZW1lbnQoKTsKIAogICAgIC8vIEZJWE1FOiBJdCdzIHN1cnByaXNpbmcgdGhpcyBpcyB3ZWIg
Y29tcGF0aWJsZSBzaW5jZSBpdCBtZWFucyBtYXJnaW53aWR0aCBhbmQgbWFyZ2luaGVpZ2h0IGF0
dHJpYnV0ZXMKICAgICAvLyBhcHBlYXIgb3IgZ2V0IG92ZXJ3cml0dGVuIG9uIGJvZHkgZWxlbWVu
dHMgb2YgYSBkb2N1bWVudCBlbWJlZGRlZCB0aHJvdWdoIDxpZnJhbWU+IG9yIDxmcmFtZT4uCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwCmluZGV4IDY2ODljYTcxOTRiNjUwNTllN2Q2ZjU5
ZGI1Y2VjYTY2ZjliNGUzNzcuLjYzNjVhMmYzNjY5NmJmNDRkOTdkNTc0NDhjYjY1MGJhNmVhMzA3
NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwCkBAIC0xNDA5LDcgKzE0MDksNyBA
QCB2b2lkIEhUTUxFbGVtZW50Ojp1cGRhdGVXaXRoVGV4dFJlY29nbml0aW9uUmVzdWx0KGNvbnN0
IFRleHRSZWNvZ25pdGlvblJlc3VsdCYgcgogICAgIGlmIChyZXN1bHQuaXNFbXB0eSgpKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBhdXRvIHNoYWRvd1Jvb3QgPSBtYWtlUmVmKGVuc3VyZVVzZXJB
Z2VudFNoYWRvd1Jvb3QoKSk7CisgICAgUmVmIHNoYWRvd1Jvb3QgPSBlbnN1cmVVc2VyQWdlbnRT
aGFkb3dSb290KCk7CiAgICAgaWYgKCF0ZXh0UmVjb2duaXRpb25FbGVtZW50cy5yb290KSB7CiAg
ICAgICAgIGF1dG8gcm9vdENvbnRhaW5lciA9IEhUTUxEaXZFbGVtZW50OjpjcmVhdGUoZG9jdW1l
bnQoKSk7CiAgICAgICAgIHJvb3RDb250YWluZXItPnNldElkQXR0cmlidXRlKGltYWdlT3Zlcmxh
eUVsZW1lbnRJZGVudGlmaWVyKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MTWVkaWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVu
dC5jcHAKaW5kZXggMGFhODNlYmEwODIwMzA5ZWIyZDUxOTZhY2MyNjVhOTk5Y2UyMTk5NC4uODA4
YTEwM2NiOGQ2NTVhMjFmYjE2MGViYTYxYTc4NDEwYjM3MWYwOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCkBAIC00MjgzLDcgKzQyODMsNyBAQCB2b2lkIEhUTUxN
ZWRpYUVsZW1lbnQ6OmZvcmdldFJlc291cmNlU3BlY2lmaWNUcmFja3MoKQogICAgIGlmIChtX3Rl
eHRUcmFja3MpIHsKICAgICAgICAgVHJhY2tEaXNwbGF5VXBkYXRlU2NvcGUgc2NvcGUgeyAqdGhp
cyB9OwogICAgICAgICBmb3IgKGludCBpID0gbV90ZXh0VHJhY2tzLT5sZW5ndGgoKSAtIDE7IGkg
Pj0gMDsgLS1pKSB7Ci0gICAgICAgICAgICBhdXRvIHRyYWNrID0gbWFrZVJlZigqbV90ZXh0VHJh
Y2tzLT5pdGVtKGkpKTsKKyAgICAgICAgICAgIFJlZiB0cmFjayA9ICptX3RleHRUcmFja3MtPml0
ZW0oaSk7CiAgICAgICAgICAgICBpZiAodHJhY2stPnRyYWNrVHlwZSgpID09IFRleHRUcmFjazo6
SW5CYW5kKQogICAgICAgICAgICAgICAgIHJlbW92ZVRleHRUcmFjayhXVEZNb3ZlKHRyYWNrKSwg
ZmFsc2UpOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL09mZnNj
cmVlbkNhbnZhcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL09mZnNjcmVlbkNhbnZhcy5jcHAK
aW5kZXggODA4YTk5ZTY1NWUyMDFhYWFlMWIwZWZiNGEzNzIyMDJiNzc0Mjg5MC4uNTk5MGQzZTI2
OTMyYjJlZTRhNGJiNmZlN2FkMmM3MWJiYzAzMDIzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9PZmZzY3JlZW5DYW52YXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvT2Zm
c2NyZWVuQ2FudmFzLmNwcApAQCAtOTcsNyArOTcsNyBAQCBSZWY8T2Zmc2NyZWVuQ2FudmFzPiBP
ZmZzY3JlZW5DYW52YXM6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBzY3JpcHRFeGVj
dQogICAgIGlmICghZGV0YWNoZWRDYW52YXMtPm9yaWdpbkNsZWFuKCkpCiAgICAgICAgIGNsb25l
LT5zZXRPcmlnaW5UYWludGVkKCk7CiAKLSAgICBjYWxsT25NYWluVGhyZWFkKFtkZXRhY2hlZENh
bnZhcyA9IFdURk1vdmUoZGV0YWNoZWRDYW52YXMpLCBwbGFjZWhvbGRlckRhdGEgPSBtYWtlUmVm
KCpjbG9uZS0+bV9wbGFjZWhvbGRlckRhdGEpXSAoKSBtdXRhYmxlIHsKKyAgICBjYWxsT25NYWlu
VGhyZWFkKFtkZXRhY2hlZENhbnZhcyA9IFdURk1vdmUoZGV0YWNoZWRDYW52YXMpLCBwbGFjZWhv
bGRlckRhdGEgPSBSZWYgeyAqY2xvbmUtPm1fcGxhY2Vob2xkZXJEYXRhIH1dICgpIG11dGFibGUg
ewogICAgICAgICBwbGFjZWhvbGRlckRhdGEtPmNhbnZhcyA9IGRldGFjaGVkQ2FudmFzLT50YWtl
UGxhY2Vob2xkZXJDYW52YXMoKTsKICAgICAgICAgaWYgKHBsYWNlaG9sZGVyRGF0YS0+Y2FudmFz
KSB7CiAgICAgICAgICAgICBhdXRvJiBwbGFjZWhvbGRlckNvbnRleHQgPSBkb3duY2FzdDxQbGFj
ZWhvbGRlclJlbmRlcmluZ0NvbnRleHQ+KCpwbGFjZWhvbGRlckRhdGEtPmNhbnZhcy0+cmVuZGVy
aW5nQ29udGV4dCgpKTsKQEAgLTQzMiw3ICs0MzIsNyBAQCB2b2lkIE9mZnNjcmVlbkNhbnZhczo6
c2V0UGxhY2Vob2xkZXJDYW52YXMoSFRNTENhbnZhc0VsZW1lbnQmIGNhbnZhcykKIAogdm9pZCBP
ZmZzY3JlZW5DYW52YXM6OnB1c2hCdWZmZXJUb1BsYWNlaG9sZGVyKCkKIHsKLSAgICBjYWxsT25N
YWluVGhyZWFkKFtwbGFjZWhvbGRlckRhdGEgPSBtYWtlUmVmKCptX3BsYWNlaG9sZGVyRGF0YSld
ICgpIG11dGFibGUgeworICAgIGNhbGxPbk1haW5UaHJlYWQoW3BsYWNlaG9sZGVyRGF0YSA9IFJl
ZiB7ICptX3BsYWNlaG9sZGVyRGF0YSB9XSAoKSBtdXRhYmxlIHsKICAgICAgICAgTG9ja2VyIGxv
Y2tlciB7IHBsYWNlaG9sZGVyRGF0YS0+YnVmZmVyTG9jayB9OwogICAgICAgICBpZiAocGxhY2Vo
b2xkZXJEYXRhLT5jYW52YXMgJiYgcGxhY2Vob2xkZXJEYXRhLT5wZW5kaW5nQ29tbWl0QnVmZmVy
KQogICAgICAgICAgICAgcGxhY2Vob2xkZXJEYXRhLT5jYW52YXMtPnNldEltYWdlQnVmZmVyQW5k
TWFya0RpcnR5KFdURk1vdmUocGxhY2Vob2xkZXJEYXRhLT5wZW5kaW5nQ29tbWl0QnVmZmVyKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1ZhbGlkYXRpb25NZXNzYWdlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvVmFsaWRhdGlvbk1lc3NhZ2UuY3BwCmluZGV4IGNmZWIwNDNm
M2NmMjBmNjdmYjZmYjAyYWMxMmQ0MWRlNzhmMzBlZWEuLjlhMjNiMGViNzU3YjhjMGE5MGI3ZmY0
YmU3ODk0MmYxM2E1ZGZlZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVmFsaWRh
dGlvbk1lc3NhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVmFsaWRhdGlvbk1lc3Nh
Z2UuY3BwCkBAIC0xODQsNyArMTg0LDcgQEAgdm9pZCBWYWxpZGF0aW9uTWVzc2FnZTo6YnVpbGRC
dWJibGVUcmVlKCkKICAgICBpZiAoIW1fZWxlbWVudC0+cmVuZGVyZXIoKSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgYXV0byBzaGFkb3dSb290ID0gbWFrZVJlZihtX2VsZW1lbnQtPmVuc3VyZVVz
ZXJBZ2VudFNoYWRvd1Jvb3QoKSk7CisgICAgUmVmIHNoYWRvd1Jvb3QgPSBtX2VsZW1lbnQtPmVu
c3VyZVVzZXJBZ2VudFNoYWRvd1Jvb3QoKTsKIAogICAgIFNjcmlwdERpc2FsbG93ZWRTY29wZTo6
SW5NYWluVGhyZWFkIHNjcmlwdERpc2FsbG93ZWRTY29wZTsKICAgICBTY3JpcHREaXNhbGxvd2Vk
U2NvcGU6OkV2ZW50QWxsb3dlZFNjb3BlIGFsbG93ZWRTY29wZShzaGFkb3dSb290KTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZS5jcHAKaW5kZXggMTQwZTViNTkzMmY2ZjI1MDVhMTU1Y2JiZWY4NDhhMDQwMzVjNjkwMi4u
Y2FhNmZjMjk5NDk0MTViYjc4YTExMTQ0MjhmYmFhNjBhM2Q2ZmFiNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5j
cHAKQEAgLTQxNTIsNyArNDE1Miw3IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6
bWFrZVhSQ29tcGF0aWJsZShNYWtlWFJDb21wYXRpYmxlUHJvbWlzZSYmIHByb21pCiAgICAgLy8g
Mi4gTGV0IGNvbnRleHQgYmUgdGhlIHRhcmdldCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlIG9i
amVjdC4KICAgICAvLyAzLiBFbnN1cmUgYW4gaW1tZXJzaXZlIFhSIGRldmljZSBpcyBzZWxlY3Rl
ZC4KICAgICBhdXRvJiB4clN5c3RlbSA9IE5hdmlnYXRvcldlYlhSOjp4cih3aW5kb3ctPm5hdmln
YXRvcigpKTsKLSAgICB4clN5c3RlbS5lbnN1cmVJbW1lcnNpdmVYUkRldmljZUlzU2VsZWN0ZWQo
W3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBwcm9taXNlID0gV1RGTW92ZShw
cm9taXNlKSwgcHJvdGVjdGVkWHJTeXN0ZW0gPSBtYWtlUmVmKHhyU3lzdGVtKV0oKSBtdXRhYmxl
IHsKKyAgICB4clN5c3RlbS5lbnN1cmVJbW1lcnNpdmVYUkRldmljZUlzU2VsZWN0ZWQoW3RoaXMs
IHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNl
KSwgcHJvdGVjdGVkWHJTeXN0ZW0gPSBSZWYgeyB4clN5c3RlbSB9XSgpIG11dGFibGUgewogICAg
ICAgICBhdXRvIHJlamVjdFByb21pc2VXaXRoSW52YWxpZFN0YXRlRXJyb3IgPSBtYWtlU2NvcGVF
eGl0KFsmXSgpIHsKICAgICAgICAgICAgIG1faXNYUkNvbXBhdGlibGUgPSBmYWxzZTsKICAgICAg
ICAgICAgIHByb21pc2UucmVqZWN0KEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yIH0pOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WVFRDdWUuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC90cmFjay9WVFRDdWUuY3BwCmluZGV4IGE1YWI5NzRjMjQ2ZDhjMGI3N2Mx
MjViN2VhMTczYWY5ODFhMGMyMzcuLmU4YTY4OGZjMWY4NTUwODI3YWVjMGI1MGZlYmU1ZTdiOGU4
ZjRjOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVlRUQ3VlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZUVEN1ZS5jcHAKQEAgLTE2Miw3ICsxNjIs
NyBAQCB2b2lkIFZUVEN1ZUJveDo6YXBwbHlDU1NQcm9wZXJ0aWVzKGNvbnN0IEludFNpemUmIHZp
ZGVvU2l6ZSkKICAgICBpZiAoIWlzPFZUVEN1ZT4odGV4dFRyYWNrQ3VlKSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgYXV0byBjdWUgPSBtYWtlUmVmKGRvd25jYXN0PFZUVEN1ZT4oKnRleHRUcmFj
a0N1ZSkpOworICAgIFJlZiBjdWUgPSBkb3duY2FzdDxWVFRDdWU+KCp0ZXh0VHJhY2tDdWUpOwog
CiAgICAgLy8gRklYTUU6IEFwcGx5IGFsbCB0aGUgaW5pdGlhbCBDU1MgcG9zaXRpb25pbmcgcHJv
cGVydGllcy4gaHR0cDovL3drYi51Zy83OTkxNgogICAgIGlmICghY3VlLT5yZWdpb25JZCgpLmlz
RW1wdHkoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckZyb250ZW5kQVBJRGlzcGF0Y2hlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yRnJvbnRlbmRBUElEaXNwYXRjaGVyLmNwcAppbmRleCA2NDU0MGI1OWI4YWFlODNjMTg4
NjcxZTgxZDE5MGUxYmE2YjgxYjYyLi4wOWVkOTA0ZjNhYTE2M2Y1YTUyYzU1YzBjOGQ3MDc5Y2E2
NWFmZGRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJv
bnRlbmRBUElEaXNwYXRjaGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yRnJvbnRlbmRBUElEaXNwYXRjaGVyLmNwcApAQCAtMTk1LDcgKzE5NSw3IEBAIHZvaWQg
SW5zcGVjdG9yRnJvbnRlbmRBUElEaXNwYXRjaGVyOjpldmFsdWF0ZU9yUXVldWVFeHByZXNzaW9u
KGNvbnN0IFN0cmluZyYgZXhwCiAgICAgICAgIGlmICghd2Vha1RoaXMpCiAgICAgICAgICAgICBy
ZXR1cm47CiAKLSAgICAgICAgYXV0byBzdHJvbmdUaGlzID0gbWFrZVJlZigqd2Vha1RoaXMpOwor
ICAgICAgICBSZWYgc3Ryb25nVGhpcyA9IHsgKndlYWtUaGlzIH07CiAgICAgICAgIGlmICghc3Ry
b25nVGhpcy0+bV9wZW5kaW5nUmVzcG9uc2VzLnNpemUoKSkKICAgICAgICAgICAgIHJldHVybjsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKaW5kZXggNTk2ODEzZmEy
ZDgwZGU2YjMxODhiNzgwZDFiYzAyZTU0ODMxNDc5Ny4uNjE1OWVlYzcwNWQwYjA5Y2YxNDllMzAz
YzM4MjcxMGQ3YTRjM2Y2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3Vt
ZW50TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIu
Y3BwCkBAIC03MjEsNyArNzIxLDcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6d2lsbFNlbmRSZXF1
ZXN0KFJlc291cmNlUmVxdWVzdCYmIG5ld1JlcXVlc3QsIGNvbnN0IFJlc291cmMKICAgICBpZiAo
IWRpZFJlY2VpdmVSZWRpcmVjdFJlc3BvbnNlKQogICAgICAgICByZXR1cm4gY29tcGxldGlvbkhh
bmRsZXIoV1RGTW92ZShuZXdSZXF1ZXN0KSk7CiAKLSAgICBhdXRvIG5hdmlnYXRpb25Qb2xpY3lD
b21wbGV0aW9uSGFuZGxlciA9IFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwg
cHJvdGVjdGVkRnJhbWUgPSBtYWtlUmVmKCptX2ZyYW1lKSwgY29tcGxldGlvbkhhbmRsZXIgPSBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFdl
YWtQdHI8Rm9ybVN0YXRlPiYmLCBOYXZpZ2F0aW9uUG9saWN5RGVjaXNpb24gbmF2aWdhdGlvblBv
bGljeURlY2lzaW9uKSBtdXRhYmxlIHsKKyAgICBhdXRvIG5hdmlnYXRpb25Qb2xpY3lDb21wbGV0
aW9uSGFuZGxlciA9IFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgcHJvdGVj
dGVkRnJhbWUgPSBSZWYgeyAqbV9mcmFtZSB9LCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpXSAoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgV2Vha1B0cjxG
b3JtU3RhdGU+JiYsIE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbiBuYXZpZ2F0aW9uUG9saWN5RGVj
aXNpb24pIG11dGFibGUgewogICAgICAgICBtX3dhaXRpbmdGb3JOYXZpZ2F0aW9uUG9saWN5ID0g
ZmFsc2U7CiAgICAgICAgIHN3aXRjaCAobmF2aWdhdGlvblBvbGljeURlY2lzaW9uKSB7CiAgICAg
ICAgIGNhc2UgTmF2aWdhdGlvblBvbGljeURlY2lzaW9uOjpJZ25vcmVMb2FkOgpAQCAtNzg2LDcg
Kzc4Niw3IEBAIHN0YXRpYyBzdGQ6OnR1cGxlPFJlZjxTZWN1cml0eU9yaWdpbj4sIENyb3NzT3Jp
Z2luT3BlbmVyUG9saWN5PiBjb21wdXRlUmVzcG9uc2VPCiAgICAgLy8gaWYgdGhlIGluaXRpYXRv
ciBhbmQgaXRzIHRvcCBsZXZlbCBkb2N1bWVudCBhcmUgc2FtZS1vcmlnaW4sIG9yIGRlZmF1bHQg
KHVuc2FmZS1ub25lKSBvdGhlcndpc2UuCiAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3doYXR3
Zy9odG1sL2lzc3Vlcy82OTEzCiAgICAgaWYgKFNlY3VyaXR5UG9saWN5OjpzaG91bGRJbmhlcml0
U2VjdXJpdHlPcmlnaW5Gcm9tT3duZXIocmVzcG9uc2UudXJsKCkpICYmIHJlcXVlc3RlcikKLSAg
ICAgICAgcmV0dXJuIHN0ZDo6bWFrZV90dXBsZShtYWtlUmVmKHJlcXVlc3Rlci0+c2VjdXJpdHlP
cmlnaW4oKSksIHJlcXVlc3Rlci0+c2VjdXJpdHlPcmlnaW4oKS5pc1NhbWVPcmlnaW5BcyhyZXF1
ZXN0ZXItPnRvcE9yaWdpbigpKSA/IHJlcXVlc3Rlci0+Y3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3ko
KSA6IENyb3NzT3JpZ2luT3BlbmVyUG9saWN5IHsgfSk7CisgICAgICAgIHJldHVybiBzdGQ6Om1h
a2VfdHVwbGUoUmVmIHsgcmVxdWVzdGVyLT5zZWN1cml0eU9yaWdpbigpIH0sIHJlcXVlc3Rlci0+
c2VjdXJpdHlPcmlnaW4oKS5pc1NhbWVPcmlnaW5BcyhyZXF1ZXN0ZXItPnRvcE9yaWdpbigpKSA/
IHJlcXVlc3Rlci0+Y3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3koKSA6IENyb3NzT3JpZ2luT3BlbmVy
UG9saWN5IHsgfSk7CiAKICAgICAvLyBJZiB0aGUgSFRUUCByZXNwb25zZSBjb250YWlucyBhIENT
UCBoZWFkZXIsIGl0IG1heSBzZXQgc2FuZGJveCBmbGFncywgd2hpY2ggd291bGQgY2F1c2UgdGhl
IG9yaWdpbiB0byBiZWNvbWUgdW5pcXVlLgogICAgIGF1dG8gcmVzcG9uc2VPcmlnaW4gPSByZXNw
b25zZUNTUCAmJiByZXNwb25zZUNTUC0+c2FuZGJveEZsYWdzKCkgIT0gU2FuZGJveE5vbmUgPyBT
ZWN1cml0eU9yaWdpbjo6Y3JlYXRlVW5pcXVlKCkgOiBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKHJl
c3BvbnNlLnVybCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVu
dFdyaXRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRXcml0ZXIuY3BwCmlu
ZGV4IDgwYTExMzM2NTQ3M2U3MGYyOTQ5MTU4ODZmYjY3MjY4YTI1Nzk5ODMuLjg5MDk1ZmUzZGU3
MzI4OGUyNzMxYzEyYWYzZDI2MTY4ZjdjYzM1MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Eb2N1bWVudFdyaXRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Rv
Y3VtZW50V3JpdGVyLmNwcApAQCAtMjAyLDcgKzIwMiw3IEBAIGJvb2wgRG9jdW1lbnRXcml0ZXI6
OmJlZ2luKGNvbnN0IFVSTCYgdXJsUmVmZXJlbmNlLCBib29sIGRpc3BhdGNoLCBEb2N1bWVudCog
b3duCiAgICAgICAgIGRvY3VtZW50LT5jb250ZW50U2VjdXJpdHlQb2xpY3koKS0+c2V0SW5zZWN1
cmVOYXZpZ2F0aW9uUmVxdWVzdHNUb1VwZ3JhZGUoZXhpc3RpbmdEb2N1bWVudC0+Y29udGVudFNl
Y3VyaXR5UG9saWN5KCktPnRha2VOYXZpZ2F0aW9uUmVxdWVzdHNUb1VwZ3JhZGUoKSk7CiAgICAg
fQogCi0gICAgYXV0byBwcm90ZWN0ZWRGcmFtZSA9IG1ha2VSZWYoKm1fZnJhbWUpOworICAgIFJl
ZiBwcm90ZWN0ZWRGcmFtZSA9ICptX2ZyYW1lOwogCiAgICAgbV9mcmFtZS0+bG9hZGVyKCkuZGlk
QmVnaW5Eb2N1bWVudChkaXNwYXRjaCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9GcmFtZUxvYWRSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxv
YWRSZXF1ZXN0LmNwcAppbmRleCBkYTA3YjVhOWEwNmJjMTYzZGJlNjk5ZWQ5N2MxZTkxNmQ1MGVj
MDQxLi45YmNhNDFiM2JlZThmMzU1OTBhOTBmYWY4N2RlYTYwNTQ5Zjg3OTNjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkUmVxdWVzdC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZFJlcXVlc3QuY3BwCkBAIC0zOCw4ICszOCw4IEBACiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIEZyYW1lTG9hZFJlcXVlc3Q6OkZyYW1lTG9hZFJlcXVlc3Qo
RG9jdW1lbnQmIHJlcXVlc3RlciwgU2VjdXJpdHlPcmlnaW4mIHJlcXVlc3RlclNlY3VyaXR5T3Jp
Z2luLCBSZXNvdXJjZVJlcXVlc3QmJiByZXNvdXJjZVJlcXVlc3QsIGNvbnN0IFN0cmluZyYgZnJh
bWVOYW1lLCBJbml0aWF0ZWRCeU1haW5GcmFtZSBpbml0aWF0ZWRCeU1haW5GcmFtZSwgY29uc3Qg
QXRvbVN0cmluZyYgZG93bmxvYWRBdHRyaWJ1dGUsIGNvbnN0IFN5c3RlbVByZXZpZXdJbmZvJiBz
eXN0ZW1QcmV2aWV3SW5mbykKLSAgICA6IG1fcmVxdWVzdGVyIHsgbWFrZVJlZihyZXF1ZXN0ZXIp
IH0KLSAgICAsIG1fcmVxdWVzdGVyU2VjdXJpdHlPcmlnaW4geyBtYWtlUmVmKHJlcXVlc3RlclNl
Y3VyaXR5T3JpZ2luKSB9CisgICAgOiBtX3JlcXVlc3RlciB7IHJlcXVlc3RlciB9CisgICAgLCBt
X3JlcXVlc3RlclNlY3VyaXR5T3JpZ2luIHsgcmVxdWVzdGVyU2VjdXJpdHlPcmlnaW4gfQogICAg
ICwgbV9yZXNvdXJjZVJlcXVlc3QgeyBXVEZNb3ZlKHJlc291cmNlUmVxdWVzdCkgfQogICAgICwg
bV9mcmFtZU5hbWUgeyBmcmFtZU5hbWUgfQogICAgICwgbV9kb3dubG9hZEF0dHJpYnV0ZSB7IGRv
d25sb2FkQXR0cmlidXRlIH0KQEAgLTQ5LDggKzQ5LDggQEAgRnJhbWVMb2FkUmVxdWVzdDo6RnJh
bWVMb2FkUmVxdWVzdChEb2N1bWVudCYgcmVxdWVzdGVyLCBTZWN1cml0eU9yaWdpbiYgcmVxdWVz
dGUKIH0KIAogRnJhbWVMb2FkUmVxdWVzdDo6RnJhbWVMb2FkUmVxdWVzdChGcmFtZSYgZnJhbWUs
IGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVzb3VyY2VSZXF1ZXN0LCBjb25zdCBTdWJzdGl0dXRl
RGF0YSYgc3Vic3RpdHV0ZURhdGEpCi0gICAgOiBtX3JlcXVlc3RlciB7IG1ha2VSZWYoKmZyYW1l
LmRvY3VtZW50KCkpIH0KLSAgICAsIG1fcmVxdWVzdGVyU2VjdXJpdHlPcmlnaW4geyBtYWtlUmVm
KGZyYW1lLmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCkpIH0KKyAgICA6IG1fcmVxdWVzdGVy
IHsgKmZyYW1lLmRvY3VtZW50KCkgfQorICAgICwgbV9yZXF1ZXN0ZXJTZWN1cml0eU9yaWdpbiB7
IGZyYW1lLmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCkgfQogICAgICwgbV9yZXNvdXJjZVJl
cXVlc3QgeyByZXNvdXJjZVJlcXVlc3QgfQogICAgICwgbV9zdWJzdGl0dXRlRGF0YSB7IHN1YnN0
aXR1dGVEYXRhIH0KIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxv
YWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCmluZGV4IDRh
ZDQ1YjZlZDRmNWUwN2JjODA3ZmE2Zjk1Yzk3NjNhMDg5YmZkNjMuLjM3ZTUxMTM3OTI0NWY5ZjU4
ZDQxODA5NDgzMTQ2NzE1YjRmNjBiZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9GcmFtZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVy
LmNwcApAQCAtNjk1LDcgKzY5NSw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmNsZWFyKERvY3VtZW50
KiBuZXdEb2N1bWVudCwgYm9vbCBjbGVhcldpbmRvd1Byb3BlcnRpZXMsIGJvb2wKIAogdm9pZCBG
cmFtZUxvYWRlcjo6cmVjZWl2ZWRGaXJzdERhdGEoKQogewotICAgIGF1dG8gcHJvdGVjdGVkRnJh
bWUgPSBtYWtlUmVmKG1fZnJhbWUpOworICAgIFJlZiBwcm90ZWN0ZWRGcmFtZSB7IG1fZnJhbWUg
fTsKICAgICAKICAgICBkaXNwYXRjaERpZENvbW1pdExvYWQoc3RkOjpudWxsb3B0LCBzdGQ6Om51
bGxvcHQpOwogICAgIGRpc3BhdGNoRGlkQ2xlYXJXaW5kb3dPYmplY3RzSW5BbGxXb3JsZHMoKTsK
QEAgLTEyMzYsNyArMTIzNiw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmxvYWRGcmFtZVJlcXVlc3Qo
RnJhbWVMb2FkUmVxdWVzdCYmIHJlcXVlc3QsIEV2ZW50KiBldmVudCwgUmVmCiAgICAgRlJBTUVM
T0FERVJfUkVMRUFTRV9MT0coUmVzb3VyY2VMb2FkaW5nLCAibG9hZEZyYW1lUmVxdWVzdDogZnJh
bWUgbG9hZCBzdGFydGVkIik7CiAKICAgICAvLyBQcm90ZWN0IGZyYW1lIGZyb20gZ2V0dGluZyBi
bG93biBhd2F5IGluc2lkZSBkaXNwYXRjaEJlZm9yZUxvYWRFdmVudCBpbiBsb2FkV2l0aERvY3Vt
ZW50TG9hZGVyLgotICAgIGF1dG8gcHJvdGVjdEZyYW1lID0gbWFrZVJlZihtX2ZyYW1lKTsKKyAg
ICBSZWYgcHJvdGVjdGVkRnJhbWUgeyBtX2ZyYW1lIH07CiAKICAgICBVUkwgdXJsID0gcmVxdWVz
dC5yZXNvdXJjZVJlcXVlc3QoKS51cmwoKTsKIApAQCAtMTI3MCw3ICsxMjcwLDcgQEAgdm9pZCBG
cmFtZUxvYWRlcjo6bG9hZEZyYW1lUmVxdWVzdChGcmFtZUxvYWRSZXF1ZXN0JiYgcmVxdWVzdCwg
RXZlbnQqIGV2ZW50LCBSZWYKICAgICBlbHNlCiAgICAgICAgIGxvYWRUeXBlID0gRnJhbWVMb2Fk
VHlwZTo6U3RhbmRhcmQ7CiAKLSAgICBhdXRvIGNvbXBsZXRpb25IYW5kbGVyID0gW3RoaXMsIHBy
b3RlY3RlZEZyYW1lID0gbWFrZVJlZihtX2ZyYW1lKSwgZm9ybVN0YXRlID0gbWFrZVdlYWtQdHIo
Zm9ybVN0YXRlLmdldCgpKSwgZnJhbWVOYW1lID0gcmVxdWVzdC5mcmFtZU5hbWUoKV0geworICAg
IGF1dG8gY29tcGxldGlvbkhhbmRsZXIgPSBbdGhpcywgcHJvdGVjdGVkRnJhbWUgPSBSZWYgeyBt
X2ZyYW1lIH0sIGZvcm1TdGF0ZSA9IG1ha2VXZWFrUHRyKGZvcm1TdGF0ZS5nZXQoKSksIGZyYW1l
TmFtZSA9IHJlcXVlc3QuZnJhbWVOYW1lKCldIHsKICAgICAgICAgLy8gRklYTUU6IEl0J3MgcG9z
c2libGUgdGhpcyB0YXJnZXRGcmFtZSB3aWxsIG5vdCBiZSB0aGUgc2FtZSBmcmFtZSB0aGF0IHdh
cyB0YXJnZXRlZCBieSB0aGUgYWN0dWFsCiAgICAgICAgIC8vIGxvYWQgaWYgZnJhbWUgbmFtZXMg
aGF2ZSBjaGFuZ2VkLgogICAgICAgICBGcmFtZSogc291cmNlRnJhbWUgPSBmb3JtU3RhdGUgPyBm
b3JtU3RhdGUtPnNvdXJjZURvY3VtZW50KCkuZnJhbWUoKSA6ICZtX2ZyYW1lOwpAQCAtMTQwMSw3
ICsxNDAxLDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZFVSTChGcmFtZUxvYWRSZXF1ZXN0JiYg
ZnJhbWVMb2FkUmVxdWVzdCwgY29uc3QgU3RyaW5nJiByZWYKICAgICAgICAgcG9saWN5Q2hlY2tl
cigpLnN0b3BDaGVjaygpOwogICAgICAgICBwb2xpY3lDaGVja2VyKCkuc2V0TG9hZFR5cGUobmV3
TG9hZFR5cGUpOwogICAgICAgICBSRUxFQVNFX0FTU0VSVCghaXNCYWNrRm9yd2FyZExvYWRUeXBl
KG5ld0xvYWRUeXBlKSB8fCBoaXN0b3J5KCkucHJvdmlzaW9uYWxJdGVtKCkpOwotICAgICAgICBw
b2xpY3lDaGVja2VyKCkuY2hlY2tOYXZpZ2F0aW9uUG9saWN5KFdURk1vdmUocmVxdWVzdCksIFJl
c291cmNlUmVzcG9uc2UgeyB9IC8qIHJlZGlyZWN0UmVzcG9uc2UgKi8sIG9sZERvY3VtZW50TG9h
ZGVyLmdldCgpLCBXVEZNb3ZlKGZvcm1TdGF0ZSksIFt0aGlzLCBwcm90ZWN0ZWRGcmFtZSA9IG1h
a2VSZWYobV9mcmFtZSldIChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFdlYWtQdHI8
Rm9ybVN0YXRlPiYmLCBOYXZpZ2F0aW9uUG9saWN5RGVjaXNpb24gbmF2aWdhdGlvblBvbGljeURl
Y2lzaW9uKSB7CisgICAgICAgIHBvbGljeUNoZWNrZXIoKS5jaGVja05hdmlnYXRpb25Qb2xpY3ko
V1RGTW92ZShyZXF1ZXN0KSwgUmVzb3VyY2VSZXNwb25zZSB7IH0gLyogcmVkaXJlY3RSZXNwb25z
ZSAqLywgb2xkRG9jdW1lbnRMb2FkZXIuZ2V0KCksIFdURk1vdmUoZm9ybVN0YXRlKSwgW3RoaXMs
IHByb3RlY3RlZEZyYW1lID0gUmVmIHsgbV9mcmFtZSB9XSAoY29uc3QgUmVzb3VyY2VSZXF1ZXN0
JiByZXF1ZXN0LCBXZWFrUHRyPEZvcm1TdGF0ZT4mJiwgTmF2aWdhdGlvblBvbGljeURlY2lzaW9u
IG5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbikgewogICAgICAgICAgICAgY29udGludWVGcmFnbWVu
dFNjcm9sbEFmdGVyTmF2aWdhdGlvblBvbGljeShyZXF1ZXN0LCBuYXZpZ2F0aW9uUG9saWN5RGVj
aXNpb24gPT0gTmF2aWdhdGlvblBvbGljeURlY2lzaW9uOjpDb250aW51ZUxvYWQpOwogICAgICAg
ICB9LCBQb2xpY3lEZWNpc2lvbk1vZGU6OlN5bmNocm9ub3VzKTsKICAgICAgICAgcmV0dXJuOwpA
QCAtMTQxNCw3ICsxNDE0LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZFVSTChGcmFtZUxvYWRS
ZXF1ZXN0JiYgZnJhbWVMb2FkUmVxdWVzdCwgY29uc3QgU3RyaW5nJiByZWYKICAgICBpZiAoaXNT
eXN0ZW1QcmV2aWV3KQogICAgICAgICByZXF1ZXN0LnNldFN5c3RlbVByZXZpZXdJbmZvKGZyYW1l
TG9hZFJlcXVlc3Quc3lzdGVtUHJldmlld0luZm8oKSk7CiAjZW5kaWYKLSAgICBsb2FkV2l0aE5h
dmlnYXRpb25BY3Rpb24ocmVxdWVzdCwgV1RGTW92ZShhY3Rpb24pLCBuZXdMb2FkVHlwZSwgV1RG
TW92ZShmb3JtU3RhdGUpLCBhbGxvd05hdmlnYXRpb25Ub0ludmFsaWRVUkwsIFt0aGlzLCBpc1Jl
ZGlyZWN0LCBzYW1lVVJMLCBuZXdMb2FkVHlwZSwgcHJvdGVjdGVkRnJhbWUgPSBtYWtlUmVmKG1f
ZnJhbWUpLCBjb21wbGV0aW9uSGFuZGxlciA9IGNvbXBsZXRpb25IYW5kbGVyQ2FsbGVyLnJlbGVh
c2UoKV0gKCkgbXV0YWJsZSB7CisgICAgbG9hZFdpdGhOYXZpZ2F0aW9uQWN0aW9uKHJlcXVlc3Qs
IFdURk1vdmUoYWN0aW9uKSwgbmV3TG9hZFR5cGUsIFdURk1vdmUoZm9ybVN0YXRlKSwgYWxsb3dO
YXZpZ2F0aW9uVG9JbnZhbGlkVVJMLCBbdGhpcywgaXNSZWRpcmVjdCwgc2FtZVVSTCwgbmV3TG9h
ZFR5cGUsIHByb3RlY3RlZEZyYW1lID0gUmVmIHsgbV9mcmFtZSB9LCBjb21wbGV0aW9uSGFuZGxl
ciA9IGNvbXBsZXRpb25IYW5kbGVyQ2FsbGVyLnJlbGVhc2UoKV0gKCkgbXV0YWJsZSB7CiAgICAg
ICAgIGlmIChpc1JlZGlyZWN0KSB7CiAgICAgICAgICAgICBtX3F1aWNrUmVkaXJlY3RDb21pbmcg
PSBmYWxzZTsKICAgICAgICAgICAgIGlmIChtX3Byb3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXIpCkBA
IC0xNjA0LDcgKzE2MDQsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpsb2FkV2l0aERvY3VtZW50TG9h
ZGVyKERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIEZyYW1lTG9hZFR5cGUgdAogICAgICAgICBvbGRE
b2N1bWVudExvYWRlci0+c2V0TGFzdENoZWNrZWRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCgpKTsK
ICAgICAgICAgcG9saWN5Q2hlY2tlcigpLnN0b3BDaGVjaygpOwogICAgICAgICBSRUxFQVNFX0FT
U0VSVCghaXNCYWNrRm9yd2FyZExvYWRUeXBlKHBvbGljeUNoZWNrZXIoKS5sb2FkVHlwZSgpKSB8
fCBoaXN0b3J5KCkucHJvdmlzaW9uYWxJdGVtKCkpOwotICAgICAgICBwb2xpY3lDaGVja2VyKCku
Y2hlY2tOYXZpZ2F0aW9uUG9saWN5KFJlc291cmNlUmVxdWVzdChsb2FkZXItPnJlcXVlc3QoKSks
IFJlc291cmNlUmVzcG9uc2UgeyB9ICAvKiByZWRpcmVjdFJlc3BvbnNlICovLCBvbGREb2N1bWVu
dExvYWRlci5nZXQoKSwgV1RGTW92ZShmb3JtU3RhdGUpLCBbdGhpcywgcHJvdGVjdGVkRnJhbWUg
PSBtYWtlUmVmKG1fZnJhbWUpXSAoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBXZWFr
UHRyPEZvcm1TdGF0ZT4mJiwgTmF2aWdhdGlvblBvbGljeURlY2lzaW9uIG5hdmlnYXRpb25Qb2xp
Y3lEZWNpc2lvbikgeworICAgICAgICBwb2xpY3lDaGVja2VyKCkuY2hlY2tOYXZpZ2F0aW9uUG9s
aWN5KFJlc291cmNlUmVxdWVzdChsb2FkZXItPnJlcXVlc3QoKSksIFJlc291cmNlUmVzcG9uc2Ug
eyB9ICAvKiByZWRpcmVjdFJlc3BvbnNlICovLCBvbGREb2N1bWVudExvYWRlci5nZXQoKSwgV1RG
TW92ZShmb3JtU3RhdGUpLCBbdGhpcywgcHJvdGVjdGVkRnJhbWUgPSBSZWYgeyBtX2ZyYW1lIH1d
IChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFdlYWtQdHI8Rm9ybVN0YXRlPiYmLCBO
YXZpZ2F0aW9uUG9saWN5RGVjaXNpb24gbmF2aWdhdGlvblBvbGljeURlY2lzaW9uKSB7CiAgICAg
ICAgICAgICBjb250aW51ZUZyYWdtZW50U2Nyb2xsQWZ0ZXJOYXZpZ2F0aW9uUG9saWN5KHJlcXVl
c3QsIG5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbiA9PSBOYXZpZ2F0aW9uUG9saWN5RGVjaXNpb246
OkNvbnRpbnVlTG9hZCk7CiAgICAgICAgIH0sIFBvbGljeURlY2lzaW9uTW9kZTo6U3luY2hyb25v
dXMpOwogICAgICAgICByZXR1cm47CkBAIC0xNjM5LDcgKzE2MzksNyBAQCB2b2lkIEZyYW1lTG9h
ZGVyOjpsb2FkV2l0aERvY3VtZW50TG9hZGVyKERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIEZyYW1l
TG9hZFR5cGUgdAogICAgIH0KIAogICAgIFJFTEVBU0VfQVNTRVJUKCFpc0JhY2tGb3J3YXJkTG9h
ZFR5cGUocG9saWN5Q2hlY2tlcigpLmxvYWRUeXBlKCkpIHx8IGhpc3RvcnkoKS5wcm92aXNpb25h
bEl0ZW0oKSk7Ci0gICAgcG9saWN5Q2hlY2tlcigpLmNoZWNrTmF2aWdhdGlvblBvbGljeShSZXNv
dXJjZVJlcXVlc3QobG9hZGVyLT5yZXF1ZXN0KCkpLCBSZXNvdXJjZVJlc3BvbnNlIHsgfSAvKiBy
ZWRpcmVjdFJlc3BvbnNlICovLCBsb2FkZXIsIFdURk1vdmUoZm9ybVN0YXRlKSwgW3RoaXMsIHBy
b3RlY3RlZEZyYW1lID0gbWFrZVJlZihtX2ZyYW1lKSwgYWxsb3dOYXZpZ2F0aW9uVG9JbnZhbGlk
VVJMLCBjb21wbGV0aW9uSGFuZGxlciA9IGNvbXBsZXRpb25IYW5kbGVyQ2FsbGVyLnJlbGVhc2Uo
KV0gKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgV2Vha1B0cjxGb3JtU3RhdGU+JiYg
Zm9ybVN0YXRlLCBOYXZpZ2F0aW9uUG9saWN5RGVjaXNpb24gbmF2aWdhdGlvblBvbGljeURlY2lz
aW9uKSBtdXRhYmxlIHsKKyAgICBwb2xpY3lDaGVja2VyKCkuY2hlY2tOYXZpZ2F0aW9uUG9saWN5
KFJlc291cmNlUmVxdWVzdChsb2FkZXItPnJlcXVlc3QoKSksIFJlc291cmNlUmVzcG9uc2UgeyB9
IC8qIHJlZGlyZWN0UmVzcG9uc2UgKi8sIGxvYWRlciwgV1RGTW92ZShmb3JtU3RhdGUpLCBbdGhp
cywgcHJvdGVjdGVkRnJhbWUgPSBSZWYgeyBtX2ZyYW1lIH0sIGFsbG93TmF2aWdhdGlvblRvSW52
YWxpZFVSTCwgY29tcGxldGlvbkhhbmRsZXIgPSBjb21wbGV0aW9uSGFuZGxlckNhbGxlci5yZWxl
YXNlKCldIChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFdlYWtQdHI8Rm9ybVN0YXRl
PiYmIGZvcm1TdGF0ZSwgTmF2aWdhdGlvblBvbGljeURlY2lzaW9uIG5hdmlnYXRpb25Qb2xpY3lE
ZWNpc2lvbikgbXV0YWJsZSB7CiAgICAgICAgIGNvbnRpbnVlTG9hZEFmdGVyTmF2aWdhdGlvblBv
bGljeShyZXF1ZXN0LCBmb3JtU3RhdGUuZ2V0KCksIG5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbiwg
YWxsb3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJMKTsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
KTsKICAgICB9LCBQb2xpY3lEZWNpc2lvbk1vZGU6OkFzeW5jaHJvbm91cyk7CkBAIC0yMzM0LDcg
KzIzMzQsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpvcGVuKENhY2hlZEZyYW1lQmFzZSYgY2FjaGVk
RnJhbWUpCiAgICAgICAgIHVybC5zZXRQYXRoKCIvIik7CiAKICAgICBzdGFydGVkKCk7Ci0gICAg
YXV0byBkb2N1bWVudCA9IG1ha2VSZWYoKmNhY2hlZEZyYW1lLmRvY3VtZW50KCkpOworICAgIFJl
ZiBkb2N1bWVudCA9ICpjYWNoZWRGcmFtZS5kb2N1bWVudCgpOwogICAgIEFTU0VSVChkb2N1bWVu
dC0+ZG9tV2luZG93KCkpOwogCiAgICAgY2xlYXIoZG9jdW1lbnQucHRyKCksIHRydWUsIHRydWUs
IGNhY2hlZEZyYW1lLmlzTWFpbkZyYW1lKCkpOwpAQCAtMzA5NCw3ICszMDk0LDcgQEAgdm9pZCBG
cmFtZUxvYWRlcjo6bG9hZFBvc3RSZXF1ZXN0KEZyYW1lTG9hZFJlcXVlc3QmJiByZXF1ZXN0LCBj
b25zdCBTdHJpbmcmIHJlZmUKIAogICAgIC8vIG11c3QgZ3JhYiB0aGlzIG5vdywgc2luY2UgdGhp
cyBsb2FkIG1heSBzdG9wIHRoZSBwcmV2aW91cyBsb2FkIGFuZCBjbGVhciB0aGlzIGZsYWcKICAg
ICBib29sIGlzUmVkaXJlY3QgPSBtX3F1aWNrUmVkaXJlY3RDb21pbmc7Ci0gICAgbG9hZFdpdGhO
YXZpZ2F0aW9uQWN0aW9uKHdvcmtpbmdSZXNvdXJjZVJlcXVlc3QsIFdURk1vdmUoYWN0aW9uKSwg
bG9hZFR5cGUsIFdURk1vdmUoZm9ybVN0YXRlKSwgYWxsb3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJM
LCBbdGhpcywgaXNSZWRpcmVjdCwgcHJvdGVjdGVkRnJhbWUgPSBtYWtlUmVmKG1fZnJhbWUpLCBj
b21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoKSBtdXRhYmxl
IHsKKyAgICBsb2FkV2l0aE5hdmlnYXRpb25BY3Rpb24od29ya2luZ1Jlc291cmNlUmVxdWVzdCwg
V1RGTW92ZShhY3Rpb24pLCBsb2FkVHlwZSwgV1RGTW92ZShmb3JtU3RhdGUpLCBhbGxvd05hdmln
YXRpb25Ub0ludmFsaWRVUkwsIFt0aGlzLCBpc1JlZGlyZWN0LCBwcm90ZWN0ZWRGcmFtZSA9IFJl
ZiB7IG1fZnJhbWUgfSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKV0gKCkgbXV0YWJsZSB7CiAgICAgICAgIGlmIChpc1JlZGlyZWN0KSB7CiAgICAgICAgICAg
ICBtX3F1aWNrUmVkaXJlY3RDb21pbmcgPSBmYWxzZTsKICAgICAgICAgICAgIGlmIChtX3Byb3Zp
c2lvbmFsRG9jdW1lbnRMb2FkZXIpCkBAIC0zNTI0LDcgKzM1MjQsNyBAQCB2b2lkIEZyYW1lTG9h
ZGVyOjpjb250aW51ZUxvYWRBZnRlck5hdmlnYXRpb25Qb2xpY3koY29uc3QgUmVzb3VyY2VSZXF1
ZXN0JiByZXF1ZQogICAgICAgICBkaWFnbm9zdGljTG9nZ2luZ0NsaWVudC5sb2dEaWFnbm9zdGlj
TWVzc2FnZVdpdGhSZXN1bHQoRGlhZ25vc3RpY0xvZ2dpbmdLZXlzOjpiYWNrRm9yd2FyZENhY2hl
S2V5KCksIERpYWdub3N0aWNMb2dnaW5nS2V5czo6cmV0cmlldmFsS2V5KCksIERpYWdub3N0aWNM
b2dnaW5nUmVzdWx0RmFpbCwgU2hvdWxkU2FtcGxlOjpZZXMpOwogICAgIH0KIAotICAgIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4gY29tcGxldGlvbkhhbmRsZXIgPSBbdGhpcywgcHJvdGVjdGVk
RnJhbWUgPSBtYWtlUmVmKG1fZnJhbWUpXSAoKSBtdXRhYmxlIHsKKyAgICBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+IGNvbXBsZXRpb25IYW5kbGVyID0gW3RoaXMsIHByb3RlY3RlZEZyYW1lID0g
UmVmIHsgbV9mcmFtZSB9XSAoKSBtdXRhYmxlIHsKICAgICAgICAgaWYgKCFtX3Byb3Zpc2lvbmFs
RG9jdW1lbnRMb2FkZXIpIHsKICAgICAgICAgICAgIEZSQU1FTE9BREVSX1JFTEVBU0VfTE9HKFJl
c291cmNlTG9hZGluZywgImNvbnRpbnVlTG9hZEFmdGVyTmF2aWdhdGlvblBvbGljeSAoY29tcGxl
dGlvbkhhbmRsZXIpOiBGcmFtZSBsb2FkIGNhbmNlbGVkIC0gbm8gcHJvdmlzaW9uYWwgZG9jdW1l
bnQgbG9hZGVyIGJlZm9yZSBwcmVwYXJlRm9yTG9hZFN0YXJ0Iik7CiAgICAgICAgICAgICByZXR1
cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2aWdhdGlvblNjaGVkdWxl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2aWdhdGlvblNjaGVkdWxlci5jcHAKaW5k
ZXggYjYxNmJhN2RlZmUwYjg1M2E4ODlkNjc5ZDU0ZDBmM2MzODg5MWE0Yi4uMmY5ZWUyNWViZDUy
NDVjMWJiYzNlMWI2NTMyYzg0MGQ5MzA1ODllMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL05hdmlnYXRpb25TY2hlZHVsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9OYXZpZ2F0aW9uU2NoZWR1bGVyLmNwcApAQCAtMTIwLDcgKzEyMCw3IEBAIGNsYXNzIFNjaGVk
dWxlZFVSTE5hdmlnYXRpb24gOiBwdWJsaWMgU2NoZWR1bGVkTmF2aWdhdGlvbiB7CiBwcm90ZWN0
ZWQ6CiAgICAgU2NoZWR1bGVkVVJMTmF2aWdhdGlvbihEb2N1bWVudCYgaW5pdGlhdGluZ0RvY3Vt
ZW50LCBkb3VibGUgZGVsYXksIFNlY3VyaXR5T3JpZ2luKiBzZWN1cml0eU9yaWdpbiwgY29uc3Qg
VVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsIExvY2tIaXN0b3J5IGxvY2tIaXN0b3J5
LCBMb2NrQmFja0ZvcndhcmRMaXN0IGxvY2tCYWNrRm9yd2FyZExpc3QsIGJvb2wgZHVyaW5nTG9h
ZCwgYm9vbCBpc0xvY2F0aW9uQ2hhbmdlKQogICAgICAgICA6IFNjaGVkdWxlZE5hdmlnYXRpb24o
ZGVsYXksIGxvY2tIaXN0b3J5LCBsb2NrQmFja0ZvcndhcmRMaXN0LCBkdXJpbmdMb2FkLCBpc0xv
Y2F0aW9uQ2hhbmdlLCBpbml0aWF0aW5nRG9jdW1lbnQuc2hvdWxkT3BlbkV4dGVybmFsVVJMc1Bv
bGljeVRvUHJvcGFnYXRlKCkpCi0gICAgICAgICwgbV9pbml0aWF0aW5nRG9jdW1lbnQgeyBtYWtl
UmVmKGluaXRpYXRpbmdEb2N1bWVudCkgfQorICAgICAgICAsIG1faW5pdGlhdGluZ0RvY3VtZW50
IHsgaW5pdGlhdGluZ0RvY3VtZW50IH0KICAgICAgICAgLCBtX3NlY3VyaXR5T3JpZ2luIHsgc2Vj
dXJpdHlPcmlnaW4gfQogICAgICAgICAsIG1fdXJsIHsgdXJsIH0KICAgICAgICAgLCBtX3JlZmVy
cmVyIHsgcmVmZXJyZXIgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1BpbmdM
b2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1BpbmdMb2FkZXIuY3BwCmluZGV4IDFm
Y2RiNzNiYzkzYzFjNzJjYWEyMDk4NjY4MjllNGZiMDRmZjljZmUuLjc5MWJjOTMyYmRjYzk4MTI2
MDZmOGQ1NGI0Mzk5YzNiNjc5M2Q0ZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9QaW5nTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUGluZ0xvYWRlci5j
cHAKQEAgLTIyNSw3ICsyMjUsNyBAQCB2b2lkIFBpbmdMb2FkZXI6OnN0YXJ0UGluZ0xvYWQoRnJh
bWUmIGZyYW1lLCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIEhUVFBIZWFkZQogICAgIGlmIChw
bGF0Zm9ybVN0cmF0ZWdpZXMoKS0+bG9hZGVyU3RyYXRlZ3koKS0+dXNlUGluZ0xvYWQoKSkgewog
ICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxTZW5kUmVxdWVzdE9mVHlwZSgm
ZnJhbWUsIGlkZW50aWZpZXIsIGZyYW1lLmxvYWRlcigpLmFjdGl2ZURvY3VtZW50TG9hZGVyKCks
IHJlcXVlc3QsIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6TG9hZFR5cGU6OlBpbmcpOwogCi0g
ICAgICAgIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5sb2FkZXJTdHJhdGVneSgpLT5zdGFydFBpbmdM
b2FkKGZyYW1lLCByZXF1ZXN0LCBXVEZNb3ZlKG9yaWdpbmFsUmVxdWVzdEhlYWRlcnMpLCBvcHRp
b25zLCBwb2xpY3lDaGVjaywgW3Byb3RlY3RlZEZyYW1lID0gbWFrZVJlZihmcmFtZSksIGlkZW50
aWZpZXJdIChjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvciwgY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYgcmVzcG9uc2UpIHsKKyAgICAgICAgcGxhdGZvcm1TdHJhdGVnaWVzKCktPmxvYWRlclN0cmF0
ZWd5KCktPnN0YXJ0UGluZ0xvYWQoZnJhbWUsIHJlcXVlc3QsIFdURk1vdmUob3JpZ2luYWxSZXF1
ZXN0SGVhZGVycyksIG9wdGlvbnMsIHBvbGljeUNoZWNrLCBbcHJvdGVjdGVkRnJhbWUgPSBSZWYg
eyBmcmFtZSB9LCBpZGVudGlmaWVyXSAoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IsIGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKSB7CiAgICAgICAgICAgICBpZiAoIXJlc3BvbnNl
LmlzTnVsbCgpKQogICAgICAgICAgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlk
UmVjZWl2ZVJlc291cmNlUmVzcG9uc2UocHJvdGVjdGVkRnJhbWUsIGlkZW50aWZpZXIsIHByb3Rl
Y3RlZEZyYW1lLT5sb2FkZXIoKS5hY3RpdmVEb2N1bWVudExvYWRlcigpLCByZXNwb25zZSwgbnVs
bHB0cik7CiAgICAgICAgICAgICBpZiAoIWVycm9yLmlzTnVsbCgpKSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvUG9saWN5Q2hlY2tlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvUG9saWN5Q2hlY2tlci5jcHAKaW5kZXggY2Q4OTVhOTc5NWNhMjgwN2YzNDU5N2M3MDI0
NzA5YTA5OGFmOGEzMi4uODdlMjY0MDliZDM5OWQ1NDM1YTY2OGRjNjg2N2VhYmU3Y2Y1ZDYyMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1BvbGljeUNoZWNrZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Qb2xpY3lDaGVja2VyLmNwcApAQCAtMjUzLDcgKzI1Myw3
IEBAIHZvaWQgRnJhbWVMb2FkZXI6OlBvbGljeUNoZWNrZXI6OmNoZWNrTmV3V2luZG93UG9saWN5
KE5hdmlnYXRpb25BY3Rpb24mJiBuYXZpZ2F0CiAgICAgYXV0byBibG9iVVJMTGlmZXRpbWVFeHRl
bnNpb24gPSBleHRlbmRCbG9iVVJMTGlmZXRpbWVJZk5lY2Vzc2FyeShyZXF1ZXN0KTsKIAogICAg
IGF1dG8gcmVxdWVzdElkZW50aWZpZXIgPSBQb2xpY3lDaGVja0lkZW50aWZpZXI6OmNyZWF0ZSgp
OwotICAgIG1fZnJhbWUubG9hZGVyKCkuY2xpZW50KCkuZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JO
ZXdXaW5kb3dBY3Rpb24obmF2aWdhdGlvbkFjdGlvbiwgcmVxdWVzdCwgZm9ybVN0YXRlLmdldCgp
LCBmcmFtZU5hbWUsIHJlcXVlc3RJZGVudGlmaWVyLCBbZnJhbWUgPSBtYWtlUmVmKG1fZnJhbWUp
LCByZXF1ZXN0LAorICAgIG1fZnJhbWUubG9hZGVyKCkuY2xpZW50KCkuZGlzcGF0Y2hEZWNpZGVQ
b2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24obmF2aWdhdGlvbkFjdGlvbiwgcmVxdWVzdCwgZm9ybVN0
YXRlLmdldCgpLCBmcmFtZU5hbWUsIHJlcXVlc3RJZGVudGlmaWVyLCBbZnJhbWUgPSBSZWYgeyBt
X2ZyYW1lIH0sIHJlcXVlc3QsCiAgICAgICAgIGZvcm1TdGF0ZSA9IFdURk1vdmUoZm9ybVN0YXRl
KSwgZnJhbWVOYW1lLCBuYXZpZ2F0aW9uQWN0aW9uLCBmdW5jdGlvbiA9IFdURk1vdmUoZnVuY3Rp
b24pLCBibG9iVVJMTGlmZXRpbWVFeHRlbnNpb24gPSBXVEZNb3ZlKGJsb2JVUkxMaWZldGltZUV4
dGVuc2lvbiksCiAgICAgICAgIHJlcXVlc3RJZGVudGlmaWVyXSAoUG9saWN5QWN0aW9uIHBvbGlj
eUFjdGlvbiwgUG9saWN5Q2hlY2tJZGVudGlmaWVyIHJlc3BvbnNlSWRlbnRpZmllcikgbXV0YWJs
ZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJmcmFtZUxvYWRlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3ViZnJhbWVMb2FkZXIuY3BwCmluZGV4IGMyM2Uw
NzM1NmM2ODVjODdlMmY4MWI0NDRlNzkyNzdkYzk5MzM5MTEuLjk5N2EzM2RmZjEyMmM1ZWI5ZTRh
ODhjMzMzMTgzZGQzMzVhNDk4NDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9T
dWJmcmFtZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YmZyYW1lTG9h
ZGVyLmNwcApAQCAtODksNyArODksNyBAQCBib29sIEZyYW1lTG9hZGVyOjpTdWJmcmFtZUxvYWRl
cjo6cmVxdWVzdEZyYW1lKEhUTUxGcmFtZU93bmVyRWxlbWVudCYgb3duZXJFbGVtZQogICAgIENv
bXBsZXRpb25IYW5kbGVyQ2FsbGluZ1Njb3BlIHN0b3BEZWxheWluZ0xvYWRFdmVudDsKICAgICBp
ZiAoIXNjcmlwdFVSTC5pc0VtcHR5KCkpIHsKICAgICAgICAgb3duZXJFbGVtZW50LmRvY3VtZW50
KCkuaW5jcmVtZW50TG9hZEV2ZW50RGVsYXlDb3VudCgpOwotICAgICAgICBzdG9wRGVsYXlpbmdM
b2FkRXZlbnQgPSBDb21wbGV0aW9uSGFuZGxlckNhbGxpbmdTY29wZShbb3duZXJEb2N1bWVudCA9
IG1ha2VSZWYob3duZXJFbGVtZW50LmRvY3VtZW50KCkpXSB7CisgICAgICAgIHN0b3BEZWxheWlu
Z0xvYWRFdmVudCA9IENvbXBsZXRpb25IYW5kbGVyQ2FsbGluZ1Njb3BlKFtvd25lckRvY3VtZW50
ID0gUmVmIHsgb3duZXJFbGVtZW50LmRvY3VtZW50KCkgfV0gewogICAgICAgICAgICAgb3duZXJE
b2N1bWVudC0+ZGVjcmVtZW50TG9hZEV2ZW50RGVsYXlDb3VudCgpOwogICAgICAgICB9KTsKICAg
ICB9CkBAIC0yNjAsOCArMjYwLDggQEAgRnJhbWUqIEZyYW1lTG9hZGVyOjpTdWJmcmFtZUxvYWRl
cjo6bG9hZE9yUmVkaXJlY3RTdWJmcmFtZShIVE1MRnJhbWVPd25lckVsZW1lbnQKIAogUmVmUHRy
PEZyYW1lPiBGcmFtZUxvYWRlcjo6U3ViZnJhbWVMb2FkZXI6OmxvYWRTdWJmcmFtZShIVE1MRnJh
bWVPd25lckVsZW1lbnQmIG93bmVyRWxlbWVudCwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmlu
ZyYgbmFtZSwgY29uc3QgU3RyaW5nJiByZWZlcnJlcikKIHsKLSAgICBSZWY8RnJhbWU+IHByb3Rl
Y3QobV9mcmFtZSk7Ci0gICAgYXV0byBkb2N1bWVudCA9IG1ha2VSZWYob3duZXJFbGVtZW50LmRv
Y3VtZW50KCkpOworICAgIFJlZiBwcm90ZWN0ZWRGcmFtZSB7IG1fZnJhbWUgfTsKKyAgICBSZWYg
ZG9jdW1lbnQgPSBvd25lckVsZW1lbnQuZG9jdW1lbnQoKTsKIAogICAgIGlmICghZG9jdW1lbnQt
PnNlY3VyaXR5T3JpZ2luKCkuY2FuRGlzcGxheSh1cmwpKSB7CiAgICAgICAgIEZyYW1lTG9hZGVy
OjpyZXBvcnRMb2NhbExvYWRGYWlsZWQoJm1fZnJhbWUsIHVybC5zdHJpbmcoKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5jcHAKaW5kZXggOTMx
NjFjOWNjNTk4NDI0NTY1MzUwM2JlZDU2MWRjOWVjMWRjNzZiZC4uYzJkYWE1Y2NhY2M5YjNiNDBk
YTYxZjc2MjZjODE5ODBlYWViYWQzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1dvcmtlclRocmVhZGFibGVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9X
b3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNwcApAQCAtMjAyLDcgKzIwMiw3IEBAIHZvaWQgV29ya2Vy
VGhyZWFkYWJsZUxvYWRlcjo6TWFpblRocmVhZEJyaWRnZTo6Y29tcHV0ZUlzRG9uZSgpCiAKIHZv
aWQgV29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6TWFpblRocmVhZEJyaWRnZTo6bm90aWZ5SXNEb25l
KGJvb2wgaXNEb25lKQogewotICAgIG1fbG9hZGVyUHJveHkucG9zdFRhc2tGb3JNb2RlVG9Xb3Jr
ZXJPcldvcmtsZXRHbG9iYWxTY29wZShbcHJvdGVjdGVkV29ya2VyQ2xpZW50V3JhcHBlciA9IG1h
a2VSZWYoKm1fd29ya2VyQ2xpZW50V3JhcHBlciksIGlzRG9uZV0oYXV0byYpIHsKKyAgICBtX2xv
YWRlclByb3h5LnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUoW3By
b3RlY3RlZFdvcmtlckNsaWVudFdyYXBwZXIgPSBSZWYgeyAqbV93b3JrZXJDbGllbnRXcmFwcGVy
IH0sIGlzRG9uZV0oYXV0byYpIHsKICAgICAgICAgcHJvdGVjdGVkV29ya2VyQ2xpZW50V3JhcHBl
ci0+bm90aWZ5SXNEb25lKGlzRG9uZSk7CiAgICAgfSwgbV90YXNrTW9kZSk7CiB9CkBAIC0yMTQs
NyArMjE0LDcgQEAgdm9pZCBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpNYWluVGhyZWFkQnJpZGdl
OjpjbGVhckNsaWVudFdyYXBwZXIoKQogCiB2b2lkIFdvcmtlclRocmVhZGFibGVMb2FkZXI6Ok1h
aW5UaHJlYWRCcmlkZ2U6OmRpZFNlbmREYXRhKHVuc2lnbmVkIGxvbmcgbG9uZyBieXRlc1NlbnQs
IHVuc2lnbmVkIGxvbmcgbG9uZyB0b3RhbEJ5dGVzVG9CZVNlbnQpCiB7Ci0gICAgbV9sb2FkZXJQ
cm94eS5wb3N0VGFza0Zvck1vZGVUb1dvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKFtwcm90ZWN0
ZWRXb3JrZXJDbGllbnRXcmFwcGVyID0gbWFrZVJlZigqbV93b3JrZXJDbGllbnRXcmFwcGVyKSwg
Ynl0ZXNTZW50LCB0b3RhbEJ5dGVzVG9CZVNlbnRdIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBj
b250ZXh0KSBtdXRhYmxlIHsKKyAgICBtX2xvYWRlclByb3h5LnBvc3RUYXNrRm9yTW9kZVRvV29y
a2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUoW3Byb3RlY3RlZFdvcmtlckNsaWVudFdyYXBwZXIgPSBS
ZWYgeyAqbV93b3JrZXJDbGllbnRXcmFwcGVyIH0sIGJ5dGVzU2VudCwgdG90YWxCeXRlc1RvQmVT
ZW50XSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgbXV0YWJsZSB7CiAgICAgICAg
IEFTU0VSVF9VTlVTRUQoY29udGV4dCwgY29udGV4dC5pc1dvcmtlckdsb2JhbFNjb3BlKCkgfHwg
Y29udGV4dC5pc1dvcmtsZXRHbG9iYWxTY29wZSgpKTsKICAgICAgICAgcHJvdGVjdGVkV29ya2Vy
Q2xpZW50V3JhcHBlci0+ZGlkU2VuZERhdGEoYnl0ZXNTZW50LCB0b3RhbEJ5dGVzVG9CZVNlbnQp
OwogICAgIH0sIG1fdGFza01vZGUpOwpAQCAtMjIyLDcgKzIyMiw3IEBAIHZvaWQgV29ya2VyVGhy
ZWFkYWJsZUxvYWRlcjo6TWFpblRocmVhZEJyaWRnZTo6ZGlkU2VuZERhdGEodW5zaWduZWQgbG9u
ZyBsb25nIGJ5CiAKIHZvaWQgV29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6TWFpblRocmVhZEJyaWRn
ZTo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlTG9hZGVySWRlbnRpZmllciBpZGVudGlmaWVy
LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKIHsKLSAgICBtX2xvYWRlclByb3h5
LnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUoW3Byb3RlY3RlZFdv
cmtlckNsaWVudFdyYXBwZXIgPSBtYWtlUmVmKCptX3dvcmtlckNsaWVudFdyYXBwZXIpLCB3b3Jr
ZXJSZXF1ZXN0SWRlbnRpZmllciA9IG1fd29ya2VyUmVxdWVzdElkZW50aWZpZXIsIGlkZW50aWZp
ZXIsIHJlc3BvbnNlRGF0YSA9IHJlc3BvbnNlLmNyb3NzVGhyZWFkRGF0YSgpXSAoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCYgY29udGV4dCkgbXV0YWJsZSB7CisgICAgbV9sb2FkZXJQcm94eS5wb3N0
VGFza0Zvck1vZGVUb1dvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKFtwcm90ZWN0ZWRXb3JrZXJD
bGllbnRXcmFwcGVyID0gUmVmIHsgKm1fd29ya2VyQ2xpZW50V3JhcHBlciB9LCB3b3JrZXJSZXF1
ZXN0SWRlbnRpZmllciA9IG1fd29ya2VyUmVxdWVzdElkZW50aWZpZXIsIGlkZW50aWZpZXIsIHJl
c3BvbnNlRGF0YSA9IHJlc3BvbnNlLmNyb3NzVGhyZWFkRGF0YSgpXSAoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYgY29udGV4dCkgbXV0YWJsZSB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0LmlzV29y
a2VyR2xvYmFsU2NvcGUoKSB8fCBjb250ZXh0LmlzV29ya2xldEdsb2JhbFNjb3BlKCkpOwogICAg
ICAgICBhdXRvIHJlc3BvbnNlID0gUmVzb3VyY2VSZXNwb25zZTo6ZnJvbUNyb3NzVGhyZWFkRGF0
YShXVEZNb3ZlKHJlc3BvbnNlRGF0YSkpOwogICAgICAgICBwcm90ZWN0ZWRXb3JrZXJDbGllbnRX
cmFwcGVyLT5kaWRSZWNlaXZlUmVzcG9uc2UoaWRlbnRpZmllciwgcmVzcG9uc2UpOwpAQCAtMjM0
LDcgKzIzNCw3IEBAIHZvaWQgV29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6TWFpblRocmVhZEJyaWRn
ZTo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlTG9hZGVyCiB2b2lkIFdvcmtlclRocmVhZGFi
bGVMb2FkZXI6Ok1haW5UaHJlYWRCcmlkZ2U6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3Qq
IGRhdGEsIGludCBkYXRhTGVuZ3RoKQogewogICAgIFZlY3Rvcjx1aW50OF90PiBidWZmZXIoZGF0
YSwgZGF0YUxlbmd0aCk7Ci0gICAgbV9sb2FkZXJQcm94eS5wb3N0VGFza0Zvck1vZGVUb1dvcmtl
ck9yV29ya2xldEdsb2JhbFNjb3BlKFtwcm90ZWN0ZWRXb3JrZXJDbGllbnRXcmFwcGVyID0gbWFr
ZVJlZigqbV93b3JrZXJDbGllbnRXcmFwcGVyKSwgd29ya2VyUmVxdWVzdElkZW50aWZpZXIgPSBt
X3dvcmtlclJlcXVlc3RJZGVudGlmaWVyLCBidWZmZXIgPSBXVEZNb3ZlKGJ1ZmZlcildIChTY3Jp
cHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSBtdXRhYmxlIHsKKyAgICBtX2xvYWRlclByb3h5
LnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUoW3Byb3RlY3RlZFdv
cmtlckNsaWVudFdyYXBwZXIgPSBSZWYgeyAqbV93b3JrZXJDbGllbnRXcmFwcGVyIH0sIHdvcmtl
clJlcXVlc3RJZGVudGlmaWVyID0gbV93b3JrZXJSZXF1ZXN0SWRlbnRpZmllciwgYnVmZmVyID0g
V1RGTW92ZShidWZmZXIpXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgbXV0YWJs
ZSB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0LmlzV29ya2VyR2xvYmFsU2NvcGUoKSB8fCBjb250
ZXh0LmlzV29ya2xldEdsb2JhbFNjb3BlKCkpOwogICAgICAgICBwcm90ZWN0ZWRXb3JrZXJDbGll
bnRXcmFwcGVyLT5kaWRSZWNlaXZlRGF0YShidWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgpKTsK
ICAgICAgICAgaWYgKGlzPFdvcmtlckdsb2JhbFNjb3BlPihjb250ZXh0KSkKQEAgLTI0NSw3ICsy
NDUsNyBAQCB2b2lkIFdvcmtlclRocmVhZGFibGVMb2FkZXI6Ok1haW5UaHJlYWRCcmlkZ2U6OmRp
ZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdAogdm9pZCBXb3JrZXJUaHJlYWRhYmxlTG9h
ZGVyOjpNYWluVGhyZWFkQnJpZGdlOjpkaWRGaW5pc2hMb2FkaW5nKFJlc291cmNlTG9hZGVySWRl
bnRpZmllciBpZGVudGlmaWVyKQogewogICAgIG1fbG9hZGluZ0ZpbmlzaGVkID0gdHJ1ZTsKLSAg
ICBtX2xvYWRlclByb3h5LnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyT3JXb3JrbGV0R2xvYmFsU2Nv
cGUoW3Byb3RlY3RlZFdvcmtlckNsaWVudFdyYXBwZXIgPSBtYWtlUmVmKCptX3dvcmtlckNsaWVu
dFdyYXBwZXIpLCB3b3JrZXJSZXF1ZXN0SWRlbnRpZmllciA9IG1fd29ya2VyUmVxdWVzdElkZW50
aWZpZXIsIG5ldHdvcmtMb2FkTWV0cmljcyA9IG1fbmV0d29ya0xvYWRNZXRyaWNzLmlzb2xhdGVk
Q29weSgpLCBpZGVudGlmaWVyXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgbXV0
YWJsZSB7CisgICAgbV9sb2FkZXJQcm94eS5wb3N0VGFza0Zvck1vZGVUb1dvcmtlck9yV29ya2xl
dEdsb2JhbFNjb3BlKFtwcm90ZWN0ZWRXb3JrZXJDbGllbnRXcmFwcGVyID0gUmVmIHsgKm1fd29y
a2VyQ2xpZW50V3JhcHBlciB9LCB3b3JrZXJSZXF1ZXN0SWRlbnRpZmllciA9IG1fd29ya2VyUmVx
dWVzdElkZW50aWZpZXIsIG5ldHdvcmtMb2FkTWV0cmljcyA9IG1fbmV0d29ya0xvYWRNZXRyaWNz
Lmlzb2xhdGVkQ29weSgpLCBpZGVudGlmaWVyXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29u
dGV4dCkgbXV0YWJsZSB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0LmlzV29ya2VyR2xvYmFsU2Nv
cGUoKSB8fCBjb250ZXh0LmlzV29ya2xldEdsb2JhbFNjb3BlKCkpOwogICAgICAgICBwcm90ZWN0
ZWRXb3JrZXJDbGllbnRXcmFwcGVyLT5kaWRGaW5pc2hMb2FkaW5nKGlkZW50aWZpZXIpOwogICAg
ICAgICBpZiAoaXM8V29ya2VyR2xvYmFsU2NvcGU+KGNvbnRleHQpKQpAQCAtMjU2LDcgKzI1Niw3
IEBAIHZvaWQgV29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6TWFpblRocmVhZEJyaWRnZTo6ZGlkRmlu
aXNoTG9hZGluZyhSZXNvdXJjZUxvYWRlcklkCiB2b2lkIFdvcmtlclRocmVhZGFibGVMb2FkZXI6
Ok1haW5UaHJlYWRCcmlkZ2U6OmRpZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCiB7
CiAgICAgbV9sb2FkaW5nRmluaXNoZWQgPSB0cnVlOwotICAgIG1fbG9hZGVyUHJveHkucG9zdFRh
c2tGb3JNb2RlVG9Xb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZShbcHJvdGVjdGVkV29ya2VyQ2xp
ZW50V3JhcHBlciA9IG1ha2VSZWYoKm1fd29ya2VyQ2xpZW50V3JhcHBlciksIHdvcmtlclJlcXVl
c3RJZGVudGlmaWVyID0gbV93b3JrZXJSZXF1ZXN0SWRlbnRpZmllciwgZXJyb3IgPSBlcnJvci5p
c29sYXRlZENvcHkoKV0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIG11dGFibGUg
eworICAgIG1fbG9hZGVyUHJveHkucG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJPcldvcmtsZXRHbG9i
YWxTY29wZShbcHJvdGVjdGVkV29ya2VyQ2xpZW50V3JhcHBlciA9IFJlZiB7ICptX3dvcmtlckNs
aWVudFdyYXBwZXIgfSwgd29ya2VyUmVxdWVzdElkZW50aWZpZXIgPSBtX3dvcmtlclJlcXVlc3RJ
ZGVudGlmaWVyLCBlcnJvciA9IGVycm9yLmlzb2xhdGVkQ29weSgpXSAoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYgY29udGV4dCkgbXV0YWJsZSB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0LmlzV29y
a2VyR2xvYmFsU2NvcGUoKSB8fCBjb250ZXh0LmlzV29ya2xldEdsb2JhbFNjb3BlKCkpOwogICAg
ICAgICBUaHJlYWRhYmxlTG9hZGVyOjpsb2dFcnJvcihjb250ZXh0LCBlcnJvciwgcHJvdGVjdGVk
V29ya2VyQ2xpZW50V3JhcHBlci0+aW5pdGlhdG9yKCkpOwogICAgICAgICBwcm90ZWN0ZWRXb3Jr
ZXJDbGllbnRXcmFwcGVyLT5kaWRGYWlsKGVycm9yKTsKQEAgLTI2OCw3ICsyNjgsNyBAQCB2b2lk
IFdvcmtlclRocmVhZGFibGVMb2FkZXI6Ok1haW5UaHJlYWRCcmlkZ2U6OmRpZEZhaWwoY29uc3Qg
UmVzb3VyY2VFcnJvciYgZXJybwogdm9pZCBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpNYWluVGhy
ZWFkQnJpZGdlOjpkaWRGaW5pc2hUaW1pbmcoY29uc3QgUmVzb3VyY2VUaW1pbmcmIHJlc291cmNl
VGltaW5nKQogewogICAgIG1fbmV0d29ya0xvYWRNZXRyaWNzID0gcmVzb3VyY2VUaW1pbmcubmV0
d29ya0xvYWRNZXRyaWNzKCk7Ci0gICAgbV9sb2FkZXJQcm94eS5wb3N0VGFza0Zvck1vZGVUb1dv
cmtlck9yV29ya2xldEdsb2JhbFNjb3BlKFtwcm90ZWN0ZWRXb3JrZXJDbGllbnRXcmFwcGVyID0g
bWFrZVJlZigqbV93b3JrZXJDbGllbnRXcmFwcGVyKSwgcmVzb3VyY2VUaW1pbmcgPSByZXNvdXJj
ZVRpbWluZy5pc29sYXRlZENvcHkoKV0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQp
IG11dGFibGUgeworICAgIG1fbG9hZGVyUHJveHkucG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJPcldv
cmtsZXRHbG9iYWxTY29wZShbcHJvdGVjdGVkV29ya2VyQ2xpZW50V3JhcHBlciA9IFJlZiB7ICpt
X3dvcmtlckNsaWVudFdyYXBwZXIgfSwgcmVzb3VyY2VUaW1pbmcgPSByZXNvdXJjZVRpbWluZy5p
c29sYXRlZENvcHkoKV0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIG11dGFibGUg
ewogICAgICAgICBBU1NFUlQoY29udGV4dC5pc1dvcmtlckdsb2JhbFNjb3BlKCkgfHwgY29udGV4
dC5pc1dvcmtsZXRHbG9iYWxTY29wZSgpKTsKICAgICAgICAgQVNTRVJUKCFyZXNvdXJjZVRpbWlu
Zy5pbml0aWF0b3IoKS5pc0VtcHR5KCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZFJlc291cmNlLmNwcAppbmRleCA1YWI0YTQ4ZDJmY2I2MGUzYzk3MzJlZmMwMGQ1
Y2RmYjdmOWU3NTI0Li44YjgzZTUzMzE5MGE3NzZiYThmNDBjMjgzMTU4Y2RiNzYxYWU5NzAyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAKQEAg
LTI2OCw3ICsyNjgsNyBAQCB2b2lkIENhY2hlZFJlc291cmNlOjpsb2FkKENhY2hlZFJlc291cmNl
TG9hZGVyJiBjYWNoZWRSZXNvdXJjZUxvYWRlcikKICAgICAgICAgYXV0byBpZGVudGlmaWVyID0g
UmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyOjpnZW5lcmF0ZSgpOwogICAgICAgICBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246OndpbGxTZW5kUmVxdWVzdE9mVHlwZSgmZnJhbWUsIGlkZW50aWZpZXIs
IGZyYW1lTG9hZGVyLmFjdGl2ZURvY3VtZW50TG9hZGVyKCksIHJlcXVlc3QsIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6TG9hZFR5cGU6OkJlYWNvbik7CiAKLSAgICAgICAgcGxhdGZvcm1TdHJh
dGVnaWVzKCktPmxvYWRlclN0cmF0ZWd5KCktPnN0YXJ0UGluZ0xvYWQoZnJhbWUsIHJlcXVlc3Qs
IG1fb3JpZ2luYWxSZXF1ZXN0LT5odHRwSGVhZGVyRmllbGRzKCksIG1fb3B0aW9ucywgbV9vcHRp
b25zLmNvbnRlbnRTZWN1cml0eVBvbGljeUltcG9zaXRpb24sIFt0aGlzLCBwcm90ZWN0ZWRUaGlz
ID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgcHJvdGVjdGVkRnJhbWUgPSBtYWtlUmVmKGZyYW1l
KSwgaWRlbnRpZmllcl0gKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yLCBjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJiByZXNwb25zZSkgeworICAgICAgICBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+bG9h
ZGVyU3RyYXRlZ3koKS0+c3RhcnRQaW5nTG9hZChmcmFtZSwgcmVxdWVzdCwgbV9vcmlnaW5hbFJl
cXVlc3QtPmh0dHBIZWFkZXJGaWVsZHMoKSwgbV9vcHRpb25zLCBtX29wdGlvbnMuY29udGVudFNl
Y3VyaXR5UG9saWN5SW1wb3NpdGlvbiwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHBy
b3RlY3RlZFRoaXMpLCBwcm90ZWN0ZWRGcmFtZSA9IFJlZiB7IGZyYW1lIH0sIGlkZW50aWZpZXJd
IChjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVz
cG9uc2UpIHsKICAgICAgICAgICAgIGlmICghcmVzcG9uc2UuaXNOdWxsKCkpCiAgICAgICAgICAg
ICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlUmVzb3VyY2VSZXNwb25z
ZShwcm90ZWN0ZWRGcmFtZSwgaWRlbnRpZmllciwgcHJvdGVjdGVkRnJhbWUtPmxvYWRlcigpLmFj
dGl2ZURvY3VtZW50TG9hZGVyKCksIHJlc3BvbnNlLCBudWxscHRyKTsKICAgICAgICAgICAgIGlm
ICghZXJyb3IuaXNOdWxsKCkpIHsKQEAgLTI4NCw3ICsyODQsNyBAQCB2b2lkIENhY2hlZFJlc291
cmNlOjpsb2FkKENhY2hlZFJlc291cmNlTG9hZGVyJiBjYWNoZWRSZXNvdXJjZUxvYWRlcikKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5sb2FkZXJT
dHJhdGVneSgpLT5sb2FkUmVzb3VyY2UoZnJhbWUsICp0aGlzLCBXVEZNb3ZlKHJlcXVlc3QpLCBt
X29wdGlvbnMsIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2Fj
aGVkUmVzb3VyY2U+KHRoaXMpLCBmcmFtZVJlZiA9IG1ha2VSZWYoZnJhbWUpXSAoUmVmUHRyPFN1
YnJlc291cmNlTG9hZGVyPiYmIGxvYWRlcikgeworICAgIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5s
b2FkZXJTdHJhdGVneSgpLT5sb2FkUmVzb3VyY2UoZnJhbWUsICp0aGlzLCBXVEZNb3ZlKHJlcXVl
c3QpLCBtX29wdGlvbnMsIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gQ2FjaGVkUmVzb3VyY2VIYW5k
bGU8Q2FjaGVkUmVzb3VyY2U+KHRoaXMpLCBmcmFtZVJlZiA9IFJlZiB7IGZyYW1lIH1dIChSZWZQ
dHI8U3VicmVzb3VyY2VMb2FkZXI+JiYgbG9hZGVyKSB7CiAgICAgICAgIG1fbG9hZGVyID0gV1RG
TW92ZShsb2FkZXIpOwogICAgICAgICBpZiAoIW1fbG9hZGVyKSB7CiAgICAgICAgICAgICBSRUxF
QVNFX0xPRyhOZXR3b3JrLCAiJXAgLSBbcGFnZUlEPSUiIFBSSXU2NCAiLCBmcmFtZUlEPSUiIFBS
SXU2NCAiXSBDYWNoZWRSZXNvdXJjZTo6bG9hZDogVW5hYmxlIHRvIGNyZWF0ZSBTdWJyZXNvdXJj
ZUxvYWRlciIsIHRoaXMsIFBBR0VfSUQoZnJhbWVSZWYuZ2V0KCkpLCBGUkFNRV9JRChmcmFtZVJl
Zi5nZXQoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9MZWdhY3lQ
cmV2aWV3TG9hZGVyLm1tIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3
TG9hZGVyLm1tCmluZGV4IDk0MzgzYTFjNzcyNjMyZjU3MThkN2RmMzdlNTc1NGE2MzJiNTBmYzgu
LmI1YWY3N2IzYTliNmUwOTFmOWQ4Njg3YTczZTFlZGJiNzZlOWUzODkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIubW0KQEAgLTExOSw3ICsx
MTksNyBAQCB2b2lkIExlZ2FjeVByZXZpZXdMb2FkZXI6OnByZXZpZXdDb252ZXJ0ZXJEaWRTdGFy
dENvbnZlcnRpbmcoUHJldmlld0NvbnZlcnRlciYgYwogICAgICAgICByZXR1cm47CiAgICAgfQog
Ci0gICAgcmVzb3VyY2VMb2FkZXItPmRpZFJlY2VpdmVSZXNwb25zZShyZXNwb25zZSwgW3RoaXMs
IHdlYWtUaGlzID0gbWFrZVdlYWtQdHIoc3RhdGljX2Nhc3Q8UHJldmlld0NvbnZlcnRlckNsaWVu
dCY+KCp0aGlzKSksIGNvbnZlcnRlciA9IG1ha2VSZWYoY29udmVydGVyKV0geworICAgIHJlc291
cmNlTG9hZGVyLT5kaWRSZWNlaXZlUmVzcG9uc2UocmVzcG9uc2UsIFt0aGlzLCB3ZWFrVGhpcyA9
IG1ha2VXZWFrUHRyKHN0YXRpY19jYXN0PFByZXZpZXdDb252ZXJ0ZXJDbGllbnQmPigqdGhpcykp
LCBjb252ZXJ0ZXIgPSBSZWYgeyBjb252ZXJ0ZXIgfV0gewogICAgICAgICBpZiAoIXdlYWtUaGlz
KQogICAgICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0RPTVdpbmRvd0V4dGVuc2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvd0V4
dGVuc2lvbi5jcHAKaW5kZXggNWM4MmU2MDdiNDViYjE1M2I4YjAyZmU4MjBlOWE5OThlYmY1MzYy
MC4uY2M0MDNhYmM4MjgyMDViMzUyOWUzNTJhZGViNDZjYjJiZjNkMjc1MSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3dFeHRlbnNpb24uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRE9NV2luZG93RXh0ZW5zaW9uLmNwcApAQCAtNjMsNyArNjMsNyBAQCB2b2lk
IERPTVdpbmRvd0V4dGVuc2lvbjo6c3VzcGVuZEZvckJhY2tGb3J3YXJkQ2FjaGUoKQogICAgIC8v
IHdoaWxlIHRoZXJlIGlzIHN0aWxsIHdvcmsgdG8gZG8uCiAgICAgUmVmPERPTVdpbmRvd0V4dGVu
c2lvbj4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CiAKLSAgICBhdXRvIGZyYW1lID0gbWFrZVJlZigq
dGhpcy0+ZnJhbWUoKSk7CisgICAgUmVmIGZyYW1lID0gKnRoaXMtPmZyYW1lKCk7CiAgICAgZnJh
bWUtPmxvYWRlcigpLmNsaWVudCgpLmRpc3BhdGNoV2lsbERpc2Nvbm5lY3RET01XaW5kb3dFeHRl
bnNpb25Gcm9tR2xvYmFsT2JqZWN0KHRoaXMpOwogCiAgICAgbV9kaXNjb25uZWN0ZWRGcmFtZSA9
IFdURk1vdmUoZnJhbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhh
bmRsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCmluZGV4IDRm
NDc5YTJkMWU2ZWM4NDVjY2RiNjU1YmI0NDI3MWEyZWZlMzc2ZTUuLjBiOGU4MzViZWM4OGE3Yzg4
YmJkZjc0ZDE4NzQ1Yjc5YTE5ZWJhOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RXZlbnRIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5j
cHAKQEAgLTMxNjIsNyArMzE2Miw3IEBAIHZvaWQgRXZlbnRIYW5kbGVyOjpkZWZhdWx0V2hlZWxF
dmVudEhhbmRsZXIoTm9kZSogc3RhcnROb2RlLCBXaGVlbEV2ZW50JiB3aGVlbEV2CiAgICAgaWYg
KGlzVXNlckV2ZW50ICYmICFtX2N1cnJlbnRXaGVlbEV2ZW50QWxsb3dzU2Nyb2xsaW5nKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBhdXRvIHByb3RlY3RlZEZyYW1lID0gbWFrZVJlZihtX2ZyYW1l
KTsKKyAgICBSZWYgcHJvdGVjdGVkRnJhbWUgeyBtX2ZyYW1lIH07CiAKICAgICBGbG9hdFNpemUg
ZmlsdGVyZWRQbGF0Zm9ybURlbHRhKHdoZWVsRXZlbnQuZGVsdGFYKCksIHdoZWVsRXZlbnQuZGVs
dGFZKCkpOwogICAgIEZsb2F0U2l6ZSBmaWx0ZXJlZFZlbG9jaXR5OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNw
cAppbmRleCBkNDY1NGFiYTcxZWM4ZjZmZDhiOTdhOWQwZGM4YjY3NTZlMDVlNWIxLi43ZTMxZTc0
NDkyMmRmZTczZmQ5NTZhNDZmNDQ0ZTdkMTExZGE1ZWMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0ZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcApA
QCAtNzAzLDcgKzcwMyw3IEBAIHZvaWQgRnJhbWU6OmluamVjdFVzZXJTY3JpcHRJbW1lZGlhdGVs
eShET01XcmFwcGVyV29ybGQmIHdvcmxkLCBjb25zdCBVc2VyU2NyaXB0CiAKIHZvaWQgRnJhbWU6
OmFkZFVzZXJTY3JpcHRBd2FpdGluZ05vdGlmaWNhdGlvbihET01XcmFwcGVyV29ybGQmIHdvcmxk
LCBjb25zdCBVc2VyU2NyaXB0JiBzY3JpcHQpCiB7Ci0gICAgbV91c2VyU2NyaXB0c0F3YWl0aW5n
Tm90aWZpY2F0aW9uLmFwcGVuZCh7IG1ha2VSZWYod29ybGQpLCBtYWtlVW5pcXVlUmVmPFVzZXJT
Y3JpcHQ+KHNjcmlwdCkgfSk7CisgICAgbV91c2VyU2NyaXB0c0F3YWl0aW5nTm90aWZpY2F0aW9u
LmFwcGVuZCh7IHdvcmxkLCBtYWtlVW5pcXVlUmVmPFVzZXJTY3JpcHQ+KHNjcmlwdCkgfSk7CiB9
CiAKIHZvaWQgRnJhbWU6OmluamVjdFVzZXJTY3JpcHRzQXdhaXRpbmdOb3RpZmljYXRpb24oKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCmluZGV4IDg5ZGQ5ZGNmNDA3ZjUzYTBhODdmNTlhNjU1
YjkzNDlmMzUzNGRmZTUuLmNlZGEwYjRjMDA0MTk5YjBkYTA2YWYwYWVlOTA3M2Y0ZGFjZjc4NjUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKQEAgLTEyOTgsNyArMTI5OCw3IEBAIHZvaWQg
RnJhbWVWaWV3OjpkaWRMYXlvdXQoV2Vha1B0cjxSZW5kZXJFbGVtZW50PiBsYXlvdXRSb290KQog
CiAgICAgdXBkYXRlQ29tcG9zaXRpbmdMYXllcnNBZnRlckxheW91dCgpOwogCi0gICAgYXV0byBk
b2N1bWVudCA9IG1ha2VSZWYoKmZyYW1lKCkuZG9jdW1lbnQoKSk7CisgICAgUmVmIGRvY3VtZW50
ID0gKmZyYW1lKCkuZG9jdW1lbnQoKTsKIAogI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBQTEFURk9S
TShXSU4pIHx8IFBMQVRGT1JNKEdUSykKICAgICBpZiAoYXV0byogY2FjaGUgPSBkb2N1bWVudC0+
ZXhpc3RpbmdBWE9iamVjdENhY2hlKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1BhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAppbmRleCAzNzI0OGU0M2Vj
NDhiNDhiYmRlNGNmYzIwMTM1ZWQ3ZDA3ZmU4M2Y4Li42MTE1ODZmOGNhYTg0YTA5MjRmMTZlZTBl
OWIzZTg3Yjc5MjFmZjY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKQEAgLTM0OTYsNyArMzQ5Niw3IEBA
IHZvaWQgUGFnZTo6Y29uZmlndXJlTG9nZ2luZ0NoYW5uZWwoY29uc3QgU3RyaW5nJiBjaGFubmVs
TmFtZSwgV1RGTG9nQ2hhbm5lbFN0YXRlCiAKIHZvaWQgUGFnZTo6ZGlkRmluaXNoTG9hZGluZ0lt
YWdlRm9yRWxlbWVudChIVE1MSW1hZ2VFbGVtZW50JiBlbGVtZW50KQogewotICAgIGVsZW1lbnQu
ZG9jdW1lbnQoKS5ldmVudExvb3AoKS5xdWV1ZVRhc2soVGFza1NvdXJjZTo6TmV0d29ya2luZywg
W2VsZW1lbnQgPSBtYWtlUmVmKGVsZW1lbnQpXSgpIHsKKyAgICBlbGVtZW50LmRvY3VtZW50KCku
ZXZlbnRMb29wKCkucXVldWVUYXNrKFRhc2tTb3VyY2U6Ok5ldHdvcmtpbmcsIFtlbGVtZW50ID0g
UmVmIHsgZWxlbWVudCB9XSgpIHsKICAgICAgICAgUmVmUHRyIGZyYW1lID0gZWxlbWVudC0+ZG9j
dW1lbnQoKS5mcmFtZSgpOwogICAgICAgICBpZiAoIWZyYW1lKQogICAgICAgICAgICAgcmV0dXJu
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QcmludENvbnRleHQuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9QcmludENvbnRleHQuY3BwCmluZGV4IDBjOTYzMmUyZmYzYTQ5YTBm
MjYzZWJmYmYzOWYxZjg3MDliYjJmMDMuLmMwOWNmYTJlMDFjMmZiZmMzNjc4OWRlMWVjZjg0NWRh
YTEyNjRmNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUHJpbnRDb250ZXh0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1ByaW50Q29udGV4dC5jcHAKQEAgLTE5MSw3ICsx
OTEsNyBAQCB2b2lkIFByaW50Q29udGV4dDo6YmVnaW4oZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdo
dCkKICAgICBpZiAoIWZyYW1lKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8gZnJhbWUg
PSBtYWtlUmVmKCp0aGlzLT5mcmFtZSgpKTsKKyAgICBSZWYgZnJhbWUgPSAqdGhpcy0+ZnJhbWUo
KTsKICAgICAvLyBUaGlzIGZ1bmN0aW9uIGNhbiBiZSBjYWxsZWQgbXVsdGlwbGUgdGltZXMgdG8g
YWRqdXN0IHByaW50aW5nIHBhcmFtZXRlcnMgd2l0aG91dCBnb2luZyBiYWNrIHRvIHNjcmVlbiBt
b2RlLgogICAgIG1faXNQcmludGluZyA9IHRydWU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvaW9zL0V2ZW50SGFuZGxlcklPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvaW9z
L0V2ZW50SGFuZGxlcklPUy5tbQppbmRleCA0NDMyYWE3ZGRiMDRlNTJmYTE5ZWEyMzFmYThjZmQ4
Zjc4YTY3NGRkLi5mZmFhMjg5ZmZmMjgyMjJlMTQ0MjAyNWU4YWVkMjFkNzJmMDAwNjExIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2lvcy9FdmVudEhhbmRsZXJJT1MubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9pb3MvRXZlbnRIYW5kbGVySU9TLm1tCkBAIC01MjAsNyArNTIw
LDcgQEAgdm9pZCBFdmVudEhhbmRsZXI6Om1vdXNlTW92ZWQoV2ViRXZlbnQgKmV2ZW50KQogICAg
ICAgICAvLyBSdW4gc3R5bGUgcmVjYWxjIHRvIGJlIGFibGUgdG8gY2FwdHVyZSBjb250ZW50IGNo
YW5nZXMgYXMgdGhlIHJlc3VsdCBvZiB0aGUgbW91c2UgbW92ZSBldmVudC4KICAgICAgICAgZG9j
dW1lbnQudXBkYXRlU3R5bGVJZk5lZWRlZCgpOwogI2lmIEVOQUJMRShDT05URU5UX0NIQU5HRV9P
QlNFUlZFUikKLSAgICAgICAgY2FsbE9uTWFpblRocmVhZChbcHJvdGVjdGVkRnJhbWUgPSBtYWtl
UmVmKG1fZnJhbWUpXSB7CisgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3Byb3RlY3RlZEZyYW1l
ID0gUmVmIHsgbV9mcmFtZSB9XSB7CiAgICAgICAgICAgICAvLyBUaGlzIGlzIGNhbGxlZCBieSBX
ZWJLaXRMZWdhY3kgb25seS4KICAgICAgICAgICAgIGlmIChhdXRvKiBkb2N1bWVudCA9IHByb3Rl
Y3RlZEZyYW1lLT5kb2N1bWVudCgpKQogICAgICAgICAgICAgICAgIGRvY3VtZW50LT5jb250ZW50
Q2hhbmdlT2JzZXJ2ZXIoKS53aWxsTm90UHJvY2VlZFdpdGhGaXhlZE9ic2VydmF0aW9uVGltZVdp
bmRvdygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvSW1hZ2VPdmVybGF5
Q29udHJvbGxlck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0ltYWdlT3ZlcmxheUNv
bnRyb2xsZXJNYWMubW0KaW5kZXggNDgzM2NkZDVlODJjNThlNTFiYjMxYzNiYTYxMDRmNTY3NTY0
Yzg4OS4uNzBlM2RjNmIzOGMzODQ5YmU0N2FjMjdkZGMxMjAzMDZhMTQ1ZjcxNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvSW1hZ2VPdmVybGF5Q29udHJvbGxlck1hYy5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9JbWFnZU92ZXJsYXlDb250cm9sbGVyTWFjLm1t
CkBAIC01OCw3ICs1OCw3IEBAIHZvaWQgSW1hZ2VPdmVybGF5Q29udHJvbGxlcjo6dXBkYXRlRGF0
YURldGVjdG9ySGlnaGxpZ2h0cyhjb25zdCBIVE1MRWxlbWVudCYgb3ZlCiAgICAgVmVjdG9yPFJl
ZjxIVE1MRWxlbWVudD4+IGRhdGFEZXRlY3RvclJlc3VsdEVsZW1lbnRzOwogICAgIGZvciAoYXV0
byYgY2hpbGQgOiBkZXNjZW5kYW50c09mVHlwZTxIVE1MRWxlbWVudD4oKm92ZXJsYXlIb3N0LnVz
ZXJBZ2VudFNoYWRvd1Jvb3QoKSkpIHsKICAgICAgICAgaWYgKGNoaWxkLmlzSW1hZ2VPdmVybGF5
RGF0YURldGVjdG9yUmVzdWx0KCkgJiYgY2hpbGQucmVuZGVyZXIoKSkKLSAgICAgICAgICAgIGRh
dGFEZXRlY3RvclJlc3VsdEVsZW1lbnRzLmFwcGVuZChtYWtlUmVmKGNoaWxkKSk7CisgICAgICAg
ICAgICBkYXRhRGV0ZWN0b3JSZXN1bHRFbGVtZW50cy5hcHBlbmQoY2hpbGQpOwogICAgIH0KIAog
ICAgIEhhc2hTZXQ8UmVmPEhUTUxFbGVtZW50Pj4gZGF0YURldGVjdG9yUmVzdWx0RWxlbWVudHNX
aXRoSGlnaGxpZ2h0czsKQEAgLTIwMyw3ICsyMDMsNyBAQCB2b2lkIEltYWdlT3ZlcmxheUNvbnRy
b2xsZXI6OmVsZW1lbnRVbmRlck1vdXNlRGlkQ2hhbmdlKEZyYW1lJiBmcmFtZSwgRWxlbWVudCog
ZQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgYXV0byBpbWFnZU92ZXJsYXlIb3N0ID0g
bWFrZVJlZihkb3duY2FzdDxIVE1MRWxlbWVudD4oKnNoYWRvd0hvc3QpKTsKKyAgICBSZWYgaW1h
Z2VPdmVybGF5SG9zdCA9IGRvd25jYXN0PEhUTUxFbGVtZW50Pigqc2hhZG93SG9zdCk7CiAgICAg
aWYgKCFpbWFnZU92ZXJsYXlIb3N0LT5oYXNJbWFnZU92ZXJsYXkoKSkgewogICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgbV9ob3N0RWxlbWVudEZvckRhdGFEZXRlY3RvcnMg
PSBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFj
L1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVNYWMubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU1h
Yy5tbQppbmRleCBiODI0NGUzZGViZWQ1MzkxNjFmZjM1NTUzNTk2MWM2MjNiNWFiNTg5Li5hOGM3
ODU5YjkwZDQwMzBjYjMxMjAzNDZhYTE5OWI5NmI1MjlmYjEyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxl
Z2F0ZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xs
aW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU1hYy5tbQpAQCAtMjE1LDcgKzIxNSw3IEBAIGJv
b2wgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU1hYzo6aXNQaW5uZWRGb3JTY3Jv
bGxEZWx0YU9uQXhpcyhmbG9hdCBzCiAKIHN0ZDo6dW5pcXVlX3B0cjxTY3JvbGxpbmdFZmZlY3Rz
Q29udHJvbGxlclRpbWVyPiBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTWFjOjpj
cmVhdGVUaW1lcihGdW5jdGlvbjx2b2lkKCk+JiYgZnVuY3Rpb24pCiB7Ci0gICAgcmV0dXJuIFdU
Rjo6bWFrZVVuaXF1ZTxTY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlclRpbWVyPihSdW5Mb29wOjpj
dXJyZW50KCksIFtmdW5jdGlvbiA9IFdURk1vdmUoZnVuY3Rpb24pLCBwcm90ZWN0ZWROb2RlID0g
bWFrZVJlZihzY3JvbGxpbmdOb2RlKCkpXSB7CisgICAgcmV0dXJuIFdURjo6bWFrZVVuaXF1ZTxT
Y3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlclRpbWVyPihSdW5Mb29wOjpjdXJyZW50KCksIFtmdW5j
dGlvbiA9IFdURk1vdmUoZnVuY3Rpb24pLCBwcm90ZWN0ZWROb2RlID0gUmVmIHsgc2Nyb2xsaW5n
Tm9kZSgpIH1dIHsKICAgICAgICAgTG9ja2VyIGxvY2tlciB7IHByb3RlY3RlZE5vZGUtPnNjcm9s
bGluZ1RyZWUoKS50cmVlTG9jaygpIH07CiAgICAgICAgIGZ1bmN0aW9uKCk7CiAgICAgfSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGlu
Z0Nvb3JkaW5hdG9yTmljb3NpYS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9u
aWNvc2lhL1Njcm9sbGluZ0Nvb3JkaW5hdG9yTmljb3NpYS5jcHAKaW5kZXggZmM1MTUxOThlYTJl
MWU4ZDgyYmU3ZWViMmIyMjE2MzllNDExODgwMy4uYTE4NjIyMTVkMTg0M2JmZTRjZjY3YmVlNDcy
NDMzN2RkNjgyNzgzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcv
bmljb3NpYS9TY3JvbGxpbmdDb29yZGluYXRvck5pY29zaWEuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nQ29vcmRpbmF0b3JOaWNvc2lhLmNw
cApAQCAtNzcsNyArNzcsNyBAQCBib29sIFNjcm9sbGluZ0Nvb3JkaW5hdG9yTmljb3NpYTo6aGFu
ZGxlV2hlZWxFdmVudEZvclNjcm9sbGluZyhjb25zdCBQbGF0Zm9ybVdoZQogICAgIEFTU0VSVCht
X3BhZ2UpOwogICAgIEFTU0VSVChzY3JvbGxpbmdUcmVlKCkpOwogCi0gICAgU2Nyb2xsaW5nVGhy
ZWFkOjpkaXNwYXRjaChbdGhyZWFkZWRTY3JvbGxpbmdUcmVlID0gbWFrZVJlZihkb3duY2FzdDxU
aHJlYWRlZFNjcm9sbGluZ1RyZWU+KCpzY3JvbGxpbmdUcmVlKCkpKSwgd2hlZWxFdmVudCwgdGFy
Z2V0Tm9kZSwgZ2VzdHVyZVN0YXRlXSB7CisgICAgU2Nyb2xsaW5nVGhyZWFkOjpkaXNwYXRjaChb
dGhyZWFkZWRTY3JvbGxpbmdUcmVlID0gUmVmIHsgZG93bmNhc3Q8VGhyZWFkZWRTY3JvbGxpbmdU
cmVlPigqc2Nyb2xsaW5nVHJlZSgpKSB9LCB3aGVlbEV2ZW50LCB0YXJnZXROb2RlLCBnZXN0dXJl
U3RhdGVdIHsKICAgICAgICAgdGhyZWFkZWRTY3JvbGxpbmdUcmVlLT5oYW5kbGVXaGVlbEV2ZW50
QWZ0ZXJNYWluVGhyZWFkKHdoZWVsRXZlbnQsIHRhcmdldE5vZGUsIGdlc3R1cmVTdGF0ZSk7CiAg
ICAgfSk7CiAgICAgcmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9CaXRtYXBJbWFnZS5jcHAKaW5kZXggY2I5NmRlZjU5Yjc2OGE3MDQ5YjkyMTkyMzUz
ODNjOTZlNjdlMThhNi4uMjBiZDExOGUwYTQ2ZTBiZWMyMmE3YTJjMWNjNGQ0OTgyNjQ0OTM0YSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNw
cApAQCAtMTk5LDcgKzE5OSw3IEBAIFZlY3RvcjxSZWY8TmF0aXZlSW1hZ2U+PiBCaXRtYXBJbWFn
ZTo6ZnJhbWVzTmF0aXZlSW1hZ2VzKCkKIAogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY291
bnQ7ICsraSkgewogICAgICAgICBpZiAoYXV0byBpbWFnZSA9IGZyYW1lSW1hZ2VBdEluZGV4Q2Fj
aGVJZk5lZWRlZChpKSkKLSAgICAgICAgICAgIGltYWdlcy5hcHBlbmQobWFrZVJlZigqaW1hZ2Up
KTsKKyAgICAgICAgICAgIGltYWdlcy5hcHBlbmQoKmltYWdlKTsKICAgICB9CiAKICAgICByZXR1
cm4gaW1hZ2VzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Rm9udENhc2NhZGVGb250cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9G
b250Q2FzY2FkZUZvbnRzLmNwcAppbmRleCA0YTU0MDU0ODcxMTliZGJjMWZkNzJhNDkyNGQzNTZl
OTY4NDkwMThkLi5jZGY4YmE1MTY0NmVjOTA2ZGRmMDA1YTAxZmY2ZjY4ZWZlYmY0MmI3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZUZvbnRz
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZUZv
bnRzLmNwcApAQCAtMTA2LDcgKzEwNiw3IEBAIEZvbnRDYXNjYWRlRm9udHM6OkZvbnRDYXNjYWRl
Rm9udHMoUmVmUHRyPEZvbnRTZWxlY3Rvcj4mJiBmb250U2VsZWN0b3IpCiB7CiAjaWYgQVNTRVJU
X0VOQUJMRUQKICAgICBpZiAoIWlzTWFpblRocmVhZCgpKQotICAgICAgICBtX3RocmVhZCA9IG1h
a2VSZWYoVGhyZWFkOjpjdXJyZW50KCkpOworICAgICAgICBtX3RocmVhZCA9IFRocmVhZDo6Y3Vy
cmVudCgpOwogI2VuZGlmCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ltYWdlU291cmNlLmNwcAppbmRleCA4MzQ5MzVjYzQ5OWJlMTg3ZmVlOWMxMDY5NjA0YzI0
M2E4MjI5OGE4Li4yMjlhM2Y3Y2NiZmNmN2I2NjI5YTRlOGMyNWU0MzEzYTBhMzAwMjQyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwCkBA
IC0zNTMsNyArMzUzLDcgQEAgdm9pZCBJbWFnZVNvdXJjZTo6c3RhcnRBc3luY0RlY29kaW5nUXVl
dWUoKQogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAKICAgICAvLyBXZSBuZWVkIHRvIHBy
b3RlY3QgdGhpcywgbV9kZWNvZGluZ1F1ZXVlIGFuZCBtX2RlY29kZXIgZnJvbSBiZWluZyBkZWxl
dGVkIHdoaWxlIHdlIGFyZSBpbiB0aGUgZGVjb2RpbmcgbG9vcC4KLSAgICBkZWNvZGluZ1F1ZXVl
KCkuZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBwcm90ZWN0ZWREZWNv
ZGluZ1F1ZXVlID0gbWFrZVJlZihkZWNvZGluZ1F1ZXVlKCkpLCBwcm90ZWN0ZWRGcmFtZVJlcXVl
c3RRdWV1ZSA9IG1ha2VSZWYoZnJhbWVSZXF1ZXN0UXVldWUoKSksIHByb3RlY3RlZERlY29kZXIg
PSBtYWtlUmVmKCptX2RlY29kZXIpLCBzb3VyY2VVUkwgPSBzb3VyY2VVUkwoKS5zdHJpbmcoKS5p
c29sYXRlZENvcHkoKV0gKCkgbXV0YWJsZSB7CisgICAgZGVjb2RpbmdRdWV1ZSgpLmRpc3BhdGNo
KFtwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgcHJvdGVjdGVkRGVjb2RpbmdRdWV1ZSA9
IFJlZiB7IGRlY29kaW5nUXVldWUoKSB9LCBwcm90ZWN0ZWRGcmFtZVJlcXVlc3RRdWV1ZSA9IFJl
ZiB7IGZyYW1lUmVxdWVzdFF1ZXVlKCkgfSwgcHJvdGVjdGVkRGVjb2RlciA9IFJlZiB7ICptX2Rl
Y29kZXIgfSwgc291cmNlVVJMID0gc291cmNlVVJMKCkuc3RyaW5nKCkuaXNvbGF0ZWRDb3B5KCld
ICgpIG11dGFibGUgewogICAgICAgICBJbWFnZUZyYW1lUmVxdWVzdCBmcmFtZVJlcXVlc3Q7CiAg
ICAgICAgIFNlY29uZHMgbWluRGVjb2RpbmdEdXJhdGlvbiA9IHByb3RlY3RlZFRoaXMtPmZyYW1l
RGVjb2RpbmdEdXJhdGlvbkZvclRlc3RpbmcoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTG9jYWxTYW1wbGVCdWZmZXJE
aXNwbGF5TGF5ZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9Mb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5tbQppbmRleCBiM2VmYTQw
MmQ0NWI4OGU3YmFhZDYwNWJhYjZjYWI0NTBkMWZmMTE5Li4zZTJmNzE5OTBkYzIzZTM0MjI2ZDgx
ZWNhZmMxY2NmMjVkYTRhNDZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Mb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9Mb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5tbQpAQCAtMzEyLDcgKzMxMiw3IEBAIHZv
aWQgTG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OmVucXVldWVTYW1wbGUoTWVkaWFTYW1w
bGUmIHNhbXBsZSkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1fcHJvY2Vzc2luZ1F1
ZXVlLT5kaXNwYXRjaChbdGhpcywgc2FtcGxlID0gbWFrZVJlZihzYW1wbGUpXSB7CisgICAgbV9w
cm9jZXNzaW5nUXVldWUtPmRpc3BhdGNoKFt0aGlzLCBzYW1wbGUgPSBSZWYgeyBzYW1wbGUgfV0g
ewogICAgICAgICBpZiAoIVttX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllciBpc1JlYWR5Rm9yTW9y
ZU1lZGlhRGF0YV0pIHsKICAgICAgICAgICAgIFJFTEVBU0VfTE9HKFdlYlJUQywgIkxvY2FsU2Ft
cGxlQnVmZmVyRGlzcGxheUxheWVyOjplbnF1ZXVlU2FtcGxlICgle3B1YmxpY31zKSBub3QgcmVh
ZHkgZm9yIG1vcmUgbWVkaWEgZGF0YSIsIG1fbG9nSWRlbnRpZmllci51dGY4KCkuZGF0YSgpKTsK
ICAgICAgICAgICAgIGFkZFNhbXBsZVRvUGVuZGluZ1F1ZXVlKHNhbXBsZSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3Vy
Y2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLm1tCmluZGV4
IGZmYTJmYmEwZGYwNmU4ZWRkNjRhYmNjYmQ0ZjdhYWU1MzAwOTdmNTIuLmMxYzU2NjE4NWNhN2M1
NDY3YTkyZGFhNGJmYzE5ZDRiMDY4YjNlZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZP
YmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLm1tCkBAIC0zNjgsNyArMzY4LDcgQEAg
dm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6ZGlkUGFyc2VJbml0aWFsaXphdGlvbkRh
dGEoSW5pdGlhbGl6YXRpb25TZWdtZW4KICAgICAgICAgICAgIGlmICghd2Vha1RoaXMpCiAgICAg
ICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgICAgICBhdXRvIHZpZGVvVHJhY2tTZWxlY3Rl
ZENoYW5nZWQgPSBbd2Vha1RoaXMsIHRoaXMsIHRyYWNrUmVmID0gbWFrZVJlZih0cmFjayksIHNl
bGVjdGVkXSB7CisgICAgICAgICAgICBhdXRvIHZpZGVvVHJhY2tTZWxlY3RlZENoYW5nZWQgPSBb
d2Vha1RoaXMsIHRoaXMsIHRyYWNrUmVmID0gUmVmIHsgdHJhY2sgfSwgc2VsZWN0ZWRdIHsKICAg
ICAgICAgICAgICAgICBpZiAoIXdlYWtUaGlzKQogICAgICAgICAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgICAgICAgICAgdHJhY2tEaWRDaGFuZ2VTZWxlY3RlZCh0cmFja1JlZiwgc2VsZWN0
ZWQpOwpAQCAtMzkwLDcgKzM5MCw3IEBAIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6
OmRpZFBhcnNlSW5pdGlhbGl6YXRpb25EYXRhKEluaXRpYWxpemF0aW9uU2VnbWVuCiAgICAgICAg
ICAgICBpZiAoIXdlYWtUaGlzKQogICAgICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICAg
ICAgYXV0byBhdWRpb1RyYWNrRW5hYmxlZENoYW5nZWQ9IFt3ZWFrVGhpcywgdGhpcywgdHJhY2tS
ZWYgPSBtYWtlUmVmKHRyYWNrKSwgZW5hYmxlZF0geworICAgICAgICAgICAgYXV0byBhdWRpb1Ry
YWNrRW5hYmxlZENoYW5nZWQ9IFt3ZWFrVGhpcywgdGhpcywgdHJhY2tSZWYgPSBSZWYgeyB0cmFj
ayB9LCBlbmFibGVkXSB7CiAgICAgICAgICAgICAgICAgaWYgKCF3ZWFrVGhpcykKICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRHTENHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dEdMQ0cuY3BwCmluZGV4IGY1Nzk4NDQ2
YjhhM2M3ZTliMWIwYmM2ZGE2N2RmZDg3NzIwZWEzZjUuLmY3OWYyMmUzMTNlYTExNzM4OWM1ZjQw
OWRkMGY0OTRhZTE1YWViOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dEdMQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dEdMQ0cuY3BwCkBAIC01MjEsNyArNTIx
LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cGFpbnRUb0NhbnZhcyhjb25zdCBH
cmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmIHMKICAgICBlbHNlCiAgICAgICAgIGJpdG1hcElu
Zm8gfD0ga0NHSW1hZ2VBbHBoYUxhc3Q7CiAKLSAgICBhdXRvIHBpeGVsQXJyYXkgPSBtYWtlUmVm
KHBpeGVsQnVmZmVyLmRhdGEoKSk7CisgICAgUmVmIHBpeGVsQXJyYXkgPSBwaXhlbEJ1ZmZlci5k
YXRhKCk7CiAgICAgYXV0byBkYXRhU2l6ZSA9IHBpeGVsQXJyYXktPmJ5dGVMZW5ndGgoKTsKICAg
ICBhdXRvIGRhdGEgPSBwaXhlbEFycmF5LT5kYXRhKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCYWNrZW5kLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCYWNrZW5kLmNw
cAppbmRleCBhYTc5YTMyNzQwOTQ4YmI0YmM5MGYwYmRlODNlOTFkOGE1NmYwNmI4Li5hZjU5YTAx
ZTdhZmUxZjUzYThmYzdmMGFkM2YwYjQ5NzE1MDQ1OGJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQmFja2VuZC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0JhY2tlbmQu
Y3BwCkBAIC0xODksNyArMTg5LDcgQEAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IEltYWdlQnVmZmVy
Q0dCYWNrZW5kOjpjb3B5Q0dJbWFnZUZvckVuY29kaW5nKENGU3RyaW5nUmVmIGQKICAgICAgICAg
aWYgKCFwaXhlbEJ1ZmZlcikKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgICAg
IGF1dG8gcGl4ZWxBcnJheSA9IG1ha2VSZWYocGl4ZWxCdWZmZXItPmRhdGEoKSk7CisgICAgICAg
IFJlZiBwaXhlbEFycmF5ID0gcGl4ZWxCdWZmZXItPmRhdGEoKTsKICAgICAgICAgYXV0byBkYXRh
U2l6ZSA9IHBpeGVsQXJyYXktPmJ5dGVMZW5ndGgoKTsKICAgICAgICAgYXV0byBkYXRhID0gcGl4
ZWxBcnJheS0+ZGF0YSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5oCmluZGV4IDRhYzVkYjJlODRm
ZTc0OGJkMzc2MjdlODg0OGEzYThlMTQ0Y2EwN2UuLjIyNjg0ZGMzOThlMWVmNTJjMWJkOTY2ZmY0
NTAzNzIzN2RjZjJhZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5oCkBAIC0xMTQsMjEgKzExNCwy
MSBAQCBwcml2YXRlOgogICAgIHZvaWQgY2FjaGVJbWFnZUJ1ZmZlcihXZWJDb3JlOjpJbWFnZUJ1
ZmZlciYgaW1hZ2VCdWZmZXIpCiAgICAgewogICAgICAgICBtX2ltYWdlQnVmZmVycy5lbnN1cmUo
aW1hZ2VCdWZmZXIucmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKCksIFsmXSgpIHsKLSAgICAg
ICAgICAgIHJldHVybiBtYWtlUmVmKGltYWdlQnVmZmVyKTsKKyAgICAgICAgICAgIHJldHVybiBS
ZWYgeyBpbWFnZUJ1ZmZlciB9OwogICAgICAgICB9KTsKICAgICB9CiAKICAgICB2b2lkIGNhY2hl
TmF0aXZlSW1hZ2UoTmF0aXZlSW1hZ2UmIGltYWdlKQogICAgIHsKICAgICAgICAgbV9uYXRpdmVJ
bWFnZXMuZW5zdXJlKGltYWdlLnJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcigpLCBbJl0oKSB7
Ci0gICAgICAgICAgICByZXR1cm4gbWFrZVJlZihpbWFnZSk7CisgICAgICAgICAgICByZXR1cm4g
UmVmIHsgaW1hZ2UgfTsKICAgICAgICAgfSk7CiAgICAgfQogCiAgICAgdm9pZCBjYWNoZUZvbnQo
Rm9udCYgZm9udCkKICAgICB7CiAgICAgICAgIG1fZm9udHMuZW5zdXJlKGZvbnQucmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyKCksIFsmXSgpIHsKLSAgICAgICAgICAgIHJldHVybiBtYWtlUmVm
KGZvbnQpOworICAgICAgICAgICAgcmV0dXJuIFJlZiB7IGZvbnQgfTsKICAgICAgICAgfSk7CiAg
ICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNw
bGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHAKaW5kZXggYTdjMjVhNzYz
MGY0ODViNTU2MWUxMTQ0ODdmNjU4ZmIxZDE5MDQ2Yi4uNzljOTZhZWNkMmUxZDc0ZDE3NjZmMmQ3
YWQ4ZjZmZDRlMzQxYjg3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcApA
QCAtMjM5LDkgKzIzOSw5IEBAIFNldFN0YXRlOjpTZXRTdGF0ZShjb25zdCBHcmFwaGljc0NvbnRl
eHRTdGF0ZUNoYW5nZSYgc3RhdGVDaGFuZ2UsIGNvbnN0IFBhdHRlcm5ECiB2b2lkIFNldFN0YXRl
OjphcHBseShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIE5hdGl2ZUltYWdlKiBzdHJva2VQYXR0
ZXJuSW1hZ2UsIE5hdGl2ZUltYWdlKiBmaWxsUGF0dGVybkltYWdlKQogewogICAgIGlmIChtX3N0
YXRlQ2hhbmdlLm1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0
cm9rZVBhdHRlcm5DaGFuZ2UpICYmIHN0cm9rZVBhdHRlcm5JbWFnZSkKLSAgICAgICAgbV9zdGF0
ZUNoYW5nZS5tX3N0YXRlLnN0cm9rZVBhdHRlcm4gPSBQYXR0ZXJuOjpjcmVhdGUobWFrZVJlZigq
c3Ryb2tlUGF0dGVybkltYWdlKSwgbV9zdHJva2VQYXR0ZXJuLnBhcmFtZXRlcnMpOworICAgICAg
ICBtX3N0YXRlQ2hhbmdlLm1fc3RhdGUuc3Ryb2tlUGF0dGVybiA9IFBhdHRlcm46OmNyZWF0ZSgq
c3Ryb2tlUGF0dGVybkltYWdlLCBtX3N0cm9rZVBhdHRlcm4ucGFyYW1ldGVycyk7CiAgICAgaWYg
KG1fc3RhdGVDaGFuZ2UubV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0
ZTo6RmlsbFBhdHRlcm5DaGFuZ2UpICYmIGZpbGxQYXR0ZXJuSW1hZ2UpCi0gICAgICAgIG1fc3Rh
dGVDaGFuZ2UubV9zdGF0ZS5maWxsUGF0dGVybiA9IFBhdHRlcm46OmNyZWF0ZShtYWtlUmVmKCpm
aWxsUGF0dGVybkltYWdlKSwgbV9maWxsUGF0dGVybi5wYXJhbWV0ZXJzKTsKKyAgICAgICAgbV9z
dGF0ZUNoYW5nZS5tX3N0YXRlLmZpbGxQYXR0ZXJuID0gUGF0dGVybjo6Y3JlYXRlKCpmaWxsUGF0
dGVybkltYWdlLCBtX2ZpbGxQYXR0ZXJuLnBhcmFtZXRlcnMpOwogICAgIG1fc3RhdGVDaGFuZ2Uu
YXBwbHkoY29udGV4dCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvTWVkaWFTb3VyY2VUcmFja0dTdHJlYW1lci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL01lZGlhU291cmNl
VHJhY2tHU3RyZWFtZXIuY3BwCmluZGV4IGQxODc5MmNjYTI5NTFhYzE2MDQ1OGEzYjk4ODI5Y2I1
N2U4NWUxY2YuLjhlOTlkYjVmNzQ2ZGQzNjM3YTI4MGU2ZTM2YWMzZWU3ODBhNzQ0NzMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvTWVk
aWFTb3VyY2VUcmFja0dTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9NZWRpYVNvdXJjZVRyYWNrR1N0cmVhbWVyLmNwcApAQCAt
NTMsNyArNTMsNyBAQCBNZWRpYVNvdXJjZVRyYWNrR1N0cmVhbWVyOjp+TWVkaWFTb3VyY2VUcmFj
a0dTdHJlYW1lcigpCiAKIFJlZjxNZWRpYVNvdXJjZVRyYWNrR1N0cmVhbWVyPiBNZWRpYVNvdXJj
ZVRyYWNrR1N0cmVhbWVyOjpjcmVhdGUoVHJhY2tQcml2YXRlQmFzZUdTdHJlYW1lcjo6VHJhY2tU
eXBlIHR5cGUsIEF0b21TdHJpbmcgdHJhY2tJZCwgR1JlZlB0cjxHc3RDYXBzPiYmIGluaXRpYWxD
YXBzKQogewotICAgIHJldHVybiBtYWtlUmVmKCpuZXcgTWVkaWFTb3VyY2VUcmFja0dTdHJlYW1l
cih0eXBlLCB0cmFja0lkLCBXVEZNb3ZlKGluaXRpYWxDYXBzKSkpOworICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IE1lZGlhU291cmNlVHJhY2tHU3RyZWFtZXIodHlwZSwgdHJhY2tJZCwgV1RGTW92
ZShpbml0aWFsQ2FwcykpKTsKIH0KIAogYm9vbCBNZWRpYVNvdXJjZVRyYWNrR1N0cmVhbWVyOjpp
c1JlYWR5Rm9yTW9yZVNhbXBsZXMoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9XZWJLaXRNZWRpYVNvdXJjZUdTdHJlYW1lci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL1dlYktpdE1l
ZGlhU291cmNlR1N0cmVhbWVyLmNwcAppbmRleCA5ZGZlOTQ1MTM4ZGY4N2U3M2JjNjM2MzU4M2Yy
OWEwYTRkZDFiNTMyLi41ZDViZmFkMjE3OWExY2ZhM2Y2MGI4NWE5MmM3MjBkYTI5MDM2NTNkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNl
L1dlYktpdE1lZGlhU291cmNlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL1dlYktpdE1lZGlhU291cmNlR1N0cmVhbWVyLmNw
cApAQCAtMjg3LDcgKzI4Nyw3IEBAIHZvaWQgd2ViS2l0TWVkaWFTcmNFbWl0U3RyZWFtcyhXZWJL
aXRNZWRpYVNyYyogc291cmNlLCBjb25zdCBWZWN0b3I8UmVmUHRyPE1lZGlhCiAgICAgICAgIGdz
dF9wYWRfc2V0X2FjdGl2YXRlbW9kZV9mdW5jdGlvbihHU1RfUEFEKHBhZC5nZXQoKSksIHdlYktp
dE1lZGlhU3JjQWN0aXZhdGVNb2RlKTsKIAogICAgICAgICBBU1NFUlQodHJhY2stPmluaXRpYWxD
YXBzKCkpOwotICAgICAgICBSZWZQdHI8U3RyZWFtPiBzdHJlYW0gPSBhZG9wdFJlZihuZXcgU3Ry
ZWFtKHNvdXJjZSwgR1JlZlB0cjxHc3RQYWQ+KEdTVF9QQUQocGFkLmdldCgpKSksIG1ha2VSZWYo
KnRyYWNrKSwKKyAgICAgICAgYXV0byBzdHJlYW0gPSBhZG9wdFJlZihuZXcgU3RyZWFtKHNvdXJj
ZSwgR1JlZlB0cjxHc3RQYWQ+KEdTVF9QQUQocGFkLmdldCgpKSksICp0cmFjaywKICAgICAgICAg
ICAgIGFkb3B0R1JlZihnc3Rfc3RyZWFtX25ldyh0cmFjay0+dHJhY2tJZCgpLnN0cmluZygpLnV0
ZjgoKS5kYXRhKCksIHRyYWNrLT5pbml0aWFsQ2FwcygpLmdldCgpLCBnc3RTdHJlYW1UeXBlKHRy
YWNrLT50eXBlKCkpLCBHU1RfU1RSRUFNX0ZMQUdfU0VMRUNUKSkpKTsKICAgICAgICAgcGFkLT5w
cml2LT5zdHJlYW0gPSBzdHJlYW07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL21hYy9JbWFnZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL21hYy9JbWFnZU1hYy5tbQppbmRleCBiOTk2NGQ4OTgwNDA3ODhjYjQxNTk3OGNjZmEz
YzRiYWRmZGE3MGMwLi41MzZiZGViMjMwMTA4ZDljZWY3NzQyZjMwNDBiYTZlYzY1Zjc2MWViIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvSW1hZ2VNYWMu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ltYWdlTWFjLm1t
CkBAIC0xMzEsNyArMTMxLDcgQEAgUmV0YWluUHRyPE5TSW1hZ2U+IEJpdG1hcEltYWdlOjpzbmFw
c2hvdE5TSW1hZ2UoKQogICAgIGlmICghbmF0aXZlSW1hZ2UpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogCi0gICAgYXV0byBkYXRhID0gdGlmZlJlcHJlc2VudGF0aW9uKHsgbWFrZVJlZigqbmF0
aXZlSW1hZ2UpIH0pOworICAgIGF1dG8gZGF0YSA9IHRpZmZSZXByZXNlbnRhdGlvbih7IFJlZiB7
ICpuYXRpdmVJbWFnZSB9IH0pOwogICAgIGlmICghZGF0YSkKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29z
aWEvTmljb3NpYVNjZW5lSW50ZWdyYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lhU2NlbmVJbnRlZ3JhdGlvbi5jcHAKaW5kZXggODE0MmRh
N2FlY2VlMzBhODcwYzVlMjIwZmE5YjE4ODA1ZjQ4OWJiMy4uMDFmNWExNzgyOTVjMzY3ZTA5ZWRi
MWIzOGVhYjQ3OTc2ZWIwZjZkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lhU2NlbmVJbnRlZ3JhdGlvbi5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lhU2NlbmVJbnRlZ3JhdGlv
bi5jcHAKQEAgLTM2LDcgKzM2LDcgQEAgbmFtZXNwYWNlIE5pY29zaWEgewogCiBTY2VuZUludGVn
cmF0aW9uOjpTY2VuZUludGVncmF0aW9uKFNjZW5lJiBzY2VuZSwgQ2xpZW50JiBjbGllbnQpCiB7
Ci0gICAgbV9jbGllbnQuc2NlbmUgPSBtYWtlUmVmKHNjZW5lKTsKKyAgICBtX2NsaWVudC5zY2Vu
ZSA9ICZzY2VuZTsKICAgICBtX2NsaWVudC5vYmplY3QgPSAmY2xpZW50OwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvRGF0YURldGVjdG9ySGlnaGxpZ2h0Lm1t
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0RhdGFEZXRlY3RvckhpZ2hsaWdodC5tbQpp
bmRleCAwNTAwZDcxYzJhM2U2OGJiMmRlNDU4ZGIzNTU0M2U5NjFmZTk4MGRmLi4xYTVhNDIxYzRl
NzlmZjhiOWVhOTg5YjE2MTkyODQ5MWYxZWJhMjBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tYWMvRGF0YURldGVjdG9ySGlnaGxpZ2h0Lm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21hYy9EYXRhRGV0ZWN0b3JIaWdobGlnaHQubW0KQEAgLTE2NSw3ICsxNjUs
NyBAQCB2b2lkIERhdGFEZXRlY3RvckhpZ2hsaWdodDo6ZmFkZU91dCgpCiAgICAgW2FuaW1hdGlv
biBzZXRUb1ZhbHVlOkAwXTsKIAogICAgIFtDQVRyYW5zYWN0aW9uIGJlZ2luXTsKLSAgICBbQ0FU
cmFuc2FjdGlvbiBzZXRDb21wbGV0aW9uQmxvY2s6W3Byb3RlY3RlZFNlbGYgPSBtYWtlUmVmKCp0
aGlzKV0oKSBtdXRhYmxlIHsKKyAgICBbQ0FUcmFuc2FjdGlvbiBzZXRDb21wbGV0aW9uQmxvY2s6
W3Byb3RlY3RlZFNlbGYgPSBSZWYgeyAqdGhpcyB9XSgpIG11dGFibGUgewogICAgICAgICBwcm90
ZWN0ZWRTZWxmLT5kaWRGaW5pc2hGYWRlT3V0QW5pbWF0aW9uKCk7CiAgICAgfV07CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9nc3Ry
ZWFtZXIvUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlTGliV2ViUlRDLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9nc3RyZWFtZXIvUmVhbHRpbWVJ
bmNvbWluZ1ZpZGVvU291cmNlTGliV2ViUlRDLmNwcAppbmRleCA4M2NiNDFiNDdiMDA2YTg1OTUy
Zjg1ZDc2YmRlOWU4N2ZjZWVhMDRlLi5lNjlmYzI3OGY0OTVmNThhZTkwYzk1ZDUwZWE2ZTg1NjRl
YTA1M2EwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9s
aWJ3ZWJydGMvZ3N0cmVhbWVyL1JlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZUxpYldlYlJUQy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL2dz
dHJlYW1lci9SZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2VMaWJXZWJSVEMuY3BwCkBAIC01OCw3
ICs1OCw3IEBAIHZvaWQgUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlTGliV2ViUlRDOjpPbkZy
YW1lKGNvbnN0IHdlYnJ0Yzo6VmlkZW9GcmFtZSYgZnJhCiAgICAgaWYgKCFpc1Byb2R1Y2luZ0Rh
dGEoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgY2FsbE9uTWFpblRocmVhZChbcHJvdGVjdGVk
VGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBmcmFtZV0geworICAgIGNhbGxPbk1haW5UaHJlYWQoW3By
b3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBmcmFtZV0gewogICAgICAgICBhdXRvIGdzdFNh
bXBsZSA9IEdTdHJlYW1lclNhbXBsZUZyb21MaWJXZWJSVENWaWRlb0ZyYW1lKGZyYW1lKTsKICAg
ICAgICAgYXV0byBzYW1wbGUgPSBNZWRpYVNhbXBsZUdTdHJlYW1lcjo6Y3JlYXRlKFdURk1vdmUo
Z3N0U2FtcGxlKSwgeyB9LCB7IH0pOwogICAgICAgICBwcm90ZWN0ZWRUaGlzLT52aWRlb1NhbXBs
ZUF2YWlsYWJsZShzYW1wbGUuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL2dzdHJlYW1lci9SZWFsdGltZU91dGdvaW5nQXVk
aW9Tb3VyY2VMaWJXZWJSVEMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vbGlid2VicnRjL2dzdHJlYW1lci9SZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2VMaWJXZWJS
VEMuY3BwCmluZGV4IDhjOWNjM2ZhMjUxMTM2NDIyMWFhOGVkOTU3ZWMyM2YxOGZlNTFlNDcuLmZl
NzFhNGQxNWQxOTE2YTllOGY4MWEwM2VlMmI3NjI1MDJiMDA3YTIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9nc3RyZWFtZXIvUmVhbHRp
bWVPdXRnb2luZ0F1ZGlvU291cmNlTGliV2ViUlRDLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvZ3N0cmVhbWVyL1JlYWx0aW1lT3V0Z29pbmdB
dWRpb1NvdXJjZUxpYldlYlJUQy5jcHAKQEAgLTg2LDcgKzg2LDcgQEAgdm9pZCBSZWFsdGltZU91
dGdvaW5nQXVkaW9Tb3VyY2VMaWJXZWJSVEM6OmF1ZGlvU2FtcGxlc0F2YWlsYWJsZShjb25zdCBN
ZWRpYVRpbWUKICAgICAgICAgYXV0byogYnVmZmVyID0gZ3N0X3NhbXBsZV9nZXRfYnVmZmVyKHNh
bXBsZS5nZXQoKSk7CiAgICAgICAgIGdzdF9hZGFwdGVyX3B1c2gobV9hZGFwdGVyLmdldCgpLCBn
c3RfYnVmZmVyX3JlZihidWZmZXIpKTsKICAgICB9Ci0gICAgTGliV2ViUlRDUHJvdmlkZXI6OmNh
bGxPbldlYlJUQ1NpZ25hbGluZ1RocmVhZChbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMp
XSB7CisgICAgTGliV2ViUlRDUHJvdmlkZXI6OmNhbGxPbldlYlJUQ1NpZ25hbGluZ1RocmVhZChb
cHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH1dIHsKICAgICAgICAgcHJvdGVjdGVkVGhpcy0+
cHVsbEF1ZGlvRGF0YSgpOwogICAgIH0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9Tb2NrZXRTdHJlYW1IYW5kbGUuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9Tb2NrZXRTdHJlYW1IYW5kbGUuY3BwCmluZGV4IDI3MGNhY2JlMDIw
Mjg2ZjU3MjUzNTdmMjE1Mjk1MWY1ZjM2ZjdlODUuLmU1YzMxZWM1N2QwOWEzNzg1NWMwYjFjZDRl
NGY4NTNjNDBiNDM1ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvU29ja2V0U3RyZWFtSGFuZGxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL1NvY2tldFN0cmVhbUhhbmRsZS5jcHAKQEAgLTc2LDcgKzc2LDcgQEAgdm9pZCBTb2Nr
ZXRTdHJlYW1IYW5kbGU6OmNsb3NlKCkKIAogdm9pZCBTb2NrZXRTdHJlYW1IYW5kbGU6OmRpc2Nv
bm5lY3QoKQogewotICAgIGF1dG8gcHJvdGVjdCA9IG1ha2VSZWYoc3RhdGljX2Nhc3Q8U29ja2V0
U3RyZWFtSGFuZGxlJj4oKnRoaXMpKTsgLy8gcGxhdGZvcm1DbG9zZSBjYWxscyB0aGUgY2xpZW50
LCB3aGljaCBtYXkgbWFrZSB0aGUgaGFuZGxlIGdldCBkZWFsbG9jYXRlZCBpbW1lZGlhdGVseS4K
KyAgICBSZWYgcHJvdGVjdCA9IHN0YXRpY19jYXN0PFNvY2tldFN0cmVhbUhhbmRsZSY+KCp0aGlz
KTsgLy8gcGxhdGZvcm1DbG9zZSBjYWxscyB0aGUgY2xpZW50LCB3aGljaCBtYXkgbWFrZSB0aGUg
aGFuZGxlIGdldCBkZWFsbG9jYXRlZCBpbW1lZGlhdGVseS4KIAogICAgIHBsYXRmb3JtQ2xvc2Uo
KTsKICAgICBtX3N0YXRlID0gQ2xvc2VkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHAKaW5kZXggNGJkMjUwNDIzMmYxMmU5MDJm
MWNkZjRlOTNkM2YzODJiYTgzODJiNC4uYzA4ZmJkN2YyODUxZWVjMDUyZTNkZjY2YjgyMWVjNTE3
YjU4MWQzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJs
L0N1cmxSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvQ3VybFJlcXVlc3QuY3BwCkBAIC0yMDksNyArMjA5LDcgQEAgdm9pZCBDdXJsUmVxdWVzdDo6
Y2FsbENsaWVudChGdW5jdGlvbjx2b2lkKEN1cmxSZXF1ZXN0JiwgQ3VybFJlcXVlc3RDbGllbnQm
KT4mJgogewogICAgIHJ1bk9uTWFpblRocmVhZChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7
ICp0aGlzIH0sIHRhc2sgPSBXVEZNb3ZlKHRhc2spXSgpIG11dGFibGUgewogICAgICAgICBpZiAo
bV9jbGllbnQpCi0gICAgICAgICAgICB0YXNrKCp0aGlzLCBtYWtlUmVmKCptX2NsaWVudCkpOwor
ICAgICAgICAgICAgdGFzaygqdGhpcywgUmVmIHsgKm1fY2xpZW50IH0pOwogICAgIH0pOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJl
c291cmNlSGFuZGxlRGVsZWdhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0N1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlLmNwcAppbmRleCA3MzYzMTQ2NzgwODZk
NDJkNzQzMTlhYjY5OTcxMGI5YmYxYjIxZDE5Li44MThkNWE5NWUzZTEyNGRjM2E3MmY3NDNlNWNk
NDUzZDcxN2UwMTBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZS5jcHAKQEAg
LTEzNyw3ICsxMzcsNyBAQCB2b2lkIEN1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlOjpjdXJsRGlk
UmVjZWl2ZVJlc3BvbnNlKEN1cmxSZXF1ZXN0JiByZXF1ZXN0LCBDdQogCiAgICAgQ3VybENhY2hl
TWFuYWdlcjo6c2luZ2xldG9uKCkuZGlkUmVjZWl2ZVJlc3BvbnNlKG1faGFuZGxlLCBtX3Jlc3Bv
bnNlKTsKIAotICAgIG1faGFuZGxlLmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZVJlc3BvbnNl
KG1fcmVzcG9uc2UpLCBbdGhpcywgcHJvdGVjdGVkSGFuZGxlID0gbWFrZVJlZihtX2hhbmRsZSld
IHsKKyAgICBtX2hhbmRsZS5kaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VSZXNwb25zZShtX3Jl
c3BvbnNlKSwgW3RoaXMsIHByb3RlY3RlZEhhbmRsZSA9IFJlZiB7IG1faGFuZGxlIH1dIHsKICAg
ICAgICAgbV9oYW5kbGUuY29udGludWVBZnRlckRpZFJlY2VpdmVSZXNwb25zZSgpOwogICAgIH0p
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVCdWlsZGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlQnVpbGRlci5jcHAKaW5kZXggODM5Y2JlYjc1ZWVh
OTk5YzNlNzhiMWJjZWM3Yjk4Nzk3NzMwYjFjYS4uOWIxY2VkNDlmMDRkZDQ3YWM3MmM1NDM5NTU5
M2Y1ZDY2OWM5NDEwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVCdWls
ZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZUJ1aWxkZXIuY3BwCkBAIC0x
OTUsNyArMTk1LDcgQEAgdm9pZCBCdWlsZGVyOjphcHBseUN1c3RvbVByb3BlcnR5KGNvbnN0IFN0
cmluZyYgbmFtZSkKICAgICAgICAgaWYgKGluZGV4ICE9IFNlbGVjdG9yQ2hlY2tlcjo6TWF0Y2hE
ZWZhdWx0ICYmIG1fc3RhdGUuc3R5bGUoKS5pbnNpZGVMaW5rKCkgPT0gSW5zaWRlTGluazo6Tm90
SW5zaWRlKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgYXV0byB2YWx1ZVRvQXBw
bHkgPSBtYWtlUmVmKGRvd25jYXN0PENTU0N1c3RvbVByb3BlcnR5VmFsdWU+KCpwcm9wZXJ0eS5j
c3NWYWx1ZVtpbmRleF0pKTsKKyAgICAgICAgUmVmIHZhbHVlVG9BcHBseSA9IGRvd25jYXN0PENT
U0N1c3RvbVByb3BlcnR5VmFsdWU+KCpwcm9wZXJ0eS5jc3NWYWx1ZVtpbmRleF0pOwogCiAgICAg
ICAgIGlmIChpbkN5Y2xlKSB7CiAgICAgICAgICAgICBtX3N0YXRlLm1fYXBwbGllZEN1c3RvbVBy
b3BlcnRpZXMuYWRkKG5hbWUpOyAvLyBNYWtlIHN1cmUgd2UgZG8gbm90IHRyeSB0byBhcHBseSB0
aGlzIHByb3BlcnR5IGFnYWluIHdoaWxlIHJlc29sdmluZyBpdC4KQEAgLTIzMSw3ICsyMzEsNyBA
QCB2b2lkIEJ1aWxkZXI6OmFwcGx5Q3VzdG9tUHJvcGVydHkoY29uc3QgU3RyaW5nJiBuYW1lKQog
ICAgICAgICBpZiAoaW5kZXggIT0gU2VsZWN0b3JDaGVja2VyOjpNYXRjaERlZmF1bHQgJiYgbV9z
dGF0ZS5zdHlsZSgpLmluc2lkZUxpbmsoKSA9PSBJbnNpZGVMaW5rOjpOb3RJbnNpZGUpCiAgICAg
ICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBhdXRvIHZhbHVlVG9BcHBseSA9IG1ha2VSZWYo
ZG93bmNhc3Q8Q1NTQ3VzdG9tUHJvcGVydHlWYWx1ZT4oKnByb3BlcnR5LmNzc1ZhbHVlW2luZGV4
XSkpOworICAgICAgICBSZWYgdmFsdWVUb0FwcGx5ID0gZG93bmNhc3Q8Q1NTQ3VzdG9tUHJvcGVy
dHlWYWx1ZT4oKnByb3BlcnR5LmNzc1ZhbHVlW2luZGV4XSk7CiAKICAgICAgICAgaWYgKGluQ3lj
bGUgJiYgV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8Q1NTVmFyaWFibGVSZWZlcmVuY2VWYWx1
ZT4+KHZhbHVlVG9BcHBseS0+dmFsdWUoKSkpIHsKICAgICAgICAgICAgIC8vIFJlc29sdmUgdGhp
cyB2YWx1ZSBzbyB0aGF0IHdlIHJlc2V0IGl0cyBkZXBlbmRlbmNpZXMuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZUJ1aWxkZXJDdXN0b20uaCBiL1NvdXJjZS9XZWJDb3Jl
L3N0eWxlL1N0eWxlQnVpbGRlckN1c3RvbS5oCmluZGV4IDQzOTQ1YzVlZGVlMTQzNTI3MGViNTNm
ZTZmMDc0ODdiYTBiMTY2M2IuLmVmOTVhOGZiM2EwZDQyZjk0MjJlMjExN2NkNjI0Y2YyYTJlZjky
NTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlQnVpbGRlckN1c3RvbS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlQnVpbGRlckN1c3RvbS5oCkBAIC0yMDU3
LDkgKzIwNTcsOSBAQCBpbmxpbmUgdm9pZCBCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlQ3VzdG9t
UHJvcGVydHkoQnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUsCiAgICAgY29uc3QgYXV0byYgbmFt
ZSA9IHZhbHVlLm5hbWUoKTsKIAogICAgIGlmICghcmVnaXN0ZXJlZCB8fCByZWdpc3RlcmVkLT5p
bmhlcml0cykKLSAgICAgICAgYnVpbGRlclN0YXRlLnN0eWxlKCkuc2V0SW5oZXJpdGVkQ3VzdG9t
UHJvcGVydHlWYWx1ZShuYW1lLCBtYWtlUmVmKHZhbHVlKSk7CisgICAgICAgIGJ1aWxkZXJTdGF0
ZS5zdHlsZSgpLnNldEluaGVyaXRlZEN1c3RvbVByb3BlcnR5VmFsdWUobmFtZSwgdmFsdWUpOwog
ICAgIGVsc2UKLSAgICAgICAgYnVpbGRlclN0YXRlLnN0eWxlKCkuc2V0Tm9uSW5oZXJpdGVkQ3Vz
dG9tUHJvcGVydHlWYWx1ZShuYW1lLCBtYWtlUmVmKHZhbHVlKSk7CisgICAgICAgIGJ1aWxkZXJT
dGF0ZS5zdHlsZSgpLnNldE5vbkluaGVyaXRlZEN1c3RvbVByb3BlcnR5VmFsdWUobmFtZSwgdmFs
dWUpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZUJ1aWxk
ZXJTdGF0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZUJ1aWxkZXJTdGF0ZS5jcHAK
aW5kZXggNGE4YTc3OWU5N2U1ZWNiOGFlOTExNTJiYjYwZjk3NDdjMTUyMTJjNi4uZWU0ZGZiMjk0
YWM3OWZjOTI5NDc4YTYxMGE4MTZkMGNjMmM3ODhjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvc3R5bGUvU3R5bGVCdWlsZGVyU3RhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxl
L1N0eWxlQnVpbGRlclN0YXRlLmNwcApAQCAtOTYsNyArOTYsNyBAQCBSZWY8Q1NTVmFsdWU+IEJ1
aWxkZXJTdGF0ZTo6cmVzb2x2ZUltYWdlU3R5bGVzKENTU1ZhbHVlJiB2YWx1ZSkKICAgICAgICAg
cmV0dXJuIGRvd25jYXN0PENTU0ltYWdlU2V0VmFsdWU+KHZhbHVlKS52YWx1ZVdpdGhTdHlsZXNS
ZXNvbHZlZCgqdGhpcyk7CiAgICAgaWYgKGlzPENTU0ltYWdlVmFsdWU+KHZhbHVlKSkKICAgICAg
ICAgcmV0dXJuIGRvd25jYXN0PENTU0ltYWdlVmFsdWU+KHZhbHVlKS52YWx1ZVdpdGhTdHlsZXNS
ZXNvbHZlZCgqdGhpcyk7Ci0gICAgcmV0dXJuIG1ha2VSZWYodmFsdWUpOworICAgIHJldHVybiB2
YWx1ZTsKIH0KIAogUmVmUHRyPFN0eWxlSW1hZ2U+IEJ1aWxkZXJTdGF0ZTo6Y3JlYXRlU3R5bGVJ
bWFnZShDU1NWYWx1ZSYgdmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9T
dHlsZVNjb3BlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlU2NvcGUuY3BwCmluZGV4
IDlkZDg1YjIxZGY1YWQxMzE5MDVmYzM4ZTQyNDNiZDRiN2Q2ZWUyYTMuLjI1OTBmZmUyOTQ4NmVh
MGQ4NWJiNzlmNjYyNGY2YjgzNjY4NTc3OTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0
eWxlL1N0eWxlU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlU2NvcGUu
Y3BwCkBAIC0xMjEsNyArMTIxLDcgQEAgdm9pZCBTY29wZTo6Y3JlYXRlT3JGaW5kU2hhcmVkU2hh
ZG93VHJlZVJlc29sdmVyKCkKICAgICAgICAgbV9yZXNvbHZlci0+cnVsZVNldHMoKS5zZXRVc2Vz
U2hhcmVkVXNlclN0eWxlKCFpc0ZvclVzZXJBZ2VudFNoYWRvd1RyZWUoKSk7CiAgICAgICAgIG1f
cmVzb2x2ZXItPmFwcGVuZEF1dGhvclN0eWxlU2hlZXRzKG1fYWN0aXZlU3R5bGVTaGVldHMpOwog
Ci0gICAgICAgIHJldHVybiBtYWtlUmVmKCptX3Jlc29sdmVyKTsKKyAgICAgICAgcmV0dXJuIFJl
ZiB7ICptX3Jlc29sdmVyIH07CiAgICAgfSk7CiAKICAgICBpZiAoIXJlc3VsdC5pc05ld0VudHJ5
KSB7CkBAIC02ODIsMTQgKzY4MiwxNCBAQCBhdXRvIFNjb3BlOjpjb2xsZWN0UmVzb2x2ZXJTY29w
ZXMoKSAtPiBSZXNvbHZlclNjb3BlcwogCiAgICAgUmVzb2x2ZXJTY29wZXMgcmVzb2x2ZXJTY29w
ZXM7CiAKLSAgICByZXNvbHZlclNjb3Blcy5hZGQobWFrZVJlZigqcmVzb2x2ZXJJZkV4aXN0cygp
KSwgVmVjdG9yPENoZWNrZWRQdHI8U2NvcGU+PiB7IHRoaXMgfSk7CisgICAgcmVzb2x2ZXJTY29w
ZXMuYWRkKCpyZXNvbHZlcklmRXhpc3RzKCksIFZlY3RvcjxDaGVja2VkUHRyPFNjb3BlPj4geyB0
aGlzIH0pOwogCiAgICAgZm9yIChhdXRvKiBzaGFkb3dSb290IDogbV9kb2N1bWVudC5pbkRvY3Vt
ZW50U2hhZG93Um9vdHMoKSkgewogICAgICAgICBhdXRvJiBzY29wZSA9IHNoYWRvd1Jvb3QtPnN0
eWxlU2NvcGUoKTsKICAgICAgICAgYXV0byogcmVzb2x2ZXIgPSBzY29wZS5yZXNvbHZlcklmRXhp
c3RzKCk7CiAgICAgICAgIGlmICghcmVzb2x2ZXIpCiAgICAgICAgICAgICBjb250aW51ZTsKLSAg
ICAgICAgcmVzb2x2ZXJTY29wZXMuYWRkKG1ha2VSZWYoKnJlc29sdmVyKSwgVmVjdG9yPENoZWNr
ZWRQdHI8U2NvcGU+PiB7IH0pLml0ZXJhdG9yLT52YWx1ZS5hcHBlbmQoJnNjb3BlKTsKKyAgICAg
ICAgcmVzb2x2ZXJTY29wZXMuYWRkKCpyZXNvbHZlciwgVmVjdG9yPENoZWNrZWRQdHI8U2NvcGU+
PiB7IH0pLml0ZXJhdG9yLT52YWx1ZS5hcHBlbmQoJnNjb3BlKTsKICAgICB9CiAgICAgcmV0dXJu
IHJlc29sdmVyU2NvcGVzOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0Vs
ZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwCmluZGV4IDE1Y2Fh
NDVjZjkzYzVmYjg0Yzc4MTQ5YjE1Mzk4MmRiNDdiZDE2OGEuLmFjN2E3ZDUzYjVmOWU2MGEyYTQ4
Nzk5NDY1MGVkYjgyMTAxYjgzZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdF
bGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5jcHAKQEAgLTI1
MCw3ICsyNTAsNyBAQCB2b2lkIFNWR0VsZW1lbnQ6OnJlbW92ZWRGcm9tQW5jZXN0b3IoUmVtb3Zh
bFR5cGUgcmVtb3ZhbFR5cGUsIENvbnRhaW5lck5vZGUmIG9sZAogICAgICAgICBpZiAobV9zdmdS
YXJlRGF0YSkgewogICAgICAgICAgICAgZm9yIChhdXRvJiBlbGVtZW50IDogbV9zdmdSYXJlRGF0
YS0+dGFrZVJlZmVyZW5jaW5nRWxlbWVudHMoKSkgewogICAgICAgICAgICAgICAgIGV4dGVuc2lv
bnMuYWRkRWxlbWVudFRvUmVidWlsZChlbGVtZW50KTsKLSAgICAgICAgICAgICAgICBtYWtlUmVm
KGVsZW1lbnQpLT5jbGVhclRhcmdldCgpOworICAgICAgICAgICAgICAgIFJlZiB7IGVsZW1lbnQg
fS0+Y2xlYXJUYXJnZXQoKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIFJFTEVBU0VfQVNT
RVJUKG1fc3ZnUmFyZURhdGEtPnJlZmVyZW5jaW5nRWxlbWVudHMoKS5jb21wdXRlc0VtcHR5KCkp
OwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFs
cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKaW5kZXggYWVjNzYw
ZTU0YTlmNmRiYjlhYTI3ZGQwYjdiNDM3Mjk4ZDg1OGRjZC4uYmYyZDJlMGI1YzRkZjJiMGMxNjJm
OTgzYzhhNjZlZGQzOTYwNjE0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9J
bnRlcm5hbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApA
QCAtMjkyMyw3ICsyOTIzLDcgQEAgRXhjZXB0aW9uT3I8U2Nyb2xsYWJsZUFyZWEqPiBJbnRlcm5h
bHM6OnNjcm9sbGFibGVBcmVhRm9yTm9kZShOb2RlKiBub2RlKSBjb25zdAogICAgIGlmICghbm9k
ZSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRBY2Nlc3NFcnJvciB9OwogCi0g
ICAgYXV0byBub2RlUmVmID0gbWFrZVJlZigqbm9kZSk7CisgICAgUmVmIG5vZGVSZWYgeyAqbm9k
ZSB9OwogICAgIG5vZGVSZWYtPmRvY3VtZW50KCkudXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0
eWxlc2hlZXRzKCk7CiAKICAgICBTY3JvbGxhYmxlQXJlYSogc2Nyb2xsYWJsZUFyZWEgPSBudWxs
cHRyOwpAQCAtNDc0MCw3ICs0NzQwLDcgQEAgdm9pZCBJbnRlcm5hbHM6OnF1ZXVlTWljcm9UYXNr
KGludCB0ZXN0TnVtYmVyKQogCiAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCA9
IGRvY3VtZW50OwogICAgIGF1dG8mIGV2ZW50TG9vcCA9IGNvbnRleHQtPmV2ZW50TG9vcCgpOwot
ICAgIGV2ZW50TG9vcC5xdWV1ZU1pY3JvdGFzayhbZG9jdW1lbnQgPSBtYWtlUmVmKCpkb2N1bWVu
dCksIHRlc3ROdW1iZXJdKCkgeworICAgIGV2ZW50TG9vcC5xdWV1ZU1pY3JvdGFzayhbZG9jdW1l
bnQgPSBSZWYgeyAqZG9jdW1lbnQgfSwgdGVzdE51bWJlcl0oKSB7CiAgICAgICAgIGRvY3VtZW50
LT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZUxldmVsOjpEZWJ1
ZywgbWFrZVN0cmluZygiTWljcm9UYXNrICMiLCB0ZXN0TnVtYmVyLCAiIGhhcyBydW4uIikpOwog
ICAgIH0pOwogfQpAQCAtNTE2NSw3ICs1MTY1LDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gSW50ZXJu
YWxzOjpxdWV1ZVRhc2tUb1F1ZXVlTWljcm90YXNrKERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QK
ICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5vdFN1cHBvcnRlZEVycm9yIH07CiAKICAgICBT
Y3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0ID0gZG9jdW1lbnQ7IC8vIFRoaXMgYXZvaWRz
IHVubmVjZXNzYXJpbHkgZXhwb3J0aW5nIERvY3VtZW50OjpldmVudExvb3AuCi0gICAgY29udGV4
dC5ldmVudExvb3AoKS5xdWV1ZVRhc2soKnNvdXJjZSwgW21vdmVkQ2FsbGJhY2sgPSBXVEZNb3Zl
KGNhbGxiYWNrKSwgcHJvdGVjdGVkRG9jdW1lbnQgPSBtYWtlUmVmKGRvY3VtZW50KV0oKSBtdXRh
YmxlIHsKKyAgICBjb250ZXh0LmV2ZW50TG9vcCgpLnF1ZXVlVGFzaygqc291cmNlLCBbbW92ZWRD
YWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBwcm90ZWN0ZWREb2N1bWVudCA9IFJlZiB7IGRv
Y3VtZW50IH1dKCkgbXV0YWJsZSB7CiAgICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNv
bnRleHQgPSBwcm90ZWN0ZWREb2N1bWVudC5nZXQoKTsKICAgICAgICAgY29udGV4dC5ldmVudExv
b3AoKS5xdWV1ZU1pY3JvdGFzayhbY2FsbGJhY2sgPSBXVEZNb3ZlKG1vdmVkQ2FsbGJhY2spXSB7
CiAgICAgICAgICAgICBjYWxsYmFjay0+aGFuZGxlRXZlbnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvU2VydmljZVdvcmtlckludGVybmFscy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL1NlcnZpY2VXb3JrZXJJbnRlcm5hbHMuY3BwCmluZGV4IDM2ODI5OGY0Y2M0
M2QwYzBhYzZmNDA1ZTVmODE2NDRkN2RiYzE1ZjUuLjM1ZWRiNjJjNjkzMzRhOGM5MjdjNTFjZmFl
MTU2MTAwYzM4MzQ1NGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvU2Vydmlj
ZVdvcmtlckludGVybmFscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9TZXJ2aWNl
V29ya2VySW50ZXJuYWxzLmNwcApAQCAtNTksNyArNTksNyBAQCB2b2lkIFNlcnZpY2VXb3JrZXJJ
bnRlcm5hbHM6OnRlcm1pbmF0ZSgpCiAKIHZvaWQgU2VydmljZVdvcmtlckludGVybmFsczo6d2Fp
dEZvckZldGNoRXZlbnRUb0ZpbmlzaChGZXRjaEV2ZW50JiBldmVudCwgRE9NUHJvbWlzZURlZmVy
cmVkPElETEludGVyZmFjZTxGZXRjaFJlc3BvbnNlPj4mJiBwcm9taXNlKQogewotICAgIGV2ZW50
Lm9uUmVzcG9uc2UoW3Byb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCBldmVudCA9IG1ha2VSZWYo
ZXZlbnQpXSAoYXV0byYmIHJlc3VsdCkgbXV0YWJsZSB7CisgICAgZXZlbnQub25SZXNwb25zZShb
cHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIGV2ZW50ID0gUmVmIHsgZXZlbnQgfV0gKGF1dG8m
JiByZXN1bHQpIG11dGFibGUgewogICAgICAgICBpZiAoIXJlc3VsdC5oYXNfdmFsdWUoKSkgewog
ICAgICAgICAgICAgU3RyaW5nIGRlc2NyaXB0aW9uOwogICAgICAgICAgICAgaWYgKGF1dG8mIGVy
cm9yID0gcmVzdWx0LmVycm9yKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L1dvcmtlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlci5jcHAKaW5kZXggZTk3
YTA1OGRmNmM4YmQyZmFkM2MxYTNiMjgzZGY3ZTY2OTc5NTE1MC4uNzlmM2YyMzcyZGViNGQzZjAy
OTc3MGU4NGZiNTg0YmJiZGUwZDAyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9Xb3JrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyLmNwcApAQCAt
MjUyLDcgKzI1Miw3IEBAIHZvaWQgV29ya2VyOjpjcmVhdGVSVENSdHBTY3JpcHRUcmFuc2Zvcm1l
cihSVENSdHBTY3JpcHRUcmFuc2Zvcm0mIHRyYW5zZm9ybSwgTWVzCiAgICAgaWYgKCFzY3JpcHRF
eGVjdXRpb25Db250ZXh0KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fY29udGV4dFByb3h5
LnBvc3RUYXNrVG9Xb3JrZXJHbG9iYWxTY29wZShbdHJhbnNmb3JtID0gbWFrZVJlZih0cmFuc2Zv
cm0pLCBvcHRpb25zID0gV1RGTW92ZShvcHRpb25zKV0oYXV0byYgY29udGV4dCkgbXV0YWJsZSB7
CisgICAgbV9jb250ZXh0UHJveHkucG9zdFRhc2tUb1dvcmtlckdsb2JhbFNjb3BlKFt0cmFuc2Zv
cm0gPSBSZWYgeyB0cmFuc2Zvcm0gfSwgb3B0aW9ucyA9IFdURk1vdmUob3B0aW9ucyldKGF1dG8m
IGNvbnRleHQpIG11dGFibGUgewogICAgICAgICBpZiAoYXV0byB0cmFuc2Zvcm1lciA9IGRvd25j
YXN0PERlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlPihjb250ZXh0KS5jcmVhdGVSVENSdHBTY3Jp
cHRUcmFuc2Zvcm1lcihXVEZNb3ZlKG9wdGlvbnMpKSkKICAgICAgICAgICAgIHRyYW5zZm9ybS0+
c2V0VHJhbnNmb3JtZXIoKnRyYW5zZm9ybWVyKTsKICAgICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuY3BwIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5jcHAKaW5kZXggOWRmOTljNjZiNzg3NTNjZmY2MmY5
NTgzZGZhM2RlYjA0OGY5ZjhmYi4uNjYxY2UzNTIwZDhjYTQxMGFmZTliYjNhNThmZTU3OTE3YzFl
ZDRlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29w
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5jcHAK
QEAgLTE4Myw3ICsxODMsNyBAQCBTb2NrZXRQcm92aWRlciogV29ya2VyR2xvYmFsU2NvcGU6OnNv
Y2tldFByb3ZpZGVyKCkKIFJlZlB0cjxSVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXJDb25uZWN0
aW9uPiBXb3JrZXJHbG9iYWxTY29wZTo6Y3JlYXRlUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVy
Q29ubmVjdGlvbigpCiB7CiAgICAgUmVmUHRyPFJUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlckNv
bm5lY3Rpb24+IGNvbm5lY3Rpb247Ci0gICAgY2FsbE9uTWFpblRocmVhZEFuZFdhaXQoW3dvcmtl
clRocmVhZCA9IG1ha2VSZWYodGhyZWFkKCkpLCAmY29ubmVjdGlvbl0oKSBtdXRhYmxlIHsKKyAg
ICBjYWxsT25NYWluVGhyZWFkQW5kV2FpdChbd29ya2VyVGhyZWFkID0gUmVmIHsgdGhyZWFkKCkg
fSwgJmNvbm5lY3Rpb25dKCkgbXV0YWJsZSB7CiAgICAgICAgIGNvbm5lY3Rpb24gPSB3b3JrZXJU
aHJlYWQtPndvcmtlckxvYWRlclByb3h5KCkuY3JlYXRlUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5k
bGVyQ29ubmVjdGlvbigpOwogICAgIH0pOwogICAgIEFTU0VSVChjb25uZWN0aW9uKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJv
bGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck9yV29ya2xldFNjcmlwdENv
bnRyb2xsZXIuY3BwCmluZGV4IDEzZGYxNzM2ZmEzZWE4YjBkNjEzYmFiNzhkYzJmYzZiZGRiN2Vj
MDIuLmIyZTFmMzBkZTc0NjI3YTM0NTBjNGVjNDBlYTRiNGY3NDUxOWUwNDggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJPcldvcmtsZXRTY3JpcHRDb250
cm9sbGVyLmNwcApAQCAtMjc4LDcgKzI3OCw3IEBAIE1lc3NhZ2VRdWV1ZVdhaXRSZXN1bHQgV29y
a2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlcjo6bG9hZE1vZHVsZVN5bmNocm9ub3VzbHkoCiAg
ICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LnZtKCk7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2sgeyB2
bSB9OwogCi0gICAgYXV0byBwcm90ZWN0b3IgPSBtYWtlUmVmKHNjcmlwdEZldGNoZXIpOworICAg
IFJlZiBwcm90ZWN0b3IgeyBzY3JpcHRGZXRjaGVyIH07CiAgICAgewogICAgICAgICBhdXRvJiBw
cm9taXNlID0gSlNFeGVjU3RhdGU6OmxvYWRNb2R1bGUoZ2xvYmFsT2JqZWN0LCBzb3VyY2VDb2Rl
LmpzU291cmNlQ29kZSgpLCBKU0M6OkpTU2NyaXB0RmV0Y2hlcjo6Y3JlYXRlKHZtLCB7ICZzY3Jp
cHRGZXRjaGVyIH0pKTsKIApAQCAtMzk3LDcgKzM5Nyw3IEBAIHZvaWQgV29ya2VyT3JXb3JrbGV0
U2NyaXB0Q29udHJvbGxlcjo6bG9hZEFuZEV2YWx1YXRlTW9kdWxlKGNvbnN0IFVSTCYgbW9kdWxl
VVJMCiAKICAgICBhdXRvIHNjcmlwdEZldGNoZXIgPSBXb3JrZXJTY3JpcHRGZXRjaGVyOjpjcmVh
dGUoY3JlZGVudGlhbHMsIGdsb2JhbFNjb3BlKCktPmRlc3RpbmF0aW9uKCksIGdsb2JhbFNjb3Bl
KCktPnJlZmVycmVyUG9saWN5KCkpOwogICAgIHsKLSAgICAgICAgYXV0byYgcHJvbWlzZSA9IEpT
RXhlY1N0YXRlOjpsb2FkTW9kdWxlKGdsb2JhbE9iamVjdCwgbW9kdWxlVVJMLnN0cmluZygpLCBK
U0M6OkpTU2NyaXB0RmV0Y2hQYXJhbWV0ZXJzOjpjcmVhdGUodm0sIG1ha2VSZWYoc2NyaXB0RmV0
Y2hlci0+cGFyYW1ldGVycygpKSksIEpTQzo6SlNTY3JpcHRGZXRjaGVyOjpjcmVhdGUodm0sIHsg
c2NyaXB0RmV0Y2hlci5wdHIoKSB9KSk7CisgICAgICAgIGF1dG8mIHByb21pc2UgPSBKU0V4ZWNT
dGF0ZTo6bG9hZE1vZHVsZShnbG9iYWxPYmplY3QsIG1vZHVsZVVSTC5zdHJpbmcoKSwgSlNDOjpK
U1NjcmlwdEZldGNoUGFyYW1ldGVyczo6Y3JlYXRlKHZtLCBzY3JpcHRGZXRjaGVyLT5wYXJhbWV0
ZXJzKCkpLCBKU0M6OkpTU2NyaXB0RmV0Y2hlcjo6Y3JlYXRlKHZtLCB7IHNjcmlwdEZldGNoZXIu
cHRyKCkgfSkpOwogCiAgICAgICAgIGF1dG8gdGFzayA9IGNyZWF0ZVNoYXJlZFRhc2s8dm9pZChz
dGQ6Om9wdGlvbmFsPEV4Y2VwdGlvbj4mJik+KFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpXShzdGQ6Om9wdGlvbmFsPEV4Y2VwdGlvbj4mJiBleGNlcHRpb24p
IG11dGFibGUgewogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShleGNlcHRp
b24pKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9GZXRjaEV2
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9GZXRjaEV2ZW50LmNwcApp
bmRleCBmYjUxMTI1MmJjNjhkYjgxZGUxY2IzZDMzZTE0YTIxNTU4OWViZTQ0Li5hZmNkNmU5Y2Qw
NTRkZWNhNGI2NWFhY2M0YzNjYzRjODdmMjk0NTY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2UvRmV0Y2hFdmVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL0ZldGNoRXZlbnQuY3BwCkBAIC0xMzQsNyArMTM0LDcgQEAgdm9pZCBGZXRj
aEV2ZW50Ojpwcm9taXNlSXNTZXR0bGVkKCkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAg
IHByb2Nlc3NSZXNwb25zZShtYWtlUmVmKCpyZXNwb25zZSkpOworICAgIHByb2Nlc3NSZXNwb25z
ZShSZWYgeyAqcmVzcG9uc2UgfSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyR2xvYmFs
U2NvcGUuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJH
bG9iYWxTY29wZS5jcHAKaW5kZXggZmJjMDcyYWU5MzMxN2I2YjZjZjA1OTI1NDU0YjQ3MmRlYTUx
Y2E1Ni4uODZjNjNlMTVkMDc2YzIxZmZhMjRiNTAxYTRkMjhmYjE4NTQyNmY2NiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJHbG9iYWxTY29w
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJH
bG9iYWxTY29wZS5jcHAKQEAgLTY4LDEzICs2OCwxMyBAQCB2b2lkIFNlcnZpY2VXb3JrZXJHbG9i
YWxTY29wZTo6c2tpcFdhaXRpbmcoUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlKQogICAg
IHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyID0gKyttX2xhc3RSZXF1ZXN0SWRlbnRpZmllcjsK
ICAgICBtX3BlbmRpbmdTa2lwV2FpdGluZ1Byb21pc2VzLmFkZChyZXF1ZXN0SWRlbnRpZmllciwg
V1RGTW92ZShwcm9taXNlKSk7CiAKLSAgICBjYWxsT25NYWluVGhyZWFkKFt3b3JrZXJUaHJlYWQg
PSBtYWtlUmVmKHRocmVhZCgpKSwgcmVxdWVzdElkZW50aWZpZXJdKCkgbXV0YWJsZSB7CisgICAg
Y2FsbE9uTWFpblRocmVhZChbd29ya2VyVGhyZWFkID0gUmVmIHsgdGhyZWFkKCkgfSwgcmVxdWVz
dElkZW50aWZpZXJdKCkgbXV0YWJsZSB7CiAgICAgICAgIGlmIChhdXRvKiBjb25uZWN0aW9uID0g
U1dDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkuY29ubmVjdGlvbigpKSB7CiAgICAgICAgICAg
ICBhdXRvIGlkZW50aWZpZXIgPSB3b3JrZXJUaHJlYWQtPmlkZW50aWZpZXIoKTsKICAgICAgICAg
ICAgIGNvbm5lY3Rpb24tPnNraXBXYWl0aW5nKGlkZW50aWZpZXIsIFt3b3JrZXJUaHJlYWQgPSBX
VEZNb3ZlKHdvcmtlclRocmVhZCksIHJlcXVlc3RJZGVudGlmaWVyXSB7CiAgICAgICAgICAgICAg
ICAgd29ya2VyVGhyZWFkLT5ydW5Mb29wKCkucG9zdFRhc2soW3JlcXVlc3RJZGVudGlmaWVyXShh
dXRvJiBjb250ZXh0KSB7CiAgICAgICAgICAgICAgICAgICAgIGF1dG8mIHNjb3BlID0gZG93bmNh
c3Q8U2VydmljZVdvcmtlckdsb2JhbFNjb3BlPihjb250ZXh0KTsKLSAgICAgICAgICAgICAgICAg
ICAgc2NvcGUuZXZlbnRMb29wKCkucXVldWVUYXNrKFRhc2tTb3VyY2U6OkRPTU1hbmlwdWxhdGlv
biwgW3Njb3BlID0gbWFrZVJlZihzY29wZSksIHJlcXVlc3RJZGVudGlmaWVyXSgpIG11dGFibGUg
eworICAgICAgICAgICAgICAgICAgICBzY29wZS5ldmVudExvb3AoKS5xdWV1ZVRhc2soVGFza1Nv
dXJjZTo6RE9NTWFuaXB1bGF0aW9uLCBbc2NvcGUgPSBSZWYgeyBzY29wZSB9LCByZXF1ZXN0SWRl
bnRpZmllcl0oKSBtdXRhYmxlIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhdXRvIHBy
b21pc2UgPSBzY29wZS0+bV9wZW5kaW5nU2tpcFdhaXRpbmdQcm9taXNlcy50YWtlKHJlcXVlc3RJ
ZGVudGlmaWVyKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9taXNlLT5yZXNvbHZl
KCk7CiAgICAgICAgICAgICAgICAgICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmNwcAppbmRleCBh
N2RhMDBkOTZjMDBkZGQ4OTA2ZDgyNzVmNmRhMmRjNDg5YjM2YTJjLi44YjU0MGM1NzdiNmJkOGYy
MWY3ZTE0MjU2ZDMwYzgwODJmMWVjZDU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmNwcApAQCAtMTM0
LDcgKzEzNCw3IEBAIHZvaWQgU1dDb250ZXh0TWFuYWdlcjo6c3RvcFdvcmtlcihTZXJ2aWNlV29y
a2VyVGhyZWFkUHJveHkmIHNlcnZpY2VXb3JrZXIsIFNlY29uCiAgICAgbV9wZW5kaW5nU2Vydmlj
ZVdvcmtlclRlcm1pbmF0aW9uUmVxdWVzdHMuYWRkKGlkZW50aWZpZXIsIG1ha2VVbmlxdWU8U2Vy
dmljZVdvcmtlclRlcm1pbmF0aW9uUmVxdWVzdD4oKnRoaXMsIGlkZW50aWZpZXIsIHRpbWVvdXQp
KTsKIAogICAgIGF1dG8mIHRocmVhZCA9IHNlcnZpY2VXb3JrZXIudGhyZWFkKCk7Ci0gICAgdGhy
ZWFkLnN0b3AoW3RoaXMsIGlkZW50aWZpZXIsIHNlcnZpY2VXb3JrZXIgPSBtYWtlUmVmKHNlcnZp
Y2VXb3JrZXIpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
XSgpIG11dGFibGUgeworICAgIHRocmVhZC5zdG9wKFt0aGlzLCBpZGVudGlmaWVyLCBzZXJ2aWNl
V29ya2VyID0gUmVmIHsgc2VydmljZVdvcmtlciB9LCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgewogICAgICAgICBtX3BlbmRpbmdTZXJ2
aWNlV29ya2VyVGVybWluYXRpb25SZXF1ZXN0cy5yZW1vdmUoaWRlbnRpZmllcik7CiAKICAgICAg
ICAgaWYgKGF1dG8qIGNvbm5lY3Rpb24gPSBTV0NvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5j
b25uZWN0aW9uKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
Y29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuY3BwCmluZGV4IGU5MTQwOWRlNTIw
YzJjYzljMGFlNTg3NTNlYjZhMTViNzRkOWNjN2QuLjk2NDg2MjUzNjdjYzE2YjU4OWJkZmQ3MGVh
MDViYmExZjE0NDgwN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuY3BwCkBAIC0xMDMsNyAr
MTAzLDcgQEAgdm9pZCBTZXJ2aWNlV29ya2VyVGhyZWFkOjpydW5FdmVudExvb3AoKQogCiB2b2lk
IFNlcnZpY2VXb3JrZXJUaHJlYWQ6OnF1ZXVlVGFza1RvRmlyZUZldGNoRXZlbnQoUmVmPFNlcnZp
Y2VXb3JrZXJGZXRjaDo6Q2xpZW50PiYmIGNsaWVudCwgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29y
a2VyQ2xpZW50SWRlbnRpZmllcj4mJiBjbGllbnRJZCwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVz
dCwgU3RyaW5nJiYgcmVmZXJyZXIsIEZldGNoT3B0aW9ucyYmIG9wdGlvbnMpCiB7Ci0gICAgYXV0
byBzZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUgPSBtYWtlUmVmKGRvd25jYXN0PFNlcnZpY2VXb3Jr
ZXJHbG9iYWxTY29wZT4oKmdsb2JhbFNjb3BlKCkpKTsKKyAgICBSZWYgc2VydmljZVdvcmtlckds
b2JhbFNjb3BlID0gZG93bmNhc3Q8U2VydmljZVdvcmtlckdsb2JhbFNjb3BlPigqZ2xvYmFsU2Nv
cGUoKSk7CiAgICAgc2VydmljZVdvcmtlckdsb2JhbFNjb3BlLT5ldmVudExvb3AoKS5xdWV1ZVRh
c2soVGFza1NvdXJjZTo6RE9NTWFuaXB1bGF0aW9uLCBbc2VydmljZVdvcmtlckdsb2JhbFNjb3Bl
LCBjbGllbnQgPSBXVEZNb3ZlKGNsaWVudCksIGNsaWVudElkLCByZXF1ZXN0ID0gV1RGTW92ZShy
ZXF1ZXN0KSwgcmVmZXJyZXIgPSBXVEZNb3ZlKHJlZmVycmVyKSwgb3B0aW9ucyA9IFdURk1vdmUo
b3B0aW9ucyldKCkgbXV0YWJsZSB7CiAgICAgICAgIFNlcnZpY2VXb3JrZXJGZXRjaDo6ZGlzcGF0
Y2hGZXRjaEV2ZW50KFdURk1vdmUoY2xpZW50KSwgc2VydmljZVdvcmtlckdsb2JhbFNjb3BlLCBj
bGllbnRJZCwgV1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92ZShyZWZlcnJlciksIFdURk1vdmUob3B0
aW9ucykpOwogICAgIH0pOwpAQCAtMTIwLDcgKzEyMCw3IEBAIHN0YXRpYyB2b2lkIGZpcmVNZXNz
YWdlRXZlbnQoU2VydmljZVdvcmtlckdsb2JhbFNjb3BlJiBzY29wZSwgTWVzc2FnZVdpdGhNZXNz
YWdlCiAKIHZvaWQgU2VydmljZVdvcmtlclRocmVhZDo6cXVldWVUYXNrVG9Qb3N0TWVzc2FnZShN
ZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyYmIG1lc3NhZ2UsIFNlcnZpY2VXb3JrZXJPckNsaWVudERh
dGEmJiBzb3VyY2VEYXRhKQogewotICAgIGF1dG8gc2VydmljZVdvcmtlckdsb2JhbFNjb3BlID0g
bWFrZVJlZihkb3duY2FzdDxTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU+KCpnbG9iYWxTY29wZSgp
KSk7CisgICAgUmVmIHNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSA9IGRvd25jYXN0PFNlcnZpY2VX
b3JrZXJHbG9iYWxTY29wZT4oKmdsb2JhbFNjb3BlKCkpOwogICAgIHNlcnZpY2VXb3JrZXJHbG9i
YWxTY29wZS0+ZXZlbnRMb29wKCkucXVldWVUYXNrKFRhc2tTb3VyY2U6OkRPTU1hbmlwdWxhdGlv
biwgW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyksIHNlcnZpY2VXb3JrZXJHbG9iYWxTY29w
ZSwgbWVzc2FnZSA9IFdURk1vdmUobWVzc2FnZSksIHNvdXJjZURhdGEgPSBXVEZNb3ZlKHNvdXJj
ZURhdGEpXSgpIG11dGFibGUgewogICAgICAgICBVUkwgc291cmNlVVJMOwogICAgICAgICBFeHRl
bmRhYmxlTWVzc2FnZUV2ZW50U291cmNlIHNvdXJjZTsKQEAgLTE0OSw3ICsxNDksNyBAQCB2b2lk
IFNlcnZpY2VXb3JrZXJUaHJlYWQ6OnF1ZXVlVGFza1RvUG9zdE1lc3NhZ2UoTWVzc2FnZVdpdGhN
ZXNzYWdlUG9ydHMmJiBtZXNzYQogCiB2b2lkIFNlcnZpY2VXb3JrZXJUaHJlYWQ6OnF1ZXVlVGFz
a1RvRmlyZUluc3RhbGxFdmVudCgpCiB7Ci0gICAgYXV0byBzZXJ2aWNlV29ya2VyR2xvYmFsU2Nv
cGUgPSBtYWtlUmVmKGRvd25jYXN0PFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZT4oKmdsb2JhbFNj
b3BlKCkpKTsKKyAgICBSZWYgc2VydmljZVdvcmtlckdsb2JhbFNjb3BlID0gZG93bmNhc3Q8U2Vy
dmljZVdvcmtlckdsb2JhbFNjb3BlPigqZ2xvYmFsU2NvcGUoKSk7CiAgICAgc2VydmljZVdvcmtl
ckdsb2JhbFNjb3BlLT5ldmVudExvb3AoKS5xdWV1ZVRhc2soVGFza1NvdXJjZTo6RE9NTWFuaXB1
bGF0aW9uLCBbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKSwgc2VydmljZVdvcmtlckdsb2Jh
bFNjb3BlXSgpIG11dGFibGUgewogICAgICAgICBSRUxFQVNFX0xPRyhTZXJ2aWNlV29ya2VyLCAi
U2VydmljZVdvcmtlclRocmVhZDo6cXVldWVUYXNrVG9GaXJlSW5zdGFsbEV2ZW50IGZpcmluZyBl
dmVudCBmb3Igd29ya2VyICVsbHUiLCBzZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUtPnRocmVhZCgp
LmlkZW50aWZpZXIoKS50b1VJbnQ2NCgpKTsKIApAQCAtMTc1LDcgKzE3NSw3IEBAIHZvaWQgU2Vy
dmljZVdvcmtlclRocmVhZDo6cXVldWVUYXNrVG9GaXJlSW5zdGFsbEV2ZW50KCkKIAogdm9pZCBT
ZXJ2aWNlV29ya2VyVGhyZWFkOjpxdWV1ZVRhc2tUb0ZpcmVBY3RpdmF0ZUV2ZW50KCkKIHsKLSAg
ICBhdXRvIHNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSA9IG1ha2VSZWYoZG93bmNhc3Q8U2Vydmlj
ZVdvcmtlckdsb2JhbFNjb3BlPigqZ2xvYmFsU2NvcGUoKSkpOworICAgIFJlZiBzZXJ2aWNlV29y
a2VyR2xvYmFsU2NvcGUgPSBkb3duY2FzdDxTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU+KCpnbG9i
YWxTY29wZSgpKTsKICAgICBzZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUtPmV2ZW50TG9vcCgpLnF1
ZXVlVGFzayhUYXNrU291cmNlOjpET01NYW5pcHVsYXRpb24sIFt3ZWFrVGhpcyA9IG1ha2VXZWFr
UHRyKHRoaXMpLCBzZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGVdKCkgbXV0YWJsZSB7CiAgICAgICAg
IFJFTEVBU0VfTE9HKFNlcnZpY2VXb3JrZXIsICJTZXJ2aWNlV29ya2VyVGhyZWFkOjpxdWV1ZVRh
c2tUb0ZpcmVBY3RpdmF0ZUV2ZW50IGZpcmluZyBldmVudCBmb3Igd29ya2VyICVsbHUiLCBzZXJ2
aWNlV29ya2VyR2xvYmFsU2NvcGUtPnRocmVhZCgpLmlkZW50aWZpZXIoKS50b1VJbnQ2NCgpKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2Vy
dmljZVdvcmtlclRocmVhZFByb3h5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5jcHAKaW5kZXggZWEzNjczN2I3YzFh
NzY4NTgyZmI4MWJlYWU0NDcwYTU4NWJjMTZiNC4uNmE0YjJhOGQ2NzMxZTE2NDk4NWQ1NTg3Y2Rl
NTBmODA2NWEwM2ZhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkuY3BwCkBA
IC0yMDQsNyArMjA0LDcgQEAgdm9pZCBTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHk6Om5vdGlmeU5l
dHdvcmtTdGF0ZUNoYW5nZShib29sIGlzT25saW5lKQogICAgIHBvc3RUYXNrRm9yTW9kZVRvV29y
a2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUoW2lzT25saW5lXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCYgY29udGV4dCkgewogICAgICAgICBhdXRvJiBnbG9iYWxTY29wZSA9IGRvd25jYXN0PFdvcmtl
ckdsb2JhbFNjb3BlPihjb250ZXh0KTsKICAgICAgICAgZ2xvYmFsU2NvcGUuc2V0SXNPbmxpbmUo
aXNPbmxpbmUpOwotICAgICAgICBnbG9iYWxTY29wZS5ldmVudExvb3AoKS5xdWV1ZVRhc2soVGFz
a1NvdXJjZTo6RE9NTWFuaXB1bGF0aW9uLCBbZ2xvYmFsU2NvcGUgPSBtYWtlUmVmKGdsb2JhbFNj
b3BlKSwgaXNPbmxpbmVdIHsKKyAgICAgICAgZ2xvYmFsU2NvcGUuZXZlbnRMb29wKCkucXVldWVU
YXNrKFRhc2tTb3VyY2U6OkRPTU1hbmlwdWxhdGlvbiwgW2dsb2JhbFNjb3BlID0gUmVmIHsgZ2xv
YmFsU2NvcGUgfSwgaXNPbmxpbmVdIHsKICAgICAgICAgICAgIGdsb2JhbFNjb3BlLT5kaXNwYXRj
aEV2ZW50KEV2ZW50OjpjcmVhdGUoaXNPbmxpbmUgPyBldmVudE5hbWVzKCkub25saW5lRXZlbnQg
OiBldmVudE5hbWVzKCkub2ZmbGluZUV2ZW50LCBFdmVudDo6Q2FuQnViYmxlOjpObywgRXZlbnQ6
OklzQ2FuY2VsYWJsZTo6Tm8pKTsKICAgICAgICAgfSk7CiAgICAgfSwgV29ya2VyUnVuTG9vcDo6
ZGVmYXVsdE1vZGUoKSk7CkBAIC0yNDgsNyArMjQ4LDcgQEAgdm9pZCBTZXJ2aWNlV29ya2VyVGhy
ZWFkUHJveHk6OmNvbnRpbnVlRGlkUmVjZWl2ZUZldGNoUmVzcG9uc2UoU1dTZXJ2ZXJDb25uZWN0
aW8KICAgICBpZiAoIWNsaWVudCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgcG9zdFRhc2tGb3JN
b2RlVG9Xb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZShbY2xpZW50ID0gbWFrZVJlZigqY2xpZW50
KV0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSB7CisgICAgcG9zdFRhc2tGb3JNb2RlVG9Xb3Jr
ZXJPcldvcmtsZXRHbG9iYWxTY29wZShbY2xpZW50ID0gUmVmIHsgKmNsaWVudCB9XSAoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCYpIHsKICAgICAgICAgY2xpZW50LT5jb250aW51ZURpZFJlY2VpdmVS
ZXNwb25zZSgpOwogICAgIH0sIFdvcmtlclJ1bkxvb3A6OmRlZmF1bHRNb2RlKCkpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVudFRo
cm90dGxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdFByb2dyZXNzRXZl
bnRUaHJvdHRsZS5jcHAKaW5kZXggZWUwZTIxZTZjMWMzMDI4MDU1MzhmYmQ0Mzg1Zjg3ZmQ3NTE4
ZTFiMS4uMDEzN2I5NjFhOTE1OTkxNTU2ZmFiM2ZkNWNkMWJkNzQ0MzI3NTYzNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVudFRocm90dGxl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3RQcm9ncmVzc0V2ZW50
VGhyb3R0bGUuY3BwCkBAIC04MSw3ICs4MSw3IEBAIHZvaWQgWE1MSHR0cFJlcXVlc3RQcm9ncmVz
c0V2ZW50VGhyb3R0bGU6OmRpc3BhdGNoUmVhZHlTdGF0ZUNoYW5nZUV2ZW50KEV2ZW50JiBlCiB2
b2lkIFhNTEh0dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVudFRocm90dGxlOjpkaXNwYXRjaEV2ZW50V2hl
blBvc3NpYmxlKEV2ZW50JiBldmVudCkKIHsKICAgICBpZiAobV9zaG91bGREZWZlckV2ZW50c0R1
ZVRvU3VzcGVuc2lvbikKLSAgICAgICAgbV90YXJnZXQucXVldWVUYXNrVG9EaXNwYXRjaEV2ZW50
KG1fdGFyZ2V0LCBUYXNrU291cmNlOjpOZXR3b3JraW5nLCBtYWtlUmVmKGV2ZW50KSk7CisgICAg
ICAgIG1fdGFyZ2V0LnF1ZXVlVGFza1RvRGlzcGF0Y2hFdmVudChtX3RhcmdldCwgVGFza1NvdXJj
ZTo6TmV0d29ya2luZywgZXZlbnQpOwogICAgIGVsc2UKICAgICAgICAgbV90YXJnZXQuZGlzcGF0
Y2hFdmVudChldmVudCk7CiB9Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>