<?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>231800</bug_id>
          
          <creation_ts>2021-10-15 02:34:25 -0700</creation_ts>
          <short_desc>[LFC][Integration] Factor line logical order traversal out of iterator</short_desc>
          <delta_ts>2021-10-15 13:30:18 -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>Layout and Rendering</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="Antti Koivisto">koivisto</reporter>
          <assigned_to name="Antti Koivisto">koivisto</assigned_to>
          <cc>annulen</cc>
    
    <cc>bfulgham</cc>
    
    <cc>cdumez</cc>
    
    <cc>changseok</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kangil.han</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>mifenton</cc>
    
    <cc>mmaxfield</cc>
    
    <cc>pdr</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sergio</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1804743</commentid>
    <comment_count>0</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2021-10-15 02:34:25 -0700</bug_when>
    <thetext>and make it generic.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1804746</commentid>
    <comment_count>1</comment_count>
      <attachid>441354</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2021-10-15 02:52:22 -0700</bug_when>
    <thetext>Created attachment 441354
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1804749</commentid>
    <comment_count>2</comment_count>
      <attachid>441356</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2021-10-15 03:04:20 -0700</bug_when>
    <thetext>Created attachment 441356
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1804750</commentid>
    <comment_count>3</comment_count>
      <attachid>441357</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2021-10-15 03:07:14 -0700</bug_when>
    <thetext>Created attachment 441357
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1804756</commentid>
    <comment_count>4</comment_count>
      <attachid>441361</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2021-10-15 03:35:41 -0700</bug_when>
    <thetext>Created attachment 441361
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1804767</commentid>
    <comment_count>5</comment_count>
      <attachid>441364</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2021-10-15 05:13:30 -0700</bug_when>
    <thetext>Created attachment 441364
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1804769</commentid>
    <comment_count>6</comment_count>
      <attachid>441365</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2021-10-15 05:25:31 -0700</bug_when>
    <thetext>Created attachment 441365
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1804793</commentid>
    <comment_count>7</comment_count>
      <attachid>441375</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2021-10-15 07:04:11 -0700</bug_when>
    <thetext>Created attachment 441375
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1804981</commentid>
    <comment_count>8</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-10-15 13:29:23 -0700</bug_when>
    <thetext>Committed r284269 (243077@main): &lt;https://commits.webkit.org/243077@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 441375.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1804982</commentid>
    <comment_count>9</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-10-15 13:30:18 -0700</bug_when>
    <thetext>&lt;rdar://problem/84314606&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>441354</attachid>
            <date>2021-10-15 02:52:22 -0700</date>
            <delta_ts>2021-10-15 03:04:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-231800-20211015125220.patch</filename>
            <type>text/plain</type>
            <size>55858</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg0MjM2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODUwN2I1YjhiMjkzNjZj
N2M0ZDI3Mzk5ZWE0ZjQ1YzgxNTczZjU2OS4uM2IzMjk0OGRjNTE1MmI1YTQ0ZDMyOTc1ODgwNmQ0
NDkwMWQ5NzI2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk0IEBACisyMDIxLTEwLTE1ICBBbnR0
aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBbTEZDXVtJbnRlZ3JhdGlv
bl0gRmFjdG9yIGxpbmUgbG9naWNhbCBvcmRlciB0cmF2ZXJzYWwgb3V0IG9mIGl0ZXJhdG9yCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzE4MDAKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTaW1pbGFyIHRv
IHRleHQgbG9naWNhbCBvcmRlciB0cmF2ZXJzYWwsIHVzZSBzdGFuZGFsb25lIHRyYXZlcnNhbCBm
dW5jdGlvbnMgd2l0aCBvcmRlciBjYWNoZQorICAgICAgICBvd25lZCBieSB0aGUgY2FsbGVyLgor
CisgICAgICAgIE1ha2UgdGhlIGNvZGUgZ2VuZXJpYyBzbyBpdCB3aWxsIHdvcmsgd2l0aCBJRkMg
QmlEaS4KKworICAgICAgICBGYWN0b3IgYWxsIHRyYXZlcnNhbCBmdW5jdGlvbnMgdG8gYSBmaWxl
IG9mIHRoZWlyIG93biAoSW5saW5lSXRlcmF0b3JMb2dpY2FsT3JkZXJUcmF2ZXJzYWwuaC8uY3Bw
KS4KKworICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBkb20vUG9zaXRpb24uY3BwOgorICAgICAgICAq
IGVkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuY3BwOgorICAgICAgICAqIGVkaXRpbmcvVGV4
dEl0ZXJhdG9yLmg6CisgICAgICAgICogZWRpdGluZy9WaXNpYmxlUG9zaXRpb24uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6VmlzaWJsZVBvc2l0aW9uOjpsZWZ0VmlzdWFsbHlEaXN0aW5jdENhbmRp
ZGF0ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpWaXNpYmxlUG9zaXRpb246OnJpZ2h0Vmlz
dWFsbHlEaXN0aW5jdENhbmRpZGF0ZSBjb25zdCk6CisgICAgICAgICogZWRpdGluZy9WaXNpYmxl
VW5pdHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cHJldmlvdXNUZXh0T3JMaW5lQnJlYWtSdW4p
OgorICAgICAgICAoV2ViQ29yZTo6bmV4dFRleHRPckxpbmVCcmVha1J1bik6CisgICAgICAgIChX
ZWJDb3JlOjpzdGFydFRleHRPckxpbmVCcmVha1J1bik6CisgICAgICAgIChXZWJDb3JlOjplbmRU
ZXh0T3JMaW5lQnJlYWtSdW4pOgorICAgICAgICAoV2ViQ29yZTo6bG9naWNhbGx5UHJldmlvdXNS
dW4pOgorICAgICAgICAoV2ViQ29yZTo6bG9naWNhbGx5TmV4dFJ1bik6CisgICAgICAgIChXZWJD
b3JlOjp3b3JkQnJlYWtJdGVyYXRvckZvck1pbk9mZnNldEJvdW5kYXJ5KToKKyAgICAgICAgKFdl
YkNvcmU6OndvcmRCcmVha0l0ZXJhdG9yRm9yTWF4T2Zmc2V0Qm91bmRhcnkpOgorICAgICAgICAo
V2ViQ29yZTo6c3RhcnRQb3NpdGlvbkZvckxpbmUpOgorICAgICAgICAoV2ViQ29yZTo6ZW5kUG9z
aXRpb25Gb3JMaW5lKToKKyAgICAgICAgKiBsYXlvdXQvaW50ZWdyYXRpb24vSW5saW5lSXRlcmF0
b3JCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRlcmF0b3I6OkxlYWZCb3hJdGVy
YXRvcjo6dHJhdmVyc2VQcmV2aW91c09uTGluZUlnbm9yaW5nTGluZUJyZWFrKToKKyAgICAgICAg
KFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpMZWFmQm94SXRlcmF0b3I6OnRyYXZlcnNlTmV4dE9u
TGluZUluTG9naWNhbE9yZGVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0
ZXJhdG9yOjpMZWFmQm94SXRlcmF0b3I6OnRyYXZlcnNlUHJldmlvdXNPbkxpbmVJbkxvZ2ljYWxP
cmRlcik6IERlbGV0ZWQuCisgICAgICAgICogbGF5b3V0L2ludGVncmF0aW9uL0lubGluZUl0ZXJh
dG9yQm94Lmg6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6Qm94SXRlcmF0b3I6
OkJveEl0ZXJhdG9yKToKKyAgICAgICAgKiBsYXlvdXQvaW50ZWdyYXRpb24vSW5saW5lSXRlcmF0
b3JCb3hMZWdhY3lQYXRoLmg6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6Qm94
TGVnYWN5UGF0aDo6Qm94TGVnYWN5UGF0aCk6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVy
YXRvcjo6Qm94TGVnYWN5UGF0aDo6dHJhdmVyc2VQcmV2aW91c1RleHRCb3gpOgorICAgICAgICAo
V2ViQ29yZTo6SW5saW5lSXRlcmF0b3I6OkJveExlZ2FjeVBhdGg6OnRyYXZlcnNlTmV4dE9uTGlu
ZUluTG9naWNhbE9yZGVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJh
dG9yOjpCb3hMZWdhY3lQYXRoOjp0cmF2ZXJzZVByZXZpb3VzT25MaW5lSW5Mb2dpY2FsT3JkZXIp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRlcmF0b3I6OkJveExlZ2FjeVBh
dGg6OmluaXRpYWxpemVMb2dpY2FsT3JkZXJDYWNoZUZvckxpbmUpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6SW5saW5lSXRlcmF0b3I6OkJveExlZ2FjeVBhdGg6OnRyYXZlcnNlTmV4dElu
bGluZUJveEluQ2FjaGVPcmRlcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJ
dGVyYXRvcjo6Qm94TGVnYWN5UGF0aDo6dHJhdmVyc2VQcmV2aW91c0lubGluZUJveEluQ2FjaGVP
cmRlcik6IERlbGV0ZWQuCisgICAgICAgICogbGF5b3V0L2ludGVncmF0aW9uL0lubGluZUl0ZXJh
dG9yQm94TW9kZXJuUGF0aC5oOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRlcmF0b3I6OkJv
eE1vZGVyblBhdGg6OnRyYXZlcnNlUHJldmlvdXNUZXh0Qm94KToKKyAgICAgICAgKFdlYkNvcmU6
OklubGluZUl0ZXJhdG9yOjpCb3hNb2Rlcm5QYXRoOjp0cmF2ZXJzZU5leHRPbkxpbmVJbkxvZ2lj
YWxPcmRlcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6Qm94
TW9kZXJuUGF0aDo6dHJhdmVyc2VQcmV2aW91c09uTGluZUluTG9naWNhbE9yZGVyKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBsYXlvdXQvaW50ZWdyYXRpb24vSW5saW5lSXRlcmF0b3JMaW5lLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpMaW5lOjpsb2dpY2FsU3RhcnRSdW4g
Y29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRlcmF0b3I6OkxpbmU6
OmxvZ2ljYWxFbmRSdW4gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW5saW5l
SXRlcmF0b3I6OkxpbmU6OmxvZ2ljYWxTdGFydFJ1bldpdGhOb2RlIGNvbnN0KTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpMaW5lOjpsb2dpY2FsRW5kUnVuV2l0
aE5vZGUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIGxheW91dC9pbnRlZ3JhdGlvbi9Jbmxp
bmVJdGVyYXRvckxpbmUuaDoKKyAgICAgICAgKiBsYXlvdXQvaW50ZWdyYXRpb24vSW5saW5lSXRl
cmF0b3JMaW5lTGVnYWN5UGF0aC5oOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRlcmF0b3I6
OkxpbmVJdGVyYXRvckxlZ2FjeVBhdGg6OmxvZ2ljYWxTdGFydFJ1biBjb25zdCk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6TGluZUl0ZXJhdG9yTGVnYWN5UGF0
aDo6bG9naWNhbEVuZFJ1biBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogbGF5b3V0L2ludGVn
cmF0aW9uL0lubGluZUl0ZXJhdG9yTGluZU1vZGVyblBhdGguaDoKKyAgICAgICAgKFdlYkNvcmU6
OklubGluZUl0ZXJhdG9yOjpMaW5lSXRlcmF0b3JNb2Rlcm5QYXRoOjpsb2dpY2FsU3RhcnRSdW4g
Y29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRlcmF0b3I6OkxpbmVJ
dGVyYXRvck1vZGVyblBhdGg6OmxvZ2ljYWxFbmRSdW4gY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAqIGxheW91dC9pbnRlZ3JhdGlvbi9JbmxpbmVJdGVyYXRvckxvZ2ljYWxPcmRlclRyYXZlcnNh
bC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRlcmF0b3I6Om1ha2VUZXh0
TG9naWNhbE9yZGVyQ2FjaGVJZk5lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVy
YXRvcjo6dXBkYXRlVGV4dExvZ2ljYWxPcmRlckNhY2hlSWZOZWVkZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5saW5lSXRlcmF0b3I6OmZpcnN0VGV4dEJveEluTG9naWNhbE9yZGVyRm9yKToKKyAg
ICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpsYXN0VGV4dEJveEluTG9naWNhbE9yZGVy
Rm9yKToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpuZXh0VGV4dEJveEluTG9n
aWNhbE9yZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpwcmV2aW91c1Rl
eHRCb3hJbkxvZ2ljYWxPcmRlcik6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6
bWFrZUxpbmVMb2dpY2FsT3JkZXJDYWNoZUlmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6Oklu
bGluZUl0ZXJhdG9yOjp1cGRhdGVMaW5lTG9naWNhbE9yZGVyQ2FjaGVJZk5lZWRlZCk6CisgICAg
ICAgIChXZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6Zmlyc3RMZWFmT25MaW5lSW5Mb2dpY2FsT3Jk
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRlcmF0b3I6Omxhc3RMZWFmT25MaW5lSW5M
b2dpY2FsT3JkZXIpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRlcmF0b3I6Om5leHRMZWFm
T25MaW5lSW5Mb2dpY2FsT3JkZXIpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRlcmF0b3I6
OnByZXZpb3VzTGVhZk9uTGluZUluTG9naWNhbE9yZGVyKToKKyAgICAgICAgKFdlYkNvcmU6Oklu
bGluZUl0ZXJhdG9yOjpmaXJzdExlYWZPbkxpbmVJbkxvZ2ljYWxPcmRlcldpdGhOb2RlKToKKyAg
ICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpsYXN0TGVhZk9uTGluZUluTG9naWNhbE9y
ZGVyV2l0aE5vZGUpOgorICAgICAgICAqIGxheW91dC9pbnRlZ3JhdGlvbi9JbmxpbmVJdGVyYXRv
ckxvZ2ljYWxPcmRlclRyYXZlcnNhbC5oOiBBZGRlZC4KKyAgICAgICAgKiBsYXlvdXQvaW50ZWdy
YXRpb24vSW5saW5lSXRlcmF0b3JUZXh0Qm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklubGlu
ZUl0ZXJhdG9yOjpUZXh0Qm94OjpwcmV2aW91c1RleHRCb3ggY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5saW5lSXRlcmF0b3I6OlRleHRCb3hJdGVyYXRvcjo6dHJhdmVyc2VQcmV2aW91c1Rl
eHRCb3gpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRlcmF0b3I6Omxhc3RUZXh0Qm94Rm9y
KToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpmaXJzdFRleHRCb3hJbkxvZ2lj
YWxPcmRlckZvcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6
bmV4dFRleHRCb3hJbkxvZ2ljYWxPcmRlcik6IERlbGV0ZWQuCisgICAgICAgICogbGF5b3V0L2lu
dGVncmF0aW9uL0lubGluZUl0ZXJhdG9yVGV4dEJveC5oOgorICAgICAgICAoKTogRGVsZXRlZC4K
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckJsb2NrRmxvdzo6cG9zaXRpb25Gb3JQb2ludFdpdGhJbmxpbmVDaGlsZHJlbik6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwOgorCiAyMDIxLTEwLTE0ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBNZWRpYUNhcGFiaWxpdGll
cyBzaG91bGQgZW5xdWV1ZSBhIHRhc2sgdG8gcmVzb2x2ZSBwcm9taXNlcwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21h
a2UKaW5kZXggYjA2NTdlMWNjOWRlNTliMDkyOTg1OWQ0OTE3MmVmMTljZmQ4ZTYzMS4uNGNlNTUx
Y2NkMDM1ZDFiNTcwNjNlZjQxMjRmM2JjZWNkMmI3MjFlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvSGVhZGVycy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCkBA
IC04MDcsNiArODA3LDcgQEAgc2V0KFdlYkNvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwog
ICAgIGxheW91dC9pbnRlZ3JhdGlvbi9JbmxpbmVJdGVyYXRvckxpbmUuaAogICAgIGxheW91dC9p
bnRlZ3JhdGlvbi9JbmxpbmVJdGVyYXRvckxpbmVMZWdhY3lQYXRoLmgKICAgICBsYXlvdXQvaW50
ZWdyYXRpb24vSW5saW5lSXRlcmF0b3JMaW5lTW9kZXJuUGF0aC5oCisgICAgbGF5b3V0L2ludGVn
cmF0aW9uL0lubGluZUl0ZXJhdG9yTG9naWNhbE9yZGVyVHJhdmVyc2FsLmgKICAgICBsYXlvdXQv
aW50ZWdyYXRpb24vSW5saW5lSXRlcmF0b3JUZXh0Qm94LmgKICAgICBsYXlvdXQvaW50ZWdyYXRp
b24vTGF5b3V0SW50ZWdyYXRpb25JbmxpbmVDb250ZW50LmgKICAgICBsYXlvdXQvaW50ZWdyYXRp
b24vTGF5b3V0SW50ZWdyYXRpb25MaW5lLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1Nv
dXJjZXMudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXggMjU3MjYxOTBjOTFh
ZTM4N2RlM2Q0MWVjYjBhOTY5NjlmZGU2YWUxZS4uYzNlMjU4N2U2Y2NmYzEyYzBlOTMzMzE2ZjNl
MmQ0NDUyOGUxNjZmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysr
IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKQEAgLTE1MjIsNiArMTUyMiw3IEBAIGxheW91
dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL3RleHQvVGV4dFV0aWwuY3BwCiBsYXlvdXQvaW50
ZWdyYXRpb24vSW5saW5lSXRlcmF0b3JCb3guY3BwCiBsYXlvdXQvaW50ZWdyYXRpb24vSW5saW5l
SXRlcmF0b3JJbmxpbmVCb3guY3BwCiBsYXlvdXQvaW50ZWdyYXRpb24vSW5saW5lSXRlcmF0b3JM
aW5lLmNwcAorbGF5b3V0L2ludGVncmF0aW9uL0lubGluZUl0ZXJhdG9yTG9naWNhbE9yZGVyVHJh
dmVyc2FsLmNwcAogbGF5b3V0L2ludGVncmF0aW9uL0lubGluZUl0ZXJhdG9yVGV4dEJveC5jcHAK
IGxheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbkJveFRyZWUuY3BwCiBsYXlvdXQv
aW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25Db3ZlcmFnZS5jcHAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBhMTIzNmVmZWI3
MzA4ZDUzOTBlNWY4Y2UwZDI3Njk0ZGE0MTJkMTllLi44NzMzNmIzYTFkMjEzNWU4NGQ5ZGQ5Njkw
YTY3YTQwMzAwZDdlNDExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCkBAIC01MjUyLDYgKzUyNTIsNyBAQAogCQlFNDE1RUIxMzI3MEMz
NTEzMDBFOERBMUIgLyogSW5saW5lSXRlcmF0b3JJbmxpbmVCb3guaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0MTVFQjExMjcwQzM1MTIwMEU4REExQiAv
KiBJbmxpbmVJdGVyYXRvcklubGluZUJveC5oICovOyB9OwogCQlFNDE4MDI1NTIzRDQ1NDlCMDBG
RkIwNzEgLyogTGF5b3V0SW50ZWdyYXRpb25Cb3hUcmVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNDE4MDI1MzIzRDQ1NDlBMDBGRkIwNzEgLyogTGF5
b3V0SW50ZWdyYXRpb25Cb3hUcmVlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJRTQxOTA0MUYxQ0M2NDg2QjAwQzM1RjVEIC8qIEZvbnRTZWxlY3Rv
ckNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RTQxOTA0MUUxQ0M2NDg2QjAwQzM1RjVEIC8qIEZvbnRTZWxlY3RvckNsaWVudC5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUU0MUFDQzE2MjcxNzM0
MDIwMDNFOTE1NyAvKiBJbmxpbmVJdGVyYXRvckxvZ2ljYWxPcmRlclRyYXZlcnNhbC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTQxQUNDMTUyNzE3MzQw
MjAwM0U5MTU3IC8qIElubGluZUl0ZXJhdG9yTG9naWNhbE9yZGVyVHJhdmVyc2FsLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTQyMDUwMTcyMTQx
OTAxQjAwNjZFRjNCIC8qIFByb2Nlc3NXYXJtaW5nLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNDIwNTAxNDIxNDE5MDFBMDA2NkVGM0IgLyogUHJvY2Vz
c1dhcm1pbmcuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQlFNDI0QTM5RTEzMzBERjAxMDBDRjZEQzkgLyogTGVnYWN5VGlsZUdyaWRUaWxlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNDI0QTM5RDEzMzBE
RjAxMDBDRjZEQzkgLyogTGVnYWN5VGlsZUdyaWRUaWxlLmggKi87IH07CiAJCUU0MjVBNDlBMTgy
OTJCODQwMDIwQ0ZDRiAvKiBDb2xsZWN0aW9uSW5kZXhDYWNoZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTQyNUE0OTkxODI5MkI4NDAwMjBDRkNGIC8q
IENvbGxlY3Rpb25JbmRleENhY2hlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKQEAgLTE2NTM0LDYgKzE2NTM1LDggQEAKIAkJRTQxODAyNTMyM0Q0NTQ5
QTAwRkZCMDcxIC8qIExheW91dEludGVncmF0aW9uQm94VHJlZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBMYXlvdXRJbnRlZ3JhdGlvbkJveFRyZWUuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJRTQxODAyNTYyM0Q0NTRCNTAwRkZCMDcxIC8qIExheW91dEludGVn
cmF0aW9uQm94VHJlZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBMYXlvdXRJbnRlZ3JhdGlvbkJv
eFRyZWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFNDE5MDQxRTFDQzY0ODZC
MDBDMzVGNUQgLyogRm9udFNlbGVjdG9yQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEZvbnRTZWxlY3RvckNsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlFNDFBQ0MxMjI3MTczM0YzMDAzRTkxNTcgLyogSW5saW5lSXRlcmF0b3JMb2dpY2FsT3Jk
ZXJUcmF2ZXJzYWwuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5s
aW5lSXRlcmF0b3JMb2dpY2FsT3JkZXJUcmF2ZXJzYWwuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlFNDFBQ0MxNTI3MTczNDAyMDAzRTkxNTcgLyogSW5saW5lSXRlcmF0b3JMb2dp
Y2FsT3JkZXJUcmF2ZXJzYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5s
aW5lSXRlcmF0b3JMb2dpY2FsT3JkZXJUcmF2ZXJzYWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJRTQxRUEwMzgxMTk4MzZEQjAwNzEwQkM1IC8qIENTU1Byb3BlcnR5TmFtZXMuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gQ1NTUHJvcGVydHlOYW1lcy5j
cHA7IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJDb3JlL0NTU1Byb3BlcnR5TmFtZXMuY3BwOyBz
b3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQlFNDFFQTAzOTExOTgzNzQ5MDA3
MTBCQzUgLyogQ1NTVmFsdWVLZXl3b3Jkcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IG5hbWUgPSBDU1NWYWx1ZUtleXdvcmRzLmNwcDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dl
YkNvcmUvQ1NTVmFsdWVLZXl3b3Jkcy5jcHA7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19E
SVI7IH07CiAJCUU0MjA1MDE0MjE0MTkwMUEwMDY2RUYzQiAvKiBQcm9jZXNzV2FybWluZy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQcm9jZXNzV2FybWluZy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjk3MDcsNiArMjk3MTAsOCBAQAogCQkJCUU0RDMzRjNG
MjUyQzRCODIwMDgzN0QwNSAvKiBJbmxpbmVJdGVyYXRvckxpbmUuaCAqLywKIAkJCQlFNEQzM0Y0
MzI1MkM1MEUyMDA4MzdEMDUgLyogSW5saW5lSXRlcmF0b3JMaW5lTGVnYWN5UGF0aC5oICovLAog
CQkJCUU0RDMzRjQ1MjUyQzUwRkIwMDgzN0QwNSAvKiBJbmxpbmVJdGVyYXRvckxpbmVNb2Rlcm5Q
YXRoLmggKi8sCisJCQkJRTQxQUNDMTIyNzE3MzNGMzAwM0U5MTU3IC8qIElubGluZUl0ZXJhdG9y
TG9naWNhbE9yZGVyVHJhdmVyc2FsLmNwcCAqLywKKwkJCQlFNDFBQ0MxNTI3MTczNDAyMDAzRTkx
NTcgLyogSW5saW5lSXRlcmF0b3JMb2dpY2FsT3JkZXJUcmF2ZXJzYWwuaCAqLywKIAkJCQlFNDdD
RUJERTI3MDk5MTY0MDBCOEQ4RjUgLyogSW5saW5lSXRlcmF0b3JUZXh0Qm94LmNwcCAqLywKIAkJ
CQlFNDdDRUJFMDI3MDk5MTZEMDBCOEQ4RjUgLyogSW5saW5lSXRlcmF0b3JUZXh0Qm94LmggKi8s
CiAJCQkJRTQxODAyNTYyM0Q0NTRCNTAwRkZCMDcxIC8qIExheW91dEludGVncmF0aW9uQm94VHJl
ZS5jcHAgKi8sCkBAIC0zMzI0OCw2ICszMzI1Myw3IEBACiAJCQkJRTREMzNGNDEyNTJDNEI4MzAw
ODM3RDA1IC8qIElubGluZUl0ZXJhdG9yTGluZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTREMzNG
NDQyNTJDNTBFMjAwODM3RDA1IC8qIElubGluZUl0ZXJhdG9yTGluZUxlZ2FjeVBhdGguaCBpbiBI
ZWFkZXJzICovLAogCQkJCUU0RDMzRjQ2MjUyQzUwRkMwMDgzN0QwNSAvKiBJbmxpbmVJdGVyYXRv
ckxpbmVNb2Rlcm5QYXRoLmggaW4gSGVhZGVycyAqLywKKwkJCQlFNDFBQ0MxNjI3MTczNDAyMDAz
RTkxNTcgLyogSW5saW5lSXRlcmF0b3JMb2dpY2FsT3JkZXJUcmF2ZXJzYWwuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUU0N0NFQkUxMjcwOTkxNkQwMEI4RDhGNSAvKiBJbmxpbmVJdGVyYXRvclRleHRC
b3guaCBpbiBIZWFkZXJzICovLAogCQkJCTZGQUFFNzEzMjZBMjgxNEIwMEUwNzUwMiAvKiBJbmxp
bmVMZXZlbEJveC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNkYwQ0Q2OTUyMjlFRDMyNzAwQzU5OTRF
IC8qIElubGluZUxpbmUuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL1Bvc2l0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Qb3NpdGlvbi5jcHAKaW5k
ZXggMzI2NTYzZDUwODVjY2UwNDM0Yjc3NTU4NjI0OGE0YzUzYmZmYmMyYS4uMmMzMGRjMzI2N2Yz
ZGY3NzI5NTE0MjQ2MzllYzMzNWVlNjZhZGY1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL1Bvc2l0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUG9zaXRpb24uY3BwCkBA
IC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAiSFRNTFBhcnNlcklkaW9tcy5oIgogI2luY2x1ZGUg
IkhUTUxUYWJsZUVsZW1lbnQuaCIKICNpbmNsdWRlICJJbmxpbmVJdGVyYXRvckxpbmUuaCIKKyNp
bmNsdWRlICJJbmxpbmVJdGVyYXRvckxvZ2ljYWxPcmRlclRyYXZlcnNhbC5oIgogI2luY2x1ZGUg
IklubGluZUl0ZXJhdG9yVGV4dEJveC5oIgogI2luY2x1ZGUgIklubGluZVJ1bkFuZE9mZnNldC5o
IgogI2luY2x1ZGUgIkxlZ2FjeUlubGluZVRleHRCb3guaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHAKaW5kZXggYzVlODViMTg4ZDhkOGE2N2Fk
YjM1ZjM4NGE5YmJiYzExMTA2ZTEyNC4uOWRiYTIxODJhZjQ5MmEzODVmMzY5OWUwZDhmM2M2OTBl
NDM2NjdiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0
Q29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29t
bWFuZC5jcHAKQEAgLTQ4LDYgKzQ4LDcgQEAKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNs
dWRlICJIVE1MU3BhbkVsZW1lbnQuaCIKICNpbmNsdWRlICJJbmxpbmVJdGVyYXRvckJveC5oIgor
I2luY2x1ZGUgIklubGluZUl0ZXJhdG9yTG9naWNhbE9yZGVyVHJhdmVyc2FsLmgiCiAjaW5jbHVk
ZSAiSW5zZXJ0SW50b1RleHROb2RlQ29tbWFuZC5oIgogI2luY2x1ZGUgIkluc2VydExpbmVCcmVh
a0NvbW1hbmQuaCIKICNpbmNsdWRlICJJbnNlcnROb2RlQmVmb3JlQ29tbWFuZC5oIgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuaCBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmgKaW5kZXggZWYyM2FkZTBhYzE2MGIwNjdhYjk1Nzdj
NDJmZGJhOGNkMjZhOTFjNi4uYWI3N2Y0MjA2ZWJhMDQzNTJmMGQ1MGZlMTIyYjE3ZWUxZTRiOGMx
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5oCkBAIC0yNyw2ICsyNyw3IEBA
CiAKICNpbmNsdWRlICJDaGFyYWN0ZXJSYW5nZS5oIgogI2luY2x1ZGUgIkZpbmRPcHRpb25zLmgi
CisjaW5jbHVkZSAiSW5saW5lSXRlcmF0b3JMb2dpY2FsT3JkZXJUcmF2ZXJzYWwuaCIKICNpbmNs
dWRlICJJbmxpbmVJdGVyYXRvclRleHRCb3guaCIKICNpbmNsdWRlICJTaW1wbGVSYW5nZS5oIgog
I2luY2x1ZGUgIlRleHRJdGVyYXRvckJlaGF2aW9yLmgiCkBAIC0xNTEsMTEgKzE1MiwxMSBAQCBw
cml2YXRlOgogICAgIC8vIFVzZWQgd2hlbiB0aGVyZSBpcyBzdGlsbCBzb21lIHBlbmRpbmcgdGV4
dCBmcm9tIHRoZSBjdXJyZW50IG5vZGU7IHdoZW4gdGhlc2UgYXJlIGZhbHNlIGFuZCBudWxsLCB3
ZSBnbyBiYWNrIHRvIG5vcm1hbCBpdGVyYXRpbmcuCiAgICAgTm9kZSogbV9ub2RlRm9yQWRkaXRp
b25hbE5ld2xpbmUgeyBudWxscHRyIH07CiAgICAgSW5saW5lSXRlcmF0b3I6OlRleHRCb3hJdGVy
YXRvciBtX3RleHRSdW47Ci0gICAgSW5saW5lSXRlcmF0b3I6OkxvZ2ljYWxPcmRlckNhY2hlIG1f
dGV4dFJ1bkxvZ2ljYWxPcmRlckNhY2hlOworICAgIElubGluZUl0ZXJhdG9yOjpUZXh0TG9naWNh
bE9yZGVyQ2FjaGUgbV90ZXh0UnVuTG9naWNhbE9yZGVyQ2FjaGU7CiAKICAgICAvLyBVc2VkIHdo
ZW4gaXRlcmF0aW5nIG92ZXIgOmZpcnN0LWxldHRlciB0ZXh0IHRvIHNhdmUgcG9pbnRlciB0byBy
ZW1haW5pbmcgdGV4dCBib3guCiAgICAgSW5saW5lSXRlcmF0b3I6OlRleHRCb3hJdGVyYXRvciBt
X3JlbWFpbmluZ1RleHRSdW47Ci0gICAgSW5saW5lSXRlcmF0b3I6OkxvZ2ljYWxPcmRlckNhY2hl
IG1fcmVtYWluaW5nVGV4dFJ1bkxvZ2ljYWxPcmRlckNhY2hlOworICAgIElubGluZUl0ZXJhdG9y
OjpUZXh0TG9naWNhbE9yZGVyQ2FjaGUgbV9yZW1haW5pbmdUZXh0UnVuTG9naWNhbE9yZGVyQ2Fj
aGU7CiAKICAgICAvLyBVc2VkIHRvIHBvaW50IHRvIFJlbmRlclRleHQgb2JqZWN0IGZvciA6Zmly
c3QtbGV0dGVyLgogICAgIFJlbmRlclRleHQqIG1fZmlyc3RMZXR0ZXJUZXh0IHsgbnVsbHB0ciB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlUG9zaXRpb24uY3Bw
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlUG9zaXRpb24uY3BwCmluZGV4IDI0ZGE1
NWIzYjQxNjFlOTNlZWZlNTIyNmUzN2U2ODkxMDI4NWZiMDkuLjJjM2UwNzhhMzJhMmZlZjIxZGE0
ZmVjZjlkZGFkYjcxNDJhZWYzMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
VmlzaWJsZVBvc2l0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVQ
b3NpdGlvbi5jcHAKQEAgLTEyMiw2ICsxMjIsOCBAQCBQb3NpdGlvbiBWaXNpYmxlUG9zaXRpb246
OmxlZnRWaXN1YWxseURpc3RpbmN0Q2FuZGlkYXRlKCkgY29uc3QKICAgICBQb3NpdGlvbiBkb3du
c3RyZWFtU3RhcnQgPSBwLmRvd25zdHJlYW0oKTsKICAgICBUZXh0RGlyZWN0aW9uIHByaW1hcnlE
aXJlY3Rpb24gPSBwLnByaW1hcnlEaXJlY3Rpb24oKTsKIAorICAgIElubGluZUl0ZXJhdG9yOjpM
aW5lTG9naWNhbE9yZGVyQ2FjaGUgb3JkZXJDYWNoZTsKKwogICAgIHdoaWxlICh0cnVlKSB7CiAg
ICAgICAgIGF1dG8gW3J1biwgb2Zmc2V0XSA9IHAuaW5saW5lUnVuQW5kT2Zmc2V0KG1fYWZmaW5p
dHksIHByaW1hcnlEaXJlY3Rpb24pOwogICAgICAgICBpZiAoIXJ1bikKQEAgLTE3NCw3ICsxNzYs
OSBAQCBQb3NpdGlvbiBWaXNpYmxlUG9zaXRpb246OmxlZnRWaXN1YWxseURpc3RpbmN0Q2FuZGlk
YXRlKCkgY29uc3QKIAogICAgICAgICAgICAgaWYgKHJ1bi0+ZGlyZWN0aW9uKCkgPT0gcHJpbWFy
eURpcmVjdGlvbikgewogICAgICAgICAgICAgICAgIGlmICghcHJldmlvdXNSdW4pIHsKLSAgICAg
ICAgICAgICAgICAgICAgYXV0byBsb2dpY2FsU3RhcnQgPSAocHJpbWFyeURpcmVjdGlvbiA9PSBU
ZXh0RGlyZWN0aW9uOjpMVFIpID8gcnVuLT5saW5lKCktPmxvZ2ljYWxTdGFydFJ1bldpdGhOb2Rl
KCkgOiBydW4tPmxpbmUoKS0+bG9naWNhbEVuZFJ1bldpdGhOb2RlKCk7CisgICAgICAgICAgICAg
ICAgICAgIGF1dG8gbG9naWNhbFN0YXJ0ID0gcHJpbWFyeURpcmVjdGlvbiA9PSBUZXh0RGlyZWN0
aW9uOjpMVFIKKyAgICAgICAgICAgICAgICAgICAgICAgID8gSW5saW5lSXRlcmF0b3I6OmZpcnN0
TGVhZk9uTGluZUluTG9naWNhbE9yZGVyV2l0aE5vZGUocnVuLT5saW5lKCksIG9yZGVyQ2FjaGUp
CisgICAgICAgICAgICAgICAgICAgICAgICA6IElubGluZUl0ZXJhdG9yOjpsYXN0TGVhZk9uTGlu
ZUluTG9naWNhbE9yZGVyV2l0aE5vZGUocnVuLT5saW5lKCksIG9yZGVyQ2FjaGUpOwogICAgICAg
ICAgICAgICAgICAgICBpZiAobG9naWNhbFN0YXJ0KSB7CiAgICAgICAgICAgICAgICAgICAgICAg
ICBydW4gPSBsb2dpY2FsU3RhcnQ7CiAgICAgICAgICAgICAgICAgICAgICAgICByZW5kZXJlciA9
ICZydW4tPnJlbmRlcmVyKCk7CkBAIC0yODQsNiArMjg4LDggQEAgUG9zaXRpb24gVmlzaWJsZVBv
c2l0aW9uOjpyaWdodFZpc3VhbGx5RGlzdGluY3RDYW5kaWRhdGUoKSBjb25zdAogICAgIFBvc2l0
aW9uIGRvd25zdHJlYW1TdGFydCA9IHAuZG93bnN0cmVhbSgpOwogICAgIFRleHREaXJlY3Rpb24g
cHJpbWFyeURpcmVjdGlvbiA9IHAucHJpbWFyeURpcmVjdGlvbigpOwogCisgICAgSW5saW5lSXRl
cmF0b3I6OkxpbmVMb2dpY2FsT3JkZXJDYWNoZSBvcmRlckNhY2hlOworCiAgICAgd2hpbGUgKHRy
dWUpIHsKICAgICAgICAgYXV0byBbcnVuLCBvZmZzZXRdID0gcC5pbmxpbmVSdW5BbmRPZmZzZXQo
bV9hZmZpbml0eSwgcHJpbWFyeURpcmVjdGlvbik7CiAgICAgICAgIGlmICghcnVuKQpAQCAtMzM2
LDcgKzM0MiwxMCBAQCBQb3NpdGlvbiBWaXNpYmxlUG9zaXRpb246OnJpZ2h0VmlzdWFsbHlEaXN0
aW5jdENhbmRpZGF0ZSgpIGNvbnN0CiAKICAgICAgICAgICAgIGlmIChydW4tPmRpcmVjdGlvbigp
ID09IHByaW1hcnlEaXJlY3Rpb24pIHsKICAgICAgICAgICAgICAgICBpZiAoIW5leHRSdW4pIHsK
LSAgICAgICAgICAgICAgICAgICAgYXV0byBsb2dpY2FsRW5kID0gcHJpbWFyeURpcmVjdGlvbiA9
PSBUZXh0RGlyZWN0aW9uOjpMVFIgPyBydW4tPmxpbmUoKS0+bG9naWNhbEVuZFJ1bldpdGhOb2Rl
KCkgOiBydW4tPmxpbmUoKS0+bG9naWNhbFN0YXJ0UnVuV2l0aE5vZGUoKTsKKyAgICAgICAgICAg
ICAgICAgICAgYXV0byBsb2dpY2FsRW5kID0gcHJpbWFyeURpcmVjdGlvbiA9PSBUZXh0RGlyZWN0
aW9uOjpMVFIKKyAgICAgICAgICAgICAgICAgICAgICAgID8gSW5saW5lSXRlcmF0b3I6Omxhc3RM
ZWFmT25MaW5lSW5Mb2dpY2FsT3JkZXJXaXRoTm9kZShydW4tPmxpbmUoKSwgb3JkZXJDYWNoZSkK
KyAgICAgICAgICAgICAgICAgICAgICAgIDogSW5saW5lSXRlcmF0b3I6OmZpcnN0TGVhZk9uTGlu
ZUluTG9naWNhbE9yZGVyV2l0aE5vZGUocnVuLT5saW5lKCksIG9yZGVyQ2FjaGUpOworCiAgICAg
ICAgICAgICAgICAgICAgIGlmIChsb2dpY2FsRW5kKSB7CiAgICAgICAgICAgICAgICAgICAgICAg
ICBydW4gPSBsb2dpY2FsRW5kOwogICAgICAgICAgICAgICAgICAgICAgICAgcmVuZGVyZXIgPSAm
cnVuLT5yZW5kZXJlcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNp
YmxlVW5pdHMuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlVW5pdHMuY3BwCmlu
ZGV4IDkzODc4ODgzY2U4ZDVmNzA3YjczYjAyZDg3NjA0Yzg1Y2VkY2ZhZWIuLjZjMDI0YmUzNTQ4
NTlmMGNjNzcwZjExOWVmOWU3MWJiYTVkNGFkNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvVmlzaWJsZVVuaXRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zp
c2libGVVbml0cy5jcHAKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIK
ICNpbmNsdWRlICJJbmxpbmVJdGVyYXRvckJveC5oIgogI2luY2x1ZGUgIklubGluZUl0ZXJhdG9y
TGluZS5oIgorI2luY2x1ZGUgIklubGluZUl0ZXJhdG9yTG9naWNhbE9yZGVyVHJhdmVyc2FsLmgi
CiAjaW5jbHVkZSAiSW5saW5lUnVuQW5kT2Zmc2V0LmgiCiAjaW5jbHVkZSAiTm9kZVRyYXZlcnNh
bC5oIgogI2luY2x1ZGUgIlJhbmdlLmgiCkBAIC0xMjksNTAgKzEzMCw1MCBAQCBzdGF0aWMgYm9v
bCBpc1RleHRPckxpbmVCcmVha1J1bihJbmxpbmVJdGVyYXRvcjo6TGVhZkJveEl0ZXJhdG9yIHJ1
bikKICAgICByZXR1cm4gcnVuICYmIChydW4tPmlzVGV4dCgpIHx8IHJ1bi0+cmVuZGVyZXIoKS5p
c0JSKCkpOwogfQogCi1zdGF0aWMgSW5saW5lSXRlcmF0b3I6OkxlYWZCb3hJdGVyYXRvciBwcmV2
aW91c1RleHRPckxpbmVCcmVha1J1bihJbmxpbmVJdGVyYXRvcjo6TGVhZkJveEl0ZXJhdG9yIHJ1
bikKK3N0YXRpYyBJbmxpbmVJdGVyYXRvcjo6TGVhZkJveEl0ZXJhdG9yIHByZXZpb3VzVGV4dE9y
TGluZUJyZWFrUnVuKElubGluZUl0ZXJhdG9yOjpMZWFmQm94SXRlcmF0b3IgcnVuLCBJbmxpbmVJ
dGVyYXRvcjo6TGluZUxvZ2ljYWxPcmRlckNhY2hlJiBvcmRlckNhY2hlKQogewogICAgIHdoaWxl
IChydW4pIHsKLSAgICAgICAgcnVuLnRyYXZlcnNlUHJldmlvdXNPbkxpbmVJbkxvZ2ljYWxPcmRl
cigpOworICAgICAgICBydW4gPSBJbmxpbmVJdGVyYXRvcjo6cHJldmlvdXNMZWFmT25MaW5lSW5M
b2dpY2FsT3JkZXIocnVuLCBvcmRlckNhY2hlKTsKICAgICAgICAgaWYgKGlzVGV4dE9yTGluZUJy
ZWFrUnVuKHJ1bikpCiAgICAgICAgICAgICByZXR1cm4gcnVuOwogICAgIH0KICAgICByZXR1cm4g
eyB9OwogfQogCi1zdGF0aWMgSW5saW5lSXRlcmF0b3I6OkxlYWZCb3hJdGVyYXRvciBuZXh0VGV4
dE9yTGluZUJyZWFrUnVuKElubGluZUl0ZXJhdG9yOjpMZWFmQm94SXRlcmF0b3IgcnVuKQorc3Rh
dGljIElubGluZUl0ZXJhdG9yOjpMZWFmQm94SXRlcmF0b3IgbmV4dFRleHRPckxpbmVCcmVha1J1
bihJbmxpbmVJdGVyYXRvcjo6TGVhZkJveEl0ZXJhdG9yIHJ1biwgSW5saW5lSXRlcmF0b3I6Okxp
bmVMb2dpY2FsT3JkZXJDYWNoZSYgb3JkZXJDYWNoZSkKIHsKICAgICB3aGlsZSAocnVuKSB7Ci0g
ICAgICAgIHJ1bi50cmF2ZXJzZU5leHRPbkxpbmVJbkxvZ2ljYWxPcmRlcigpOworICAgICAgICBy
dW4gPSBJbmxpbmVJdGVyYXRvcjo6bmV4dExlYWZPbkxpbmVJbkxvZ2ljYWxPcmRlcihydW4sIG9y
ZGVyQ2FjaGUpOwogICAgICAgICBpZiAoaXNUZXh0T3JMaW5lQnJlYWtSdW4ocnVuKSkKICAgICAg
ICAgICAgIHJldHVybiBydW47CiAgICAgfQogICAgIHJldHVybiB7IH07CiB9CiAKLXN0YXRpYyBJ
bmxpbmVJdGVyYXRvcjo6TGVhZkJveEl0ZXJhdG9yIHN0YXJ0VGV4dE9yTGluZUJyZWFrUnVuKElu
bGluZUl0ZXJhdG9yOjpMaW5lSXRlcmF0b3IgbGluZSkKK3N0YXRpYyBJbmxpbmVJdGVyYXRvcjo6
TGVhZkJveEl0ZXJhdG9yIHN0YXJ0VGV4dE9yTGluZUJyZWFrUnVuKElubGluZUl0ZXJhdG9yOjpM
aW5lSXRlcmF0b3IgbGluZSwgSW5saW5lSXRlcmF0b3I6OkxpbmVMb2dpY2FsT3JkZXJDYWNoZSYg
b3JkZXJDYWNoZSkKIHsKLSAgICBhdXRvIHJ1biA9IGxpbmUtPmxvZ2ljYWxTdGFydFJ1bigpOwor
ICAgIGF1dG8gcnVuID0gSW5saW5lSXRlcmF0b3I6OmZpcnN0TGVhZk9uTGluZUluTG9naWNhbE9y
ZGVyKGxpbmUsIG9yZGVyQ2FjaGUpOwogICAgIGlmIChpc1RleHRPckxpbmVCcmVha1J1bihydW4p
KQogICAgICAgICByZXR1cm4gcnVuOwotICAgIHJldHVybiBuZXh0VGV4dE9yTGluZUJyZWFrUnVu
KHJ1bik7CisgICAgcmV0dXJuIG5leHRUZXh0T3JMaW5lQnJlYWtSdW4ocnVuLCBvcmRlckNhY2hl
KTsKIH0KIAotc3RhdGljIElubGluZUl0ZXJhdG9yOjpMZWFmQm94SXRlcmF0b3IgZW5kVGV4dE9y
TGluZUJyZWFrUnVuKElubGluZUl0ZXJhdG9yOjpMaW5lSXRlcmF0b3IgbGluZSkKK3N0YXRpYyBJ
bmxpbmVJdGVyYXRvcjo6TGVhZkJveEl0ZXJhdG9yIGVuZFRleHRPckxpbmVCcmVha1J1bihJbmxp
bmVJdGVyYXRvcjo6TGluZUl0ZXJhdG9yIGxpbmUsIElubGluZUl0ZXJhdG9yOjpMaW5lTG9naWNh
bE9yZGVyQ2FjaGUmIG9yZGVyQ2FjaGUpCiB7Ci0gICAgYXV0byBydW4gPSBsaW5lLT5sb2dpY2Fs
RW5kUnVuKCk7CisgICAgYXV0byBydW4gPSBJbmxpbmVJdGVyYXRvcjo6bGFzdExlYWZPbkxpbmVJ
bkxvZ2ljYWxPcmRlcihsaW5lLCBvcmRlckNhY2hlKTsKICAgICBpZiAoaXNUZXh0T3JMaW5lQnJl
YWtSdW4ocnVuKSkKICAgICAgICAgcmV0dXJuIHJ1bjsKLSAgICByZXR1cm4gcHJldmlvdXNUZXh0
T3JMaW5lQnJlYWtSdW4ocnVuKTsKKyAgICByZXR1cm4gcHJldmlvdXNUZXh0T3JMaW5lQnJlYWtS
dW4ocnVuLCBvcmRlckNhY2hlKTsKIH0KIAotc3RhdGljIGNvbnN0IElubGluZUl0ZXJhdG9yOjpM
ZWFmQm94SXRlcmF0b3IgbG9naWNhbGx5UHJldmlvdXNSdW4oY29uc3QgVmlzaWJsZVBvc2l0aW9u
JiB2aXNpYmxlUG9zaXRpb24sIElubGluZUl0ZXJhdG9yOjpMZWFmQm94SXRlcmF0b3Igc3RhcnRS
dW4sIGJvb2wmIHByZXZpb3VzQm94SW5EaWZmZXJlbnRMaW5lKQorc3RhdGljIGNvbnN0IElubGlu
ZUl0ZXJhdG9yOjpMZWFmQm94SXRlcmF0b3IgbG9naWNhbGx5UHJldmlvdXNSdW4oY29uc3QgVmlz
aWJsZVBvc2l0aW9uJiB2aXNpYmxlUG9zaXRpb24sIElubGluZUl0ZXJhdG9yOjpMZWFmQm94SXRl
cmF0b3Igc3RhcnRSdW4sIElubGluZUl0ZXJhdG9yOjpMaW5lTG9naWNhbE9yZGVyQ2FjaGUmIG9y
ZGVyQ2FjaGUsIGJvb2wmIHByZXZpb3VzQm94SW5EaWZmZXJlbnRMaW5lKQogewotICAgIGlmIChh
dXRvIHByZXZpb3VzUnVuID0gcHJldmlvdXNUZXh0T3JMaW5lQnJlYWtSdW4oc3RhcnRSdW4pKQor
ICAgIGlmIChhdXRvIHByZXZpb3VzUnVuID0gcHJldmlvdXNUZXh0T3JMaW5lQnJlYWtSdW4oc3Rh
cnRSdW4sIG9yZGVyQ2FjaGUpKQogICAgICAgICByZXR1cm4gcHJldmlvdXNSdW47CiAKICAgICBp
ZiAoYXV0byBwcmV2aW91c0xpbmUgPSBzdGFydFJ1bi0+bGluZSgpLT5wcmV2aW91cygpKSB7CiAg
ICAgICAgIC8vIEZJWE1FOiBXaHkgaXNuJ3QgcHJldmlvdXNCb3hJbkRpZmZlcmVudExpbmUgc2V0
IGhlcmU/Ci0gICAgICAgIGlmIChhdXRvIHByZXZpb3VzUnVuID0gZW5kVGV4dE9yTGluZUJyZWFr
UnVuKHByZXZpb3VzTGluZSkpCisgICAgICAgIGlmIChhdXRvIHByZXZpb3VzUnVuID0gZW5kVGV4
dE9yTGluZUJyZWFrUnVuKHByZXZpb3VzTGluZSwgb3JkZXJDYWNoZSkpCiAgICAgICAgICAgICBy
ZXR1cm4gcHJldmlvdXNSdW47CiAgICAgfQogCkBAIC0xOTEsMjYgKzE5MiwyNiBAQCBzdGF0aWMg
Y29uc3QgSW5saW5lSXRlcmF0b3I6OkxlYWZCb3hJdGVyYXRvciBsb2dpY2FsbHlQcmV2aW91c1J1
bihjb25zdCBWaXNpYmxlUAogICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgaWYgKHByZXZp
b3VzTGluZSAhPSBzdGFydFJ1bi0+bGluZSgpKSB7Ci0gICAgICAgICAgICBpZiAoYXV0byBwcmV2
aW91c1J1biA9IGVuZFRleHRPckxpbmVCcmVha1J1bihwcmV2aW91c0xpbmUpKSB7CisgICAgICAg
ICAgICBpZiAoYXV0byBwcmV2aW91c1J1biA9IGVuZFRleHRPckxpbmVCcmVha1J1bihwcmV2aW91
c0xpbmUsIG9yZGVyQ2FjaGUpKSB7CiAgICAgICAgICAgICAgICAgcHJldmlvdXNCb3hJbkRpZmZl
cmVudExpbmUgPSB0cnVlOwogICAgICAgICAgICAgICAgIHJldHVybiBwcmV2aW91c1J1bjsKICAg
ICAgICAgICAgIH0KICAgICAgICAgfQogCi0gICAgICAgIHN0YXJ0UnVuID0gcHJldmlvdXNMaW5l
LT5sb2dpY2FsU3RhcnRSdW4oKTsKKyAgICAgICAgc3RhcnRSdW4gPSBJbmxpbmVJdGVyYXRvcjo6
Zmlyc3RMZWFmT25MaW5lSW5Mb2dpY2FsT3JkZXIocHJldmlvdXNMaW5lLCBvcmRlckNhY2hlKTsK
ICAgICB9CiAgICAgcmV0dXJuIHsgfTsKIH0KIAogCi1zdGF0aWMgY29uc3QgSW5saW5lSXRlcmF0
b3I6OkxlYWZCb3hJdGVyYXRvciBsb2dpY2FsbHlOZXh0UnVuKGNvbnN0IFZpc2libGVQb3NpdGlv
biYgdmlzaWJsZVBvc2l0aW9uLCBJbmxpbmVJdGVyYXRvcjo6TGVhZkJveEl0ZXJhdG9yIHN0YXJ0
UnVuLCBib29sJiBuZXh0Qm94SW5EaWZmZXJlbnRMaW5lKQorc3RhdGljIGNvbnN0IElubGluZUl0
ZXJhdG9yOjpMZWFmQm94SXRlcmF0b3IgbG9naWNhbGx5TmV4dFJ1bihjb25zdCBWaXNpYmxlUG9z
aXRpb24mIHZpc2libGVQb3NpdGlvbiwgSW5saW5lSXRlcmF0b3I6OkxlYWZCb3hJdGVyYXRvciBz
dGFydFJ1biwgSW5saW5lSXRlcmF0b3I6OkxpbmVMb2dpY2FsT3JkZXJDYWNoZSYgb3JkZXJDYWNo
ZSwgYm9vbCYgbmV4dEJveEluRGlmZmVyZW50TGluZSkKIHsKLSAgICBpZiAoYXV0byBuZXh0UnVu
ID0gbmV4dFRleHRPckxpbmVCcmVha1J1bihzdGFydFJ1bikpCisgICAgaWYgKGF1dG8gbmV4dFJ1
biA9IG5leHRUZXh0T3JMaW5lQnJlYWtSdW4oc3RhcnRSdW4sIG9yZGVyQ2FjaGUpKQogICAgICAg
ICByZXR1cm4gbmV4dFJ1bjsKIAogICAgIGlmIChhdXRvIG5leHRMaW5lID0gc3RhcnRSdW4tPmxp
bmUoKS0+bmV4dCgpKSB7CiAgICAgICAgIC8vIEZJWE1FOiBXaHkgaXNuJ3QgcHJldmlvdXNCb3hJ
bkRpZmZlcmVudExpbmUgc2V0IGhlcmU/Ci0gICAgICAgIGlmIChhdXRvIG5leHRSdW4gPSBzdGFy
dFRleHRPckxpbmVCcmVha1J1bihuZXh0TGluZSkpCisgICAgICAgIGlmIChhdXRvIG5leHRSdW4g
PSBzdGFydFRleHRPckxpbmVCcmVha1J1bihuZXh0TGluZSwgb3JkZXJDYWNoZSkpCiAgICAgICAg
ICAgICByZXR1cm4gbmV4dFJ1bjsKICAgICB9CiAKQEAgLTIyOSwxMyArMjMwLDEzIEBAIHN0YXRp
YyBjb25zdCBJbmxpbmVJdGVyYXRvcjo6TGVhZkJveEl0ZXJhdG9yIGxvZ2ljYWxseU5leHRSdW4o
Y29uc3QgVmlzaWJsZVBvc2l0CiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBpZiAobmV4
dExpbmUgIT0gc3RhcnRSdW4tPmxpbmUoKSkgewotICAgICAgICAgICAgaWYgKGF1dG8gbmV4dFJ1
biA9IHN0YXJ0VGV4dE9yTGluZUJyZWFrUnVuKG5leHRMaW5lKSkgeworICAgICAgICAgICAgaWYg
KGF1dG8gbmV4dFJ1biA9IHN0YXJ0VGV4dE9yTGluZUJyZWFrUnVuKG5leHRMaW5lLCBvcmRlckNh
Y2hlKSkgewogICAgICAgICAgICAgICAgIG5leHRCb3hJbkRpZmZlcmVudExpbmUgPSB0cnVlOwog
ICAgICAgICAgICAgICAgIHJldHVybiBuZXh0UnVuOwogICAgICAgICAgICAgfQogICAgICAgICB9
CiAKLSAgICAgICAgc3RhcnRSdW4gPSBuZXh0TGluZS0+bG9naWNhbEVuZFJ1bigpOworICAgICAg
ICBzdGFydFJ1biA9IElubGluZUl0ZXJhdG9yOjpsYXN0TGVhZk9uTGluZUluTG9naWNhbE9yZGVy
V2l0aE5vZGUobmV4dExpbmUsIG9yZGVyQ2FjaGUpOwogICAgIH0KICAgICByZXR1cm4geyB9Owog
fQpAQCAtMjQ1LDExICsyNDYsMTIgQEAgc3RhdGljIFVCcmVha0l0ZXJhdG9yKiB3b3JkQnJlYWtJ
dGVyYXRvckZvck1pbk9mZnNldEJvdW5kYXJ5KGNvbnN0IFZpc2libGVQb3NpdGkKIHsKICAgICBw
cmV2aW91c1J1bkluRGlmZmVyZW50TGluZSA9IGZhbHNlOwogCi0gICAgYXV0byBwcmV2aW91c1J1
biA9IGxvZ2ljYWxseVByZXZpb3VzUnVuKHZpc2libGVQb3NpdGlvbiwgdGV4dFJ1biwgcHJldmlv
dXNSdW5JbkRpZmZlcmVudExpbmUpOworICAgIElubGluZUl0ZXJhdG9yOjpMaW5lTG9naWNhbE9y
ZGVyQ2FjaGUgb3JkZXJDYWNoZTsKKyAgICBhdXRvIHByZXZpb3VzUnVuID0gbG9naWNhbGx5UHJl
dmlvdXNSdW4odmlzaWJsZVBvc2l0aW9uLCB0ZXh0UnVuLCBvcmRlckNhY2hlLCBwcmV2aW91c1J1
bkluRGlmZmVyZW50TGluZSk7CiAgICAgd2hpbGUgKHByZXZpb3VzUnVuICYmICFwcmV2aW91c1J1
bi0+aXNUZXh0KCkpIHsKICAgICAgICAgQVNTRVJUKHByZXZpb3VzUnVuLT5yZW5kZXJlcigpLmlz
QlIoKSk7CiAgICAgICAgIHByZXZpb3VzUnVuSW5EaWZmZXJlbnRMaW5lID0gdHJ1ZTsKLSAgICAg
ICAgcHJldmlvdXNSdW4gPSBsb2dpY2FsbHlQcmV2aW91c1J1bih2aXNpYmxlUG9zaXRpb24sIHBy
ZXZpb3VzUnVuLCBwcmV2aW91c1J1bkluRGlmZmVyZW50TGluZSk7CisgICAgICAgIHByZXZpb3Vz
UnVuID0gbG9naWNhbGx5UHJldmlvdXNSdW4odmlzaWJsZVBvc2l0aW9uLCBwcmV2aW91c1J1biwg
b3JkZXJDYWNoZSwgcHJldmlvdXNSdW5JbkRpZmZlcmVudExpbmUpOwogICAgIH0KIAogICAgIHN0
cmluZy5jbGVhcigpOwpAQCAtMjY5LDExICsyNzEsMTIgQEAgc3RhdGljIFVCcmVha0l0ZXJhdG9y
KiB3b3JkQnJlYWtJdGVyYXRvckZvck1heE9mZnNldEJvdW5kYXJ5KGNvbnN0IFZpc2libGVQb3Np
dGkKIHsKICAgICBuZXh0UnVuSW5EaWZmZXJlbnRMaW5lID0gZmFsc2U7CiAKLSAgICBhdXRvIG5l
eHRSdW4gPSBsb2dpY2FsbHlOZXh0UnVuKHZpc2libGVQb3NpdGlvbiwgdGV4dFJ1biwgbmV4dFJ1
bkluRGlmZmVyZW50TGluZSk7CisgICAgSW5saW5lSXRlcmF0b3I6OkxpbmVMb2dpY2FsT3JkZXJD
YWNoZSBvcmRlckNhY2hlOworICAgIGF1dG8gbmV4dFJ1biA9IGxvZ2ljYWxseU5leHRSdW4odmlz
aWJsZVBvc2l0aW9uLCB0ZXh0UnVuLCBvcmRlckNhY2hlLCBuZXh0UnVuSW5EaWZmZXJlbnRMaW5l
KTsKICAgICB3aGlsZSAobmV4dFJ1biAmJiAhbmV4dFJ1bi0+aXNUZXh0KCkpIHsKICAgICAgICAg
QVNTRVJUKG5leHRSdW4tPnJlbmRlcmVyKCkuaXNCUigpKTsKICAgICAgICAgbmV4dFJ1bkluRGlm
ZmVyZW50TGluZSA9IHRydWU7Ci0gICAgICAgIG5leHRSdW4gPSBsb2dpY2FsbHlOZXh0UnVuKHZp
c2libGVQb3NpdGlvbiwgbmV4dFJ1biwgbmV4dFJ1bkluRGlmZmVyZW50TGluZSk7CisgICAgICAg
IG5leHRSdW4gPSBsb2dpY2FsbHlOZXh0UnVuKHZpc2libGVQb3NpdGlvbiwgbmV4dFJ1biwgb3Jk
ZXJDYWNoZSwgbmV4dFJ1bkluRGlmZmVyZW50TGluZSk7CiAgICAgfQogCiAgICAgc3RyaW5nLmNs
ZWFyKCk7CkBAIC03NDYsOCArNzQ5LDEwIEBAIHN0YXRpYyBWaXNpYmxlUG9zaXRpb24gc3RhcnRQ
b3NpdGlvbkZvckxpbmUoY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBjLCBMaW5lRW5kcG9pCiAgICAg
ICAgIHJldHVybiBWaXNpYmxlUG9zaXRpb24oKTsKICAgICB9CiAKKyAgICBJbmxpbmVJdGVyYXRv
cjo6TGluZUxvZ2ljYWxPcmRlckNhY2hlIG9yZGVyQ2FjaGU7CisKICAgICBOb2RlKiBzdGFydE5v
ZGUgPSBudWxscHRyOwotICAgIGF1dG8gc3RhcnRSdW4gPSBtb2RlID09IFVzZUxvZ2ljYWxPcmRl
cmluZyA/IGxpbmUtPmxvZ2ljYWxTdGFydFJ1bldpdGhOb2RlKCkgOiBsaW5lLT5maXJzdFJ1bigp
OworICAgIGF1dG8gc3RhcnRSdW4gPSBtb2RlID09IFVzZUxvZ2ljYWxPcmRlcmluZyA/IElubGlu
ZUl0ZXJhdG9yOjpmaXJzdExlYWZPbkxpbmVJbkxvZ2ljYWxPcmRlcldpdGhOb2RlKGxpbmUsIG9y
ZGVyQ2FjaGUpIDogbGluZS0+Zmlyc3RSdW4oKTsKICAgICAvLyBHZW5lcmF0ZWQgY29udGVudCAo
ZS5nLiBsaXN0IG1hcmtlcnMgYW5kIENTUyA6YmVmb3JlIGFuZCA6YWZ0ZXIgcHNldWRvZWxlbWVu
dHMpIGhhdmUgbm8gY29ycmVzcG9uZGluZyBET00gZWxlbWVudCwKICAgICAvLyBhbmQgc28gY2Fu
bm90IGJlIHJlcHJlc2VudGVkIGJ5IGEgVmlzaWJsZVBvc2l0aW9uLiBVc2Ugd2hhdGV2ZXIgZm9s
bG93cyBpbnN0ZWFkLgogICAgIHdoaWxlICh0cnVlKSB7CkBAIC03NTksNyArNzY0LDcgQEAgc3Rh
dGljIFZpc2libGVQb3NpdGlvbiBzdGFydFBvc2l0aW9uRm9yTGluZShjb25zdCBWaXNpYmxlUG9z
aXRpb24mIGMsIExpbmVFbmRwb2kKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGlmICht
b2RlID09IFVzZUxvZ2ljYWxPcmRlcmluZykKLSAgICAgICAgICAgIHN0YXJ0UnVuLnRyYXZlcnNl
TmV4dE9uTGluZUluTG9naWNhbE9yZGVyKCk7CisgICAgICAgICAgICBzdGFydFJ1biA9IElubGlu
ZUl0ZXJhdG9yOjpuZXh0TGVhZk9uTGluZUluTG9naWNhbE9yZGVyKHN0YXJ0UnVuLCBvcmRlckNh
Y2hlKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgc3RhcnRSdW4udHJhdmVyc2VOZXh0T25M
aW5lKCk7CiAgICAgfQpAQCAtODE2LDggKzgyMSwxMCBAQCBzdGF0aWMgVmlzaWJsZVBvc2l0aW9u
IGVuZFBvc2l0aW9uRm9yTGluZShjb25zdCBWaXNpYmxlUG9zaXRpb24mIGMsIExpbmVFbmRwb2lu
dAogICAgICAgICByZXR1cm4gVmlzaWJsZVBvc2l0aW9uKCk7CiAgICAgfQogCisgICAgSW5saW5l
SXRlcmF0b3I6OkxpbmVMb2dpY2FsT3JkZXJDYWNoZSBvcmRlckNhY2hlOworCiAgICAgTm9kZSog
ZW5kTm9kZSA9IG51bGxwdHI7Ci0gICAgYXV0byBlbmRSdW4gPSBtb2RlID09IFVzZUxvZ2ljYWxP
cmRlcmluZyA/IGxpbmUtPmxvZ2ljYWxFbmRSdW5XaXRoTm9kZSgpIDogbGluZS0+bGFzdFJ1bigp
OworICAgIGF1dG8gZW5kUnVuID0gbW9kZSA9PSBVc2VMb2dpY2FsT3JkZXJpbmcgPyBJbmxpbmVJ
dGVyYXRvcjo6bGFzdExlYWZPbkxpbmVJbkxvZ2ljYWxPcmRlcihsaW5lLCBvcmRlckNhY2hlKSA6
IGxpbmUtPmxhc3RSdW4oKTsKICAgICAvLyBHZW5lcmF0ZWQgY29udGVudCAoZS5nLiBsaXN0IG1h
cmtlcnMgYW5kIENTUyA6YmVmb3JlIGFuZCA6YWZ0ZXIgcHNldWRvZWxlbWVudHMpIGhhdmUgbm8g
Y29ycmVzcG9uZGluZyBET00gZWxlbWVudCwKICAgICAvLyBhbmQgc28gY2Fubm90IGJlIHJlcHJl
c2VudGVkIGJ5IGEgVmlzaWJsZVBvc2l0aW9uLiBVc2Ugd2hhdGV2ZXIgcHJlY2VkZXMgaW5zdGVh
ZC4KICAgICB3aGlsZSAodHJ1ZSkgewpAQCAtODI5LDcgKzgzNiw3IEBAIHN0YXRpYyBWaXNpYmxl
UG9zaXRpb24gZW5kUG9zaXRpb25Gb3JMaW5lKGNvbnN0IFZpc2libGVQb3NpdGlvbiYgYywgTGlu
ZUVuZHBvaW50CiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBpZiAobW9kZSA9PSBVc2VM
b2dpY2FsT3JkZXJpbmcpCi0gICAgICAgICAgICBlbmRSdW4udHJhdmVyc2VQcmV2aW91c09uTGlu
ZUluTG9naWNhbE9yZGVyKCk7CisgICAgICAgICAgICBlbmRSdW4gPSBJbmxpbmVJdGVyYXRvcjo6
cHJldmlvdXNMZWFmT25MaW5lSW5Mb2dpY2FsT3JkZXIoZW5kUnVuLCBvcmRlckNhY2hlKTsKICAg
ICAgICAgZWxzZQogICAgICAgICAgICAgZW5kUnVuLnRyYXZlcnNlUHJldmlvdXNPbkxpbmUoKTsK
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vSW5s
aW5lSXRlcmF0b3JCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0lu
bGluZUl0ZXJhdG9yQm94LmNwcAppbmRleCA5MTYxMjIxZGQ5NTA1ZjAwMjYxYjhiODcxMGY4ZjA1
MDU5NDYyNmUwLi40YTBhNzVkZDYwNzk0MjdhODMzYWI3ZmU1NTc3YTE4YTk0ZmI5MjFhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vSW5saW5lSXRlcmF0b3JC
b3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9JbmxpbmVJdGVy
YXRvckJveC5jcHAKQEAgLTE0OCwyMiArMTQ4LDYgQEAgTGVhZkJveEl0ZXJhdG9yJiBMZWFmQm94
SXRlcmF0b3I6OnRyYXZlcnNlUHJldmlvdXNPbkxpbmVJZ25vcmluZ0xpbmVCcmVhaygpCiAgICAg
cmV0dXJuICp0aGlzOwogfQogCi1MZWFmQm94SXRlcmF0b3ImIExlYWZCb3hJdGVyYXRvcjo6dHJh
dmVyc2VOZXh0T25MaW5lSW5Mb2dpY2FsT3JkZXIoKQotewotICAgIFdURjo6c3dpdGNoT24obV9i
b3gubV9wYXRoVmFyaWFudCwgW10oYXV0byYgcGF0aCkgewotICAgICAgICBwYXRoLnRyYXZlcnNl
TmV4dE9uTGluZUluTG9naWNhbE9yZGVyKCk7Ci0gICAgfSk7Ci0gICAgcmV0dXJuICp0aGlzOwot
fQotCi1MZWFmQm94SXRlcmF0b3ImIExlYWZCb3hJdGVyYXRvcjo6dHJhdmVyc2VQcmV2aW91c09u
TGluZUluTG9naWNhbE9yZGVyKCkKLXsKLSAgICBXVEY6OnN3aXRjaE9uKG1fYm94Lm1fcGF0aFZh
cmlhbnQsIFtdKGF1dG8mIHBhdGgpIHsKLSAgICAgICAgcGF0aC50cmF2ZXJzZVByZXZpb3VzT25M
aW5lSW5Mb2dpY2FsT3JkZXIoKTsKLSAgICB9KTsKLSAgICByZXR1cm4gKnRoaXM7Ci19Ci0KIExl
YWZCb3hJdGVyYXRvciBib3hGb3IoY29uc3QgUmVuZGVyTGluZUJyZWFrJiByZW5kZXJlcikKIHsK
ICNpZiBFTkFCTEUoTEFZT1VUX0ZPUk1BVFRJTkdfQ09OVEVYVCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9JbmxpbmVJdGVyYXRvckJveC5oIGIvU291cmNl
L1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0lubGluZUl0ZXJhdG9yQm94LmgKaW5kZXggYjQ1
YThlZTQyMTdjMGZiYzczZDJjMmZjMjNjNDU4MWJjNWJkYjA1MC4uNDgwYWZiODk5M2JkMjcxMmRi
NmVhZGM5ZjU1MDlhZTI1MTk2NDYxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2ludGVncmF0aW9uL0lubGluZUl0ZXJhdG9yQm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2ludGVncmF0aW9uL0lubGluZUl0ZXJhdG9yQm94LmgKQEAgLTEzMSw3ICsxMzEsNyBAQCBw
dWJsaWM6CiAgICAgYm9vbCBhdEVuZCgpIGNvbnN0OwogCiBwcm90ZWN0ZWQ6Ci0gICAgQm94SXRl
cmF0b3IoKSA6IG1fYm94KEJveExlZ2FjeVBhdGggeyBudWxscHRyLCB7IH0gfSkgeyB9OworICAg
IEJveEl0ZXJhdG9yKCkgOiBtX2JveChCb3hMZWdhY3lQYXRoIHsgbnVsbHB0ciB9KSB7IH07CiAg
ICAgQm94SXRlcmF0b3IoQm94OjpQYXRoVmFyaWFudCYmKTsKICAgICBCb3hJdGVyYXRvcihjb25z
dCBCb3gmKTsKIApAQCAtMTQ4LDggKzE0OCw2IEBAIHB1YmxpYzoKICAgICBMZWFmQm94SXRlcmF0
b3ImIHRyYXZlcnNlUHJldmlvdXNPbkxpbmUoKTsKICAgICBMZWFmQm94SXRlcmF0b3ImIHRyYXZl
cnNlTmV4dE9uTGluZUlnbm9yaW5nTGluZUJyZWFrKCk7CiAgICAgTGVhZkJveEl0ZXJhdG9yJiB0
cmF2ZXJzZVByZXZpb3VzT25MaW5lSWdub3JpbmdMaW5lQnJlYWsoKTsKLSAgICBMZWFmQm94SXRl
cmF0b3ImIHRyYXZlcnNlTmV4dE9uTGluZUluTG9naWNhbE9yZGVyKCk7Ci0gICAgTGVhZkJveEl0
ZXJhdG9yJiB0cmF2ZXJzZVByZXZpb3VzT25MaW5lSW5Mb2dpY2FsT3JkZXIoKTsKIH07CiAKIExl
YWZCb3hJdGVyYXRvciBib3hGb3IoY29uc3QgUmVuZGVyTGluZUJyZWFrJik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vSW5saW5lSXRlcmF0b3JCb3hMZWdh
Y3lQYXRoLmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vSW5saW5lSXRlcmF0
b3JCb3hMZWdhY3lQYXRoLmgKaW5kZXggM2JlNGQzZGNhYzNiOTM5YWVkNjY4YTMzNTMxZmI2N2Rm
MjM5OTNmYi4uN2JhODA4NzRjYjRmOWVjMmU4ZTVmMzkwMDNiOGZjNWRmMGY3ZmU1MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0lubGluZUl0ZXJhdG9yQm94
TGVnYWN5UGF0aC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9Jbmxp
bmVJdGVyYXRvckJveExlZ2FjeVBhdGguaApAQCAtMzcsMjIgKzM3LDEwIEBAIG5hbWVzcGFjZSBJ
bmxpbmVJdGVyYXRvciB7CiAKIGNsYXNzIEJveExlZ2FjeVBhdGggewogcHVibGljOgotICAgIEJv
eExlZ2FjeVBhdGgoY29uc3QgTGVnYWN5SW5saW5lQm94KiBpbmxpbmVCb3gsIFZlY3Rvcjxjb25z
dCBMZWdhY3lJbmxpbmVCb3gqPiYmIHNvcnRlZElubGluZUJveGVzID0geyB9LCBzaXplX3Qgc29y
dGVkSW5saW5lQm94SW5kZXggPSAwKQorICAgIEJveExlZ2FjeVBhdGgoY29uc3QgTGVnYWN5SW5s
aW5lQm94KiBpbmxpbmVCb3gpCiAgICAgICAgIDogbV9pbmxpbmVCb3goaW5saW5lQm94KQotICAg
ICAgICAsIG1fbG9naWNhbE9yZGVyQ2FjaGUoV1RGTW92ZShzb3J0ZWRJbmxpbmVCb3hlcykpCi0g
ICAgICAgICwgbV9sb2dpY2FsT3JkZXJDYWNoZUluZGV4KHNvcnRlZElubGluZUJveEluZGV4KQog
ICAgIHsgfQogCi0gICAgZW51bSBjbGFzcyBMb2dpY2FsT3JkZXIgeyBTdGFydCwgRW5kIH07Ci0g
ICAgQm94TGVnYWN5UGF0aChjb25zdCBMZWdhY3lSb290SW5saW5lQm94JiByb290LCBMb2dpY2Fs
T3JkZXIgb3JkZXIpCi0gICAgICAgIDogbV9sb2dpY2FsT3JkZXJDYWNoZShpbmxpbmVCb3hlc0lu
TG9naWNhbE9yZGVyKHJvb3QpKQotICAgIHsKLSAgICAgICAgaWYgKCFtX2xvZ2ljYWxPcmRlckNh
Y2hlLmlzRW1wdHkoKSkgewotICAgICAgICAgICAgbV9sb2dpY2FsT3JkZXJDYWNoZUluZGV4ID0g
b3JkZXIgPT0gTG9naWNhbE9yZGVyOjpTdGFydCA/IDAgOiBtX2xvZ2ljYWxPcmRlckNhY2hlLnNp
emUoKSAtIDE7Ci0gICAgICAgICAgICBtX2lubGluZUJveCA9IG1fbG9naWNhbE9yZGVyQ2FjaGVb
bV9sb2dpY2FsT3JkZXJDYWNoZUluZGV4XTsKLSAgICAgICAgfQotICAgIH0KLQogICAgIGJvb2wg
aXNUZXh0KCkgY29uc3QgeyByZXR1cm4gbV9pbmxpbmVCb3gtPmlzSW5saW5lVGV4dEJveCgpOyB9
CiAgICAgYm9vbCBpc0lubGluZUJveCgpIGNvbnN0IHsgcmV0dXJuIG1faW5saW5lQm94LT5pc0lu
bGluZUZsb3dCb3goKTsgfQogICAgIGJvb2wgaXNSb290SW5saW5lQm94KCkgY29uc3QgeyByZXR1
cm4gbV9pbmxpbmVCb3gtPmlzUm9vdElubGluZUJveCgpOyB9CkBAIC04Nyw2ICs3NSw3IEBAIHB1
YmxpYzoKICAgICB9CiAKICAgICB2b2lkIHRyYXZlcnNlTmV4dFRleHRCb3goKSB7IG1faW5saW5l
Qm94ID0gaW5saW5lVGV4dEJveCgpLT5uZXh0VGV4dEJveCgpOyB9CisgICAgdm9pZCB0cmF2ZXJz
ZVByZXZpb3VzVGV4dEJveCgpIHsgbV9pbmxpbmVCb3ggPSBpbmxpbmVUZXh0Qm94KCktPnByZXZU
ZXh0Qm94KCk7IH0KIAogICAgIHZvaWQgdHJhdmVyc2VOZXh0T25MaW5lKCkKICAgICB7CkBAIC05
OCwxOCArODcsNiBAQCBwdWJsaWM6CiAgICAgICAgIG1faW5saW5lQm94ID0gbV9pbmxpbmVCb3gt
PnByZXZpb3VzTGVhZk9uTGluZSgpOwogICAgIH0KIAotICAgIHZvaWQgdHJhdmVyc2VOZXh0T25M
aW5lSW5Mb2dpY2FsT3JkZXIoKQotICAgIHsKLSAgICAgICAgaW5pdGlhbGl6ZUxvZ2ljYWxPcmRl
ckNhY2hlRm9yTGluZSgpOwotICAgICAgICB0cmF2ZXJzZU5leHRJbmxpbmVCb3hJbkNhY2hlT3Jk
ZXIoKTsKLSAgICB9Ci0KLSAgICB2b2lkIHRyYXZlcnNlUHJldmlvdXNPbkxpbmVJbkxvZ2ljYWxP
cmRlcigpCi0gICAgewotICAgICAgICBpbml0aWFsaXplTG9naWNhbE9yZGVyQ2FjaGVGb3JMaW5l
KCk7Ci0gICAgICAgIHRyYXZlcnNlUHJldmlvdXNJbmxpbmVCb3hJbkNhY2hlT3JkZXIoKTsKLSAg
ICB9Ci0KICAgICB2b2lkIHRyYXZlcnNlTmV4dElubGluZUJveCgpCiAgICAgewogICAgICAgICBt
X2lubGluZUJveCA9IGlubGluZUZsb3dCb3goKS0+bmV4dExpbmVCb3goKTsKQEAgLTEzMSw0OSAr
MTA4LDggQEAgcHJpdmF0ZToKICAgICBjb25zdCBMZWdhY3lJbmxpbmVUZXh0Qm94KiBpbmxpbmVU
ZXh0Qm94KCkgY29uc3QgeyByZXR1cm4gZG93bmNhc3Q8TGVnYWN5SW5saW5lVGV4dEJveD4obV9p
bmxpbmVCb3gpOyB9CiAgICAgY29uc3QgTGVnYWN5SW5saW5lRmxvd0JveCogaW5saW5lRmxvd0Jv
eCgpIGNvbnN0IHsgcmV0dXJuIGRvd25jYXN0PExlZ2FjeUlubGluZUZsb3dCb3g+KG1faW5saW5l
Qm94KTsgfQogCi0gICAgc3RhdGljIFZlY3Rvcjxjb25zdCBMZWdhY3lJbmxpbmVCb3gqPiBpbmxp
bmVCb3hlc0luTG9naWNhbE9yZGVyKGNvbnN0IExlZ2FjeVJvb3RJbmxpbmVCb3gmIHJvb3QpCi0g
ICAgewotICAgICAgICBWZWN0b3I8TGVnYWN5SW5saW5lQm94Kj4gaW5saW5lQm94ZXM7Ci0gICAg
ICAgIHJvb3QuY29sbGVjdExlYWZCb3hlc0luTG9naWNhbE9yZGVyKGlubGluZUJveGVzKTsKLSAg
ICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8VmVjdG9yPGNvbnN0IExlZ2FjeUlubGluZUJv
eCo+Jj4oaW5saW5lQm94ZXMpOwotICAgIH0KLSAgICB2b2lkIGluaXRpYWxpemVMb2dpY2FsT3Jk
ZXJDYWNoZUZvckxpbmUoKQotICAgIHsKLSAgICAgICAgaWYgKCFtX2lubGluZUJveCB8fCAhbV9s
b2dpY2FsT3JkZXJDYWNoZS5pc0VtcHR5KCkpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAg
IG1fbG9naWNhbE9yZGVyQ2FjaGUgPSBpbmxpbmVCb3hlc0luTG9naWNhbE9yZGVyKG1faW5saW5l
Qm94LT5yb290KCkpOwotICAgICAgICBmb3IgKG1fbG9naWNhbE9yZGVyQ2FjaGVJbmRleCA9IDA7
IG1fbG9naWNhbE9yZGVyQ2FjaGVJbmRleCA8IG1fbG9naWNhbE9yZGVyQ2FjaGUuc2l6ZSgpOyAr
K21fbG9naWNhbE9yZGVyQ2FjaGVJbmRleCkgewotICAgICAgICAgICAgaWYgKG1fbG9naWNhbE9y
ZGVyQ2FjaGVbbV9sb2dpY2FsT3JkZXJDYWNoZUluZGV4XSA9PSBtX2lubGluZUJveCkKLSAgICAg
ICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7Ci0gICAgfQotCi0gICAgdm9pZCB0cmF2ZXJzZU5leHRJbmxpbmVCb3hJbkNhY2hlT3JkZXIo
KTsKLSAgICB2b2lkIHRyYXZlcnNlUHJldmlvdXNJbmxpbmVCb3hJbkNhY2hlT3JkZXIoKTsKLQog
ICAgIGNvbnN0IExlZ2FjeUlubGluZUJveCogbV9pbmxpbmVCb3ggeyBudWxscHRyIH07Ci0gICAg
UmVmQ291bnRlZEFycmF5PGNvbnN0IExlZ2FjeUlubGluZUJveCo+IG1fbG9naWNhbE9yZGVyQ2Fj
aGU7Ci0gICAgc2l6ZV90IG1fbG9naWNhbE9yZGVyQ2FjaGVJbmRleCB7IDAgfTsKIH07CiAKLQot
aW5saW5lIHZvaWQgQm94TGVnYWN5UGF0aDo6dHJhdmVyc2VOZXh0SW5saW5lQm94SW5DYWNoZU9y
ZGVyKCkKLXsKLSAgICBBU1NFUlQoIW1fbG9naWNhbE9yZGVyQ2FjaGUuaXNFbXB0eSgpKTsKLSAg
ICArK21fbG9naWNhbE9yZGVyQ2FjaGVJbmRleDsKLSAgICBtX2lubGluZUJveCA9IG1fbG9naWNh
bE9yZGVyQ2FjaGVJbmRleCA8IG1fbG9naWNhbE9yZGVyQ2FjaGUuc2l6ZSgpID8gbV9sb2dpY2Fs
T3JkZXJDYWNoZVttX2xvZ2ljYWxPcmRlckNhY2hlSW5kZXhdIDogbnVsbHB0cjsKLX0KLQotaW5s
aW5lIHZvaWQgQm94TGVnYWN5UGF0aDo6dHJhdmVyc2VQcmV2aW91c0lubGluZUJveEluQ2FjaGVP
cmRlcigpCi17Ci0gICAgQVNTRVJUKCFtX2xvZ2ljYWxPcmRlckNhY2hlLmlzRW1wdHkoKSk7Ci0g
ICAgaWYgKCFtX2xvZ2ljYWxPcmRlckNhY2hlSW5kZXgpIHsKLSAgICAgICAgbV9pbmxpbmVCb3gg
PSBudWxscHRyOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIG1faW5saW5lQm94ID0gbV9s
b2dpY2FsT3JkZXJDYWNoZVstLW1fbG9naWNhbE9yZGVyQ2FjaGVJbmRleF07Ci19Ci0KIH0KIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9JbmxpbmVJdGVy
YXRvckJveE1vZGVyblBhdGguaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9J
bmxpbmVJdGVyYXRvckJveE1vZGVyblBhdGguaAppbmRleCA2MTU0M2IwY2Y0YzQ4YjBhYmQ5ZDJj
NDI1ZTk0ZTE3YWRmZjQ2MDUyLi40MjFmN2NiMTcwOTViYTcwN2FjNTA3MGZhMDljYzkyNzcwMTJh
YjNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vSW5saW5l
SXRlcmF0b3JCb3hNb2Rlcm5QYXRoLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVn
cmF0aW9uL0lubGluZUl0ZXJhdG9yQm94TW9kZXJuUGF0aC5oCkBAIC0xMzYsNiArMTM2LDIxIEBA
IHB1YmxpYzoKICAgICAgICAgQVNTRVJUKGF0RW5kKCkgfHwgYm94KCkudGV4dCgpKTsKICAgICB9
CiAKKyAgICB2b2lkIHRyYXZlcnNlUHJldmlvdXNUZXh0Qm94KCkKKyAgICB7CisgICAgICAgIEFT
U0VSVCghYXRFbmQoKSk7CisgICAgICAgIEFTU0VSVChib3goKS50ZXh0KCkpOworCisgICAgICAg
IGF1dG8mIGxheW91dEJveCA9IGJveCgpLmxheW91dEJveCgpOworCisgICAgICAgIHRyYXZlcnNl
UHJldmlvdXNMZWFmKCk7CisKKyAgICAgICAgaWYgKCFhdEVuZCgpICYmICZsYXlvdXRCb3ggIT0g
JmJveCgpLmxheW91dEJveCgpKQorICAgICAgICAgICAgc2V0QXRFbmQoKTsKKworICAgICAgICBB
U1NFUlQoYXRFbmQoKSB8fCBib3goKS50ZXh0KCkpOworICAgIH0KKwogICAgIHZvaWQgdHJhdmVy
c2VOZXh0T25MaW5lKCkKICAgICB7CiAgICAgICAgIEFTU0VSVCghYXRFbmQoKSk7CkBAIC0xNjAs
MTYgKzE3NSw2IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHNldEF0RW5kKCk7CiAgICAgfQogCi0g
ICAgdm9pZCB0cmF2ZXJzZU5leHRPbkxpbmVJbkxvZ2ljYWxPcmRlcigpCi0gICAgewotICAgICAg
ICB0cmF2ZXJzZU5leHRPbkxpbmUoKTsKLSAgICB9Ci0KLSAgICB2b2lkIHRyYXZlcnNlUHJldmlv
dXNPbkxpbmVJbkxvZ2ljYWxPcmRlcigpCi0gICAgewotICAgICAgICB0cmF2ZXJzZVByZXZpb3Vz
T25MaW5lKCk7Ci0gICAgfQotCiAgICAgdm9pZCB0cmF2ZXJzZU5leHRJbmxpbmVCb3goKQogICAg
IHsKICAgICAgICAgQVNTRVJUKGJveCgpLmlzSW5saW5lQm94KCkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0lubGluZUl0ZXJhdG9yTGluZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vSW5saW5lSXRlcmF0b3JMaW5lLmNwcApp
bmRleCBmNGViNmE2OGZkM2RiYjgxNTczMjAzZjliNjA3ZjRkMWY0NThhYzU2Li44ZmM2NDU0ZjM2
MTIwYmNlZmJmMTM4NTkzMzhmNmE5YjM0YTZhN2IwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvaW50ZWdyYXRpb24vSW5saW5lSXRlcmF0b3JMaW5lLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vSW5saW5lSXRlcmF0b3JMaW5lLmNwcApAQCAtMTE1
LDM4ICsxMTUsNiBAQCBMZWFmQm94SXRlcmF0b3IgTGluZTo6bGFzdFJ1bigpIGNvbnN0CiAgICAg
fSk7CiB9CiAKLUxlYWZCb3hJdGVyYXRvciBMaW5lOjpsb2dpY2FsU3RhcnRSdW4oKSBjb25zdAot
ewotICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKG1fcGF0aFZhcmlhbnQsIFtdKGF1dG8mIHBhdGgp
IC0+IExlYWZCb3hJdGVyYXRvciB7Ci0gICAgICAgIHJldHVybiB7IHBhdGgubG9naWNhbFN0YXJ0
UnVuKCkgfTsKLSAgICB9KTsKLX0KLQotTGVhZkJveEl0ZXJhdG9yIExpbmU6OmxvZ2ljYWxFbmRS
dW4oKSBjb25zdAotewotICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKG1fcGF0aFZhcmlhbnQsIFtd
KGF1dG8mIHBhdGgpIC0+IExlYWZCb3hJdGVyYXRvciB7Ci0gICAgICAgIHJldHVybiB7IHBhdGgu
bG9naWNhbEVuZFJ1bigpIH07Ci0gICAgfSk7Ci19Ci0KLUxlYWZCb3hJdGVyYXRvciBMaW5lOjps
b2dpY2FsU3RhcnRSdW5XaXRoTm9kZSgpIGNvbnN0Ci17Ci0gICAgZm9yIChhdXRvIHJ1biA9IGxv
Z2ljYWxTdGFydFJ1bigpOyBydW47IHJ1bi50cmF2ZXJzZU5leHRPbkxpbmVJbkxvZ2ljYWxPcmRl
cigpKSB7Ci0gICAgICAgIGlmIChydW4tPnJlbmRlcmVyKCkubm9kZSgpKQotICAgICAgICAgICAg
cmV0dXJuIHJ1bjsKLSAgICB9Ci0gICAgcmV0dXJuIHsgfTsKLX0KLQotTGVhZkJveEl0ZXJhdG9y
IExpbmU6OmxvZ2ljYWxFbmRSdW5XaXRoTm9kZSgpIGNvbnN0Ci17Ci0gICAgZm9yIChhdXRvIHJ1
biA9IGxvZ2ljYWxFbmRSdW4oKTsgcnVuOyBydW4udHJhdmVyc2VQcmV2aW91c09uTGluZUluTG9n
aWNhbE9yZGVyKCkpIHsKLSAgICAgICAgaWYgKHJ1bi0+cmVuZGVyZXIoKS5ub2RlKCkpCi0gICAg
ICAgICAgICByZXR1cm4gcnVuOwotICAgIH0KLSAgICByZXR1cm4geyB9OwotfQotCiBMZWFmQm94
SXRlcmF0b3IgTGluZTo6Y2xvc2VzdFJ1bkZvclBvaW50KGNvbnN0IEludFBvaW50JiBwb2ludElu
Q29udGVudHMsIGJvb2wgZWRpdGFibGVPbmx5KSBjb25zdAogewogICAgIHJldHVybiBjbG9zZXN0
UnVuRm9yTG9naWNhbExlZnRQb3NpdGlvbihpc0hvcml6b250YWwoKSA/IHBvaW50SW5Db250ZW50
cy54KCkgOiBwb2ludEluQ29udGVudHMueSgpLCBlZGl0YWJsZU9ubHkpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0lubGluZUl0ZXJhdG9yTGluZS5oIGIv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0lubGluZUl0ZXJhdG9yTGluZS5oCmlu
ZGV4IDJkMzI4OTNlNzVkN2I3YmIxNmY3ZDRkYWFhNDQ5ZTBmNTk5ZjEwNDAuLjY3ZDYzNWEzNmIw
ZWQyYWMyYzlmOWEwNWFkOTY1MTU2ODg1MDYxMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9pbnRlZ3JhdGlvbi9JbmxpbmVJdGVyYXRvckxpbmUuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvaW50ZWdyYXRpb24vSW5saW5lSXRlcmF0b3JMaW5lLmgKQEAgLTg5LDExICs4
OSw2IEBAIHB1YmxpYzoKIAogICAgIExlYWZCb3hJdGVyYXRvciBjbG9zZXN0UnVuRm9yUG9pbnQo
Y29uc3QgSW50UG9pbnQmIHBvaW50SW5Db250ZW50cywgYm9vbCBlZGl0YWJsZU9ubHkpIGNvbnN0
OwogICAgIExlYWZCb3hJdGVyYXRvciBjbG9zZXN0UnVuRm9yTG9naWNhbExlZnRQb3NpdGlvbihp
bnQgcG9zaXRpb24sIGJvb2wgZWRpdGFibGVPbmx5ID0gZmFsc2UpIGNvbnN0OwotCi0gICAgTGVh
ZkJveEl0ZXJhdG9yIGxvZ2ljYWxTdGFydFJ1bigpIGNvbnN0OwotICAgIExlYWZCb3hJdGVyYXRv
ciBsb2dpY2FsRW5kUnVuKCkgY29uc3Q7Ci0gICAgTGVhZkJveEl0ZXJhdG9yIGxvZ2ljYWxTdGFy
dFJ1bldpdGhOb2RlKCkgY29uc3Q7Ci0gICAgTGVhZkJveEl0ZXJhdG9yIGxvZ2ljYWxFbmRSdW5X
aXRoTm9kZSgpIGNvbnN0OwogICAgIAogICAgIExlYWZCb3hJdGVyYXRvciBmaXJzdFNlbGVjdGVk
Qm94KCkgY29uc3Q7CiAgICAgTGVhZkJveEl0ZXJhdG9yIGxhc3RTZWxlY3RlZEJveCgpIGNvbnN0
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0lubGluZUl0
ZXJhdG9yTGluZUxlZ2FjeVBhdGguaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlv
bi9JbmxpbmVJdGVyYXRvckxpbmVMZWdhY3lQYXRoLmgKaW5kZXggZmFjM2EyMmU3NDk0ZDRlNDMx
MjE4ZmNlODllNzliNDMyNGE5M2QwOS4uYjc0YzZkOWEwMDFlMjU0MjI1ZmY3ZmNhYWRiYWZlMzQ2
ZGMwNzAxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0lu
bGluZUl0ZXJhdG9yTGluZUxlZ2FjeVBhdGguaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
aW50ZWdyYXRpb24vSW5saW5lSXRlcmF0b3JMaW5lTGVnYWN5UGF0aC5oCkBAIC04NSwxNyArODUs
NiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiB7IG1fcm9vdElubGluZUJveC0+bGFzdExlYWZE
ZXNjZW5kYW50KCkgfTsKICAgICB9CiAKLQotICAgIEJveExlZ2FjeVBhdGggbG9naWNhbFN0YXJ0
UnVuKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiB7ICptX3Jvb3RJbmxpbmVCb3gsIEJv
eExlZ2FjeVBhdGg6OkxvZ2ljYWxPcmRlcjo6U3RhcnQgfTsKLSAgICB9Ci0KLSAgICBCb3hMZWdh
Y3lQYXRoIGxvZ2ljYWxFbmRSdW4oKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIHsgKm1f
cm9vdElubGluZUJveCwgQm94TGVnYWN5UGF0aDo6TG9naWNhbE9yZGVyOjpFbmQgfTsKLSAgICB9
Ci0KIHByaXZhdGU6CiAgICAgY29uc3QgTGVnYWN5Um9vdElubGluZUJveCogbV9yb290SW5saW5l
Qm94OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9J
bmxpbmVJdGVyYXRvckxpbmVNb2Rlcm5QYXRoLmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50
ZWdyYXRpb24vSW5saW5lSXRlcmF0b3JMaW5lTW9kZXJuUGF0aC5oCmluZGV4IGNhZjgyNmY4NTFl
NDdmZmU3ZDVhMGRhYzU5NWZlOWRmMzNjNDVkZTMuLmI5MWNmY2Y2NDUwZDM5OTVjNWI0NGVlNmY1
MDA0ZDA5YTI3ODNkODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3Jh
dGlvbi9JbmxpbmVJdGVyYXRvckxpbmVNb2Rlcm5QYXRoLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2ludGVncmF0aW9uL0lubGluZUl0ZXJhdG9yTGluZU1vZGVyblBhdGguaApAQCAtMTE2
LDE2ICsxMTYsNiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBydW5JdGVyYXRvcjsKICAgICB9
CiAKLSAgICBCb3hNb2Rlcm5QYXRoIGxvZ2ljYWxTdGFydFJ1bigpIGNvbnN0Ci0gICAgewotICAg
ICAgICByZXR1cm4gZmlyc3RSdW4oKTsKLSAgICB9Ci0KLSAgICBCb3hNb2Rlcm5QYXRoIGxvZ2lj
YWxFbmRSdW4oKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIGxhc3RSdW4oKTsKLSAgICB9
Ci0KIHByaXZhdGU6CiAgICAgdm9pZCBzZXRBdEVuZCgpIHsgbV9saW5lSW5kZXggPSBsaW5lcygp
LnNpemUoKTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRp
b24vSW5saW5lSXRlcmF0b3JMb2dpY2FsT3JkZXJUcmF2ZXJzYWwuY3BwIGIvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2ludGVncmF0aW9uL0lubGluZUl0ZXJhdG9yTG9naWNhbE9yZGVyVHJhdmVyc2Fs
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5jNjYzYmMzNmQ5YmMzNzMxYjcwZjY4ZDBmMDk1ZjAxZjUzYjA4ODJk
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0lu
bGluZUl0ZXJhdG9yTG9naWNhbE9yZGVyVHJhdmVyc2FsLmNwcApAQCAtMCwwICsxLDI0NCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJJbmxpbmVJdGVyYXRv
ckxvZ2ljYWxPcmRlclRyYXZlcnNhbC5oIgorCisjaW5jbHVkZSAiSW5saW5lSXRlcmF0b3JMaW5l
LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK25hbWVzcGFjZSBJbmxpbmVJdGVyYXRvciB7CisK
K3N0YXRpYyBUZXh0TG9naWNhbE9yZGVyQ2FjaGUgbWFrZVRleHRMb2dpY2FsT3JkZXJDYWNoZUlm
TmVlZGVkKGNvbnN0IFJlbmRlclRleHQmIHRleHQpCit7CisgICAgaWYgKCF0ZXh0LmNvbnRhaW5z
UmV2ZXJzZWRUZXh0KCkpCisgICAgICAgIHJldHVybiB7IH07CisKKyAgICBhdXRvIGNhY2hlID0g
V1RGOjptYWtlVW5pcXVlPFRleHRMb2dpY2FsT3JkZXJDYWNoZURhdGE+KCk7CisgICAgZm9yIChh
dXRvIHRleHRCb3ggOiB0ZXh0Qm94ZXNGb3IodGV4dCkpCisgICAgICAgIGNhY2hlLT5ib3hlcy5h
cHBlbmQodGV4dEJveCk7CisKKyAgICBpZiAoY2FjaGUtPmJveGVzLmlzRW1wdHkoKSkKKyAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBzdGQ6OnNvcnQoY2FjaGUtPmJveGVzLmJlZ2luKCks
IGNhY2hlLT5ib3hlcy5lbmQoKSwgWyZdKGF1dG8mIGEsIGF1dG8mIGIpIHsKKyAgICAgICAgcmV0
dXJuIGEtPnN0YXJ0KCkgPCBiLT5zdGFydCgpOworICAgIH0pOworCisgICAgcmV0dXJuIGNhY2hl
OworfQorCitzdGF0aWMgdm9pZCB1cGRhdGVUZXh0TG9naWNhbE9yZGVyQ2FjaGVJZk5lZWRlZChj
b25zdCBUZXh0Qm94SXRlcmF0b3ImIHRleHRCb3gsIFRleHRMb2dpY2FsT3JkZXJDYWNoZSYgY2Fj
aGUpCit7CisgICAgaWYgKCFjYWNoZSAmJiAhKGNhY2hlID0gbWFrZVRleHRMb2dpY2FsT3JkZXJD
YWNoZUlmTmVlZGVkKHRleHRCb3gtPnJlbmRlcmVyKCkpKSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgaWYgKGNhY2hlLT5pbmRleCA8IGNhY2hlLT5ib3hlcy5zaXplKCkgJiYgY2FjaGUtPmJveGVz
W2NhY2hlLT5pbmRleF0gPT0gdGV4dEJveCkKKyAgICAgICAgcmV0dXJuOworCisgICAgY2FjaGUt
PmluZGV4ID0gY2FjaGUtPmJveGVzLmZpbmQodGV4dEJveCk7CisKKyAgICBpZiAoY2FjaGUtPmlu
ZGV4ID09IG5vdEZvdW5kKSB7CisgICAgICAgIGNhY2hlID0geyB9OworICAgICAgICBtYWtlVGV4
dExvZ2ljYWxPcmRlckNhY2hlSWZOZWVkZWQodGV4dEJveC0+cmVuZGVyZXIoKSk7CisgICAgfQor
fQorCitzdGQ6OnBhaXI8VGV4dEJveEl0ZXJhdG9yLCBUZXh0TG9naWNhbE9yZGVyQ2FjaGU+IGZp
cnN0VGV4dEJveEluTG9naWNhbE9yZGVyRm9yKGNvbnN0IFJlbmRlclRleHQmIHRleHQpCit7Cisg
ICAgaWYgKGF1dG8gY2FjaGUgPSBtYWtlVGV4dExvZ2ljYWxPcmRlckNhY2hlSWZOZWVkZWQodGV4
dCkpCisgICAgICAgIHJldHVybiB7IGNhY2hlLT5ib3hlcy5maXJzdCgpLCBXVEZNb3ZlKGNhY2hl
KSB9OworCisgICAgcmV0dXJuIHsgZmlyc3RUZXh0Qm94Rm9yKHRleHQpLCBudWxscHRyIH07Cit9
CisKK3N0ZDo6cGFpcjxUZXh0Qm94SXRlcmF0b3IsIFRleHRMb2dpY2FsT3JkZXJDYWNoZT4gbGFz
dFRleHRCb3hJbkxvZ2ljYWxPcmRlckZvcihjb25zdCBSZW5kZXJUZXh0JiB0ZXh0KQoreworICAg
IGlmIChhdXRvIGNhY2hlID0gbWFrZVRleHRMb2dpY2FsT3JkZXJDYWNoZUlmTmVlZGVkKHRleHQp
KQorICAgICAgICByZXR1cm4geyBjYWNoZS0+Ym94ZXMubGFzdCgpLCBXVEZNb3ZlKGNhY2hlKSB9
OworCisgICAgcmV0dXJuIHsgbGFzdFRleHRCb3hGb3IodGV4dCksIG51bGxwdHIgfTsKK30KKwor
VGV4dEJveEl0ZXJhdG9yIG5leHRUZXh0Qm94SW5Mb2dpY2FsT3JkZXIoY29uc3QgVGV4dEJveEl0
ZXJhdG9yJiB0ZXh0Qm94LCBUZXh0TG9naWNhbE9yZGVyQ2FjaGUmIGNhY2hlKQoreworICAgIHVw
ZGF0ZVRleHRMb2dpY2FsT3JkZXJDYWNoZUlmTmVlZGVkKHRleHRCb3gsIGNhY2hlKTsKKworICAg
IGlmICghY2FjaGUpCisgICAgICAgIHJldHVybiB0ZXh0Qm94LT5uZXh0VGV4dEJveCgpOworCisg
ICAgY2FjaGUtPmluZGV4Kys7CisKKyAgICBpZiAoY2FjaGUtPmluZGV4IDwgY2FjaGUtPmJveGVz
LnNpemUoKSkKKyAgICAgICAgcmV0dXJuIGNhY2hlLT5ib3hlc1tjYWNoZS0+aW5kZXhdOworCisg
ICAgcmV0dXJuIHsgfTsKK30KKworVGV4dEJveEl0ZXJhdG9yIHByZXZpb3VzVGV4dEJveEluTG9n
aWNhbE9yZGVyKGNvbnN0IFRleHRCb3hJdGVyYXRvciYgdGV4dEJveCwgVGV4dExvZ2ljYWxPcmRl
ckNhY2hlJiBjYWNoZSkKK3sKKyAgICB1cGRhdGVUZXh0TG9naWNhbE9yZGVyQ2FjaGVJZk5lZWRl
ZCh0ZXh0Qm94LCBjYWNoZSk7CisKKyAgICBpZiAoIWNhY2hlKQorICAgICAgICByZXR1cm4gdGV4
dEJveC0+cHJldmlvdXNUZXh0Qm94KCk7CisKKyAgICBpZiAoIWNhY2hlLT5pbmRleCkKKyAgICAg
ICAgcmV0dXJuIHsgfTsKKworICAgIGNhY2hlLT5pbmRleC0tOworCisgICAgcmV0dXJuIGNhY2hl
LT5ib3hlc1tjYWNoZS0+aW5kZXhdOworfQorCitzdGF0aWMgTGluZUxvZ2ljYWxPcmRlckNhY2hl
IG1ha2VMaW5lTG9naWNhbE9yZGVyQ2FjaGVJZk5lZWRlZChjb25zdCBMaW5lSXRlcmF0b3ImIGxp
bmUpCit7CisgICAgaWYgKGxpbmUtPmNvbnRhaW5pbmdCbG9jaygpLnN0eWxlKCkucnRsT3JkZXJp
bmcoKSA9PSBPcmRlcjo6VmlzdWFsKQorICAgICAgICByZXR1cm4geyB9OworCisgICAgdW5zaWdu
ZWQgY2hhciBtaW5MZXZlbCA9IDEyODsKKyAgICB1bnNpZ25lZCBjaGFyIG1heExldmVsID0gMDsK
KworICAgIGZvciAoYXV0byBib3ggPSBsaW5lLT5maXJzdFJ1bigpOyBib3g7IGJveCA9IGJveC50
cmF2ZXJzZU5leHRPbkxpbmUoKSkgeworICAgICAgICBtaW5MZXZlbCA9IHN0ZDo6bWluKG1pbkxl
dmVsLCBib3gtPmJpZGlMZXZlbCgpKTsKKyAgICAgICAgbWF4TGV2ZWwgPSBzdGQ6Om1heChtYXhM
ZXZlbCwgYm94LT5iaWRpTGV2ZWwoKSk7CisgICAgfQorCisgICAgaWYgKCFtYXhMZXZlbCkKKyAg
ICAgICAgcmV0dXJuIHsgfTsKKworICAgIGF1dG8gY2FjaGUgPSBXVEY6Om1ha2VVbmlxdWU8TGlu
ZUxvZ2ljYWxPcmRlckNhY2hlRGF0YT4oKTsKKworICAgIGF1dG8mIGJveGVzID0gY2FjaGUtPmJv
eGVzOworICAgIGZvciAoYXV0byBib3ggPSBsaW5lLT5maXJzdFJ1bigpOyBib3g7IGJveCA9IGJv
eC50cmF2ZXJzZU5leHRPbkxpbmUoKSkKKyAgICAgICAgYm94ZXMuYXBwZW5kKGJveCk7CisKKyAg
ICAvLyBSZXZlcnNlIG9mIHJlb3JkZXJpbmcgb2YgdGhlIGxpbmUgKEwyIGFjY29yZGluZyB0byBC
aWRpIHNwZWMpOgorICAgIC8vIEwyLiBGcm9tIHRoZSBoaWdoZXN0IGxldmVsIGZvdW5kIGluIHRo
ZSB0ZXh0IHRvIHRoZSBsb3dlc3Qgb2RkIGxldmVsIG9uIGVhY2ggbGluZSwKKyAgICAvLyByZXZl
cnNlIGFueSBjb250aWd1b3VzIHNlcXVlbmNlIG9mIGNoYXJhY3RlcnMgdGhhdCBhcmUgYXQgdGhh
dCBsZXZlbCBvciBoaWdoZXIuCisKKyAgICAvLyBSZXZlcnNpbmcgdGhlIHJlb3JkZXJpbmcgb2Yg
dGhlIGxpbmUgaXMgb25seSBkb25lIHVwIHRvIHRoZSBsb3dlc3Qgb2RkIGxldmVsLgorICAgIGlm
ICghKG1pbkxldmVsICUgMikpCisgICAgICAgICsrbWluTGV2ZWw7CisKKyAgICBhdXRvIGVuZCA9
IGJveGVzLmVuZCgpOworICAgIGZvciAoOyBtaW5MZXZlbCA8PSBtYXhMZXZlbDsgKyttaW5MZXZl
bCkgeworICAgICAgICBhdXRvIGJveCA9IGJveGVzLmJlZ2luKCk7CisgICAgICAgIHdoaWxlIChi
b3ggPCBlbmQpIHsKKyAgICAgICAgICAgIHdoaWxlIChib3ggPCBlbmQgJiYgKCpib3gpLT5iaWRp
TGV2ZWwoKSA8IG1pbkxldmVsKQorICAgICAgICAgICAgICAgICsrYm94OworCisgICAgICAgICAg
ICBhdXRvIGZpcnN0ID0gYm94OworICAgICAgICAgICAgd2hpbGUgKGJveCA8IGVuZCAmJiAoKmJv
eCktPmJpZGlMZXZlbCgpID49IG1pbkxldmVsKQorICAgICAgICAgICAgICAgICsrYm94OworCisg
ICAgICAgICAgICBhdXRvIGxhc3QgPSBib3g7CisgICAgICAgICAgICBzdGQ6OnJldmVyc2UoZmly
c3QsIGxhc3QpOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIGNhY2hlOworfQorCitz
dGF0aWMgdm9pZCB1cGRhdGVMaW5lTG9naWNhbE9yZGVyQ2FjaGVJZk5lZWRlZChjb25zdCBMZWFm
Qm94SXRlcmF0b3ImIGJveCwgTGluZUxvZ2ljYWxPcmRlckNhY2hlJiBjYWNoZSkKK3sKKyAgICBh
dXRvIGxpbmUgPSBib3gtPmxpbmUoKTsKKyAgICBpZiAoIWNhY2hlICYmICEoY2FjaGUgPSBtYWtl
TGluZUxvZ2ljYWxPcmRlckNhY2hlSWZOZWVkZWQobGluZSkpKQorICAgICAgICByZXR1cm47CisK
KyAgICBpZiAoY2FjaGUtPmluZGV4IDwgY2FjaGUtPmJveGVzLnNpemUoKSAmJiBjYWNoZS0+Ym94
ZXNbY2FjaGUtPmluZGV4XSA9PSBib3gpCisgICAgICAgIHJldHVybjsKKworICAgIGNhY2hlLT5p
bmRleCA9IGNhY2hlLT5ib3hlcy5maW5kKGJveCk7CisKKyAgICBpZiAoY2FjaGUtPmluZGV4ID09
IG5vdEZvdW5kKSB7CisgICAgICAgIGNhY2hlID0geyB9OworICAgICAgICB1cGRhdGVMaW5lTG9n
aWNhbE9yZGVyQ2FjaGVJZk5lZWRlZChib3gsIGNhY2hlKTsKKyAgICB9Cit9CisKK0xlYWZCb3hJ
dGVyYXRvciBmaXJzdExlYWZPbkxpbmVJbkxvZ2ljYWxPcmRlcihjb25zdCBMaW5lSXRlcmF0b3Im
IGxpbmUsIExpbmVMb2dpY2FsT3JkZXJDYWNoZSYgY2FjaGUpCit7CisgICAgaWYgKChjYWNoZSA9
IG1ha2VMaW5lTG9naWNhbE9yZGVyQ2FjaGVJZk5lZWRlZChsaW5lKSkpCisgICAgICAgIHJldHVy
biBjYWNoZS0+Ym94ZXMuZmlyc3QoKTsKKworICAgIHJldHVybiBsaW5lLT5maXJzdFJ1bigpOwor
fQorCitMZWFmQm94SXRlcmF0b3IgbGFzdExlYWZPbkxpbmVJbkxvZ2ljYWxPcmRlcihjb25zdCBM
aW5lSXRlcmF0b3ImIGxpbmUsIExpbmVMb2dpY2FsT3JkZXJDYWNoZSYgY2FjaGUpCit7CisgICAg
aWYgKChjYWNoZSA9IG1ha2VMaW5lTG9naWNhbE9yZGVyQ2FjaGVJZk5lZWRlZChsaW5lKSkpCisg
ICAgICAgIHJldHVybiBjYWNoZS0+Ym94ZXMubGFzdCgpOworCisgICAgcmV0dXJuIGxpbmUtPmxh
c3RSdW4oKTsKK30KKworTGVhZkJveEl0ZXJhdG9yIG5leHRMZWFmT25MaW5lSW5Mb2dpY2FsT3Jk
ZXIoY29uc3QgTGVhZkJveEl0ZXJhdG9yJiBib3gsIExpbmVMb2dpY2FsT3JkZXJDYWNoZSYgY2Fj
aGUpCit7CisgICAgdXBkYXRlTGluZUxvZ2ljYWxPcmRlckNhY2hlSWZOZWVkZWQoYm94LCBjYWNo
ZSk7CisKKyAgICBpZiAoIWNhY2hlKQorICAgICAgICByZXR1cm4gYm94LT5uZXh0T25MaW5lKCk7
CisKKyAgICBjYWNoZS0+aW5kZXgrKzsKKworICAgIGlmIChjYWNoZS0+aW5kZXggPCBjYWNoZS0+
Ym94ZXMuc2l6ZSgpKQorICAgICAgICByZXR1cm4gY2FjaGUtPmJveGVzW2NhY2hlLT5pbmRleF07
CisKKyAgICByZXR1cm4geyB9OworfQorCitMZWFmQm94SXRlcmF0b3IgcHJldmlvdXNMZWFmT25M
aW5lSW5Mb2dpY2FsT3JkZXIoY29uc3QgTGVhZkJveEl0ZXJhdG9yJiBib3gsIExpbmVMb2dpY2Fs
T3JkZXJDYWNoZSYgY2FjaGUpCit7CisgICAgdXBkYXRlTGluZUxvZ2ljYWxPcmRlckNhY2hlSWZO
ZWVkZWQoYm94LCBjYWNoZSk7CisKKyAgICBpZiAoIWNhY2hlKQorICAgICAgICByZXR1cm4gYm94
LT5wcmV2aW91c09uTGluZSgpOworCisgICAgaWYgKCFjYWNoZS0+aW5kZXgpCisgICAgICAgIHJl
dHVybiB7IH07CisKKyAgICBjYWNoZS0+aW5kZXgtLTsKKworICAgIHJldHVybiBjYWNoZS0+Ym94
ZXNbY2FjaGUtPmluZGV4XTsKK30KKworTGVhZkJveEl0ZXJhdG9yIGZpcnN0TGVhZk9uTGluZUlu
TG9naWNhbE9yZGVyV2l0aE5vZGUoY29uc3QgTGluZUl0ZXJhdG9yJiBsaW5lLCBMaW5lTG9naWNh
bE9yZGVyQ2FjaGUmIGNhY2hlKQoreworICAgIGF1dG8gYm94ID0gZmlyc3RMZWFmT25MaW5lSW5M
b2dpY2FsT3JkZXIobGluZSwgY2FjaGUpOworICAgIHdoaWxlICghYm94LT5yZW5kZXJlcigpLm5v
ZGUoKSkKKyAgICAgICAgYm94ID0gbmV4dExlYWZPbkxpbmVJbkxvZ2ljYWxPcmRlcihib3gsIGNh
Y2hlKTsKKyAgICByZXR1cm4gYm94OworfQorCitMZWFmQm94SXRlcmF0b3IgbGFzdExlYWZPbkxp
bmVJbkxvZ2ljYWxPcmRlcldpdGhOb2RlKGNvbnN0IExpbmVJdGVyYXRvciYgbGluZSwgTGluZUxv
Z2ljYWxPcmRlckNhY2hlJiBjYWNoZSkKK3sKKyAgICBhdXRvIGJveCA9IGxhc3RMZWFmT25MaW5l
SW5Mb2dpY2FsT3JkZXIobGluZSwgY2FjaGUpOworICAgIHdoaWxlICghYm94LT5yZW5kZXJlcigp
Lm5vZGUoKSkKKyAgICAgICAgYm94ID0gcHJldmlvdXNMZWFmT25MaW5lSW5Mb2dpY2FsT3JkZXIo
Ym94LCBjYWNoZSk7CisgICAgcmV0dXJuIGJveDsKK30KKworfQorfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0lubGluZUl0ZXJhdG9yTG9naWNhbE9yZGVy
VHJhdmVyc2FsLmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vSW5saW5lSXRl
cmF0b3JMb2dpY2FsT3JkZXJUcmF2ZXJzYWwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40OTQ0NjM4YTliNmIzMDM5
MTAzNjAxOTQxNWQwMDk1ZWUxODViZTczCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2ludGVncmF0aW9uL0lubGluZUl0ZXJhdG9yTG9naWNhbE9yZGVyVHJhdmVyc2Fs
LmgKQEAgLTAsMCArMSw2NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVk
ZSAiSW5saW5lSXRlcmF0b3JUZXh0Qm94LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK25hbWVz
cGFjZSBJbmxpbmVJdGVyYXRvciB7CisKK2NsYXNzIExpbmVJdGVyYXRvcjsKKworc3RydWN0IFRl
eHRMb2dpY2FsT3JkZXJDYWNoZURhdGEgeworICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9D
QVRFRDsKKworICAgIFZlY3RvcjxUZXh0Qm94SXRlcmF0b3I+IGJveGVzOworICAgIHNpemVfdCBp
bmRleCB7IDAgfTsKK307CisKK3VzaW5nIFRleHRMb2dpY2FsT3JkZXJDYWNoZSA9IHN0ZDo6dW5p
cXVlX3B0cjxUZXh0TG9naWNhbE9yZGVyQ2FjaGVEYXRhPjsKKworc3RkOjpwYWlyPFRleHRCb3hJ
dGVyYXRvciwgVGV4dExvZ2ljYWxPcmRlckNhY2hlPiBmaXJzdFRleHRCb3hJbkxvZ2ljYWxPcmRl
ckZvcihjb25zdCBSZW5kZXJUZXh0Jik7CitzdGQ6OnBhaXI8VGV4dEJveEl0ZXJhdG9yLCBUZXh0
TG9naWNhbE9yZGVyQ2FjaGU+IGxhc3RUZXh0Qm94SW5Mb2dpY2FsT3JkZXJGb3IoY29uc3QgUmVu
ZGVyVGV4dCYpOworVGV4dEJveEl0ZXJhdG9yIG5leHRUZXh0Qm94SW5Mb2dpY2FsT3JkZXIoY29u
c3QgVGV4dEJveEl0ZXJhdG9yJiwgVGV4dExvZ2ljYWxPcmRlckNhY2hlJik7CitUZXh0Qm94SXRl
cmF0b3IgcHJldmlvdXNUZXh0Qm94SW5Mb2dpY2FsT3JkZXIoY29uc3QgVGV4dEJveEl0ZXJhdG9y
JiwgVGV4dExvZ2ljYWxPcmRlckNhY2hlJik7CisKK3N0cnVjdCBMaW5lTG9naWNhbE9yZGVyQ2Fj
aGVEYXRhIHsKKyAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CisKKyAgICBWZWN0
b3I8TGVhZkJveEl0ZXJhdG9yPiBib3hlczsKKyAgICBzaXplX3QgaW5kZXggeyAwIH07Cit9Owor
dXNpbmcgTGluZUxvZ2ljYWxPcmRlckNhY2hlID0gc3RkOjp1bmlxdWVfcHRyPExpbmVMb2dpY2Fs
T3JkZXJDYWNoZURhdGE+OworCitMZWFmQm94SXRlcmF0b3IgZmlyc3RMZWFmT25MaW5lSW5Mb2dp
Y2FsT3JkZXIoY29uc3QgTGluZUl0ZXJhdG9yJiwgTGluZUxvZ2ljYWxPcmRlckNhY2hlJik7CitM
ZWFmQm94SXRlcmF0b3IgbGFzdExlYWZPbkxpbmVJbkxvZ2ljYWxPcmRlcihjb25zdCBMaW5lSXRl
cmF0b3ImLCBMaW5lTG9naWNhbE9yZGVyQ2FjaGUmKTsKK0xlYWZCb3hJdGVyYXRvciBuZXh0TGVh
Zk9uTGluZUluTG9naWNhbE9yZGVyKGNvbnN0IExlYWZCb3hJdGVyYXRvciYsIExpbmVMb2dpY2Fs
T3JkZXJDYWNoZSYpOworTGVhZkJveEl0ZXJhdG9yIHByZXZpb3VzTGVhZk9uTGluZUluTG9naWNh
bE9yZGVyKGNvbnN0IExlYWZCb3hJdGVyYXRvciYsIExpbmVMb2dpY2FsT3JkZXJDYWNoZSYpOwor
CitMZWFmQm94SXRlcmF0b3IgZmlyc3RMZWFmT25MaW5lSW5Mb2dpY2FsT3JkZXJXaXRoTm9kZShj
b25zdCBMaW5lSXRlcmF0b3ImLCBMaW5lTG9naWNhbE9yZGVyQ2FjaGUmKTsKK0xlYWZCb3hJdGVy
YXRvciBsYXN0TGVhZk9uTGluZUluTG9naWNhbE9yZGVyV2l0aE5vZGUoY29uc3QgTGluZUl0ZXJh
dG9yJiwgTGluZUxvZ2ljYWxPcmRlckNhY2hlJik7CisKK30KK30KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9JbmxpbmVJdGVyYXRvclRleHRCb3guY3BwIGIv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0lubGluZUl0ZXJhdG9yVGV4dEJveC5j
cHAKaW5kZXggMjE1NjhkZjM0ODgyYWZkNTYyYjg1OGE1NDU1MjBhNWVhOThiZjRiOS4uMmI3NDk3
MDFhOWFlMjg5Y2YzOGNmMGU1ZWFiMzIyYWNmMjMyYzY0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0lubGluZUl0ZXJhdG9yVGV4dEJveC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0lubGluZUl0ZXJhdG9yVGV4dEJveC5j
cHAKQEAgLTM4LDYgKzM4LDExIEBAIFRleHRCb3hJdGVyYXRvciBUZXh0Qm94OjpuZXh0VGV4dEJv
eCgpIGNvbnN0CiAgICAgcmV0dXJuIFRleHRCb3hJdGVyYXRvcigqdGhpcykudHJhdmVyc2VOZXh0
VGV4dEJveCgpOwogfQogCitUZXh0Qm94SXRlcmF0b3IgVGV4dEJveDo6cHJldmlvdXNUZXh0Qm94
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gVGV4dEJveEl0ZXJhdG9yKCp0aGlzKS50cmF2ZXJzZVBy
ZXZpb3VzVGV4dEJveCgpOworfQorCiBMYXlvdXRSZWN0IFRleHRCb3g6OnNlbGVjdGlvblJlY3Qo
dW5zaWduZWQgcmFuZ2VTdGFydCwgdW5zaWduZWQgcmFuZ2VFbmQpIGNvbnN0CiB7CiAgICAgYXV0
byBbY2xhbXBlZFN0YXJ0LCBjbGFtcGVkRW5kXSA9IHNlbGVjdGFibGVSYW5nZSgpLmNsYW1wKHJh
bmdlU3RhcnQsIHJhbmdlRW5kKTsKQEAgLTg5LDYgKzk0LDE0IEBAIFRleHRCb3hJdGVyYXRvciYg
VGV4dEJveEl0ZXJhdG9yOjp0cmF2ZXJzZU5leHRUZXh0Qm94KCkKICAgICByZXR1cm4gKnRoaXM7
CiB9CiAKK1RleHRCb3hJdGVyYXRvciYgVGV4dEJveEl0ZXJhdG9yOjp0cmF2ZXJzZVByZXZpb3Vz
VGV4dEJveCgpCit7CisgICAgV1RGOjpzd2l0Y2hPbihtX2JveC5tX3BhdGhWYXJpYW50LCBbXShh
dXRvJiBwYXRoKSB7CisgICAgICAgIHBhdGgudHJhdmVyc2VQcmV2aW91c1RleHRCb3goKTsKKyAg
ICB9KTsKKyAgICByZXR1cm4gKnRoaXM7Cit9CisKIFRleHRCb3hJdGVyYXRvciBmaXJzdFRleHRC
b3hGb3IoY29uc3QgUmVuZGVyVGV4dCYgdGV4dCkKIHsKICNpZiBFTkFCTEUoTEFZT1VUX0ZPUk1B
VFRJTkdfQ09OVEVYVCkKQEAgLTk5LDQxICsxMTIsMjEgQEAgVGV4dEJveEl0ZXJhdG9yIGZpcnN0
VGV4dEJveEZvcihjb25zdCBSZW5kZXJUZXh0JiB0ZXh0KQogICAgIHJldHVybiB7IEJveExlZ2Fj
eVBhdGggeyB0ZXh0LmZpcnN0VGV4dEJveCgpIH0gfTsKIH0KIAotc3RkOjpwYWlyPFRleHRCb3hJ
dGVyYXRvciwgTG9naWNhbE9yZGVyQ2FjaGU+IGZpcnN0VGV4dEJveEluTG9naWNhbE9yZGVyRm9y
KGNvbnN0IFJlbmRlclRleHQmIHRleHQpCi17Ci0gICAgaWYgKCF0ZXh0LmNvbnRhaW5zUmV2ZXJz
ZWRUZXh0KCkpCi0gICAgICAgIHJldHVybiB7IGZpcnN0VGV4dEJveEZvcih0ZXh0KSwgbnVsbHB0
ciB9OwotCi0gICAgYXV0byBjYWNoZSA9IFdURjo6bWFrZVVuaXF1ZTxMb2dpY2FsT3JkZXJDYWNo
ZURhdGE+KCk7Ci0gICAgZm9yIChhdXRvIHRleHRCb3ggOiB0ZXh0Qm94ZXNGb3IodGV4dCkpCi0g
ICAgICAgIGNhY2hlLT5ib3hlcy5hcHBlbmQodGV4dEJveCk7Ci0KLSAgICBpZiAoY2FjaGUtPmJv
eGVzLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIHsgVGV4dEJveEl0ZXJhdG9yIHsgfSwgbnVs
bHB0ciB9OwotCi0gICAgc3RkOjpzb3J0KGNhY2hlLT5ib3hlcy5iZWdpbigpLCBjYWNoZS0+Ym94
ZXMuZW5kKCksIFsmXShhdXRvJiBhLCBhdXRvJiBiKSB7Ci0gICAgICAgIHJldHVybiBhLT5zdGFy
dCgpIDwgYi0+c3RhcnQoKTsKLSAgICB9KTsKLQotICAgIHJldHVybiB7IGNhY2hlLT5ib3hlc1sw
XSwgV1RGTW92ZShjYWNoZSkgfTsKLX0KLQotVGV4dEJveEl0ZXJhdG9yIG5leHRUZXh0Qm94SW5M
b2dpY2FsT3JkZXIoY29uc3QgVGV4dEJveEl0ZXJhdG9yJiB0ZXh0Qm94LCBMb2dpY2FsT3JkZXJD
YWNoZSYgY2FjaGUpCitUZXh0Qm94SXRlcmF0b3IgbGFzdFRleHRCb3hGb3IoY29uc3QgUmVuZGVy
VGV4dCYgdGV4dCkKIHsKLSAgICBpZiAoIWNhY2hlKQotICAgICAgICByZXR1cm4gdGV4dEJveC0+
bmV4dFRleHRCb3goKTsKLQotICAgIGlmIChjYWNoZS0+aW5kZXggPT0gY2FjaGUtPmJveGVzLnNp
emUoKSB8fCBjYWNoZS0+Ym94ZXNbY2FjaGUtPmluZGV4XSAhPSB0ZXh0Qm94KSB7Ci0gICAgICAg
IGNhY2hlLT5pbmRleCA9IGNhY2hlLT5ib3hlcy5maW5kKHRleHRCb3gpOwotICAgICAgICBBU1NF
UlQoY2FjaGUtPmluZGV4ICE9IG5vdEZvdW5kKTsKKyNpZiBFTkFCTEUoTEFZT1VUX0ZPUk1BVFRJ
TkdfQ09OVEVYVCkKKyAgICBpZiAoYXV0byogbGluZUxheW91dCA9IExheW91dEludGVncmF0aW9u
OjpMaW5lTGF5b3V0Ojpjb250YWluaW5nKHRleHQpKSB7CisgICAgICAgIC8vIEZJWE1FOiBEbyBz
b21ldGhpbmcgYmV0dGVyLgorICAgICAgICBhdXRvIGxhc3QgPSBsaW5lTGF5b3V0LT50ZXh0Qm94
ZXNGb3IodGV4dCk7CisgICAgICAgIGlmICghbGFzdCkKKyAgICAgICAgICAgIHJldHVybiB7IH07
CisgICAgICAgIHdoaWxlIChhdXRvIG5leHQgPSBsYXN0LT5uZXh0VGV4dEJveCgpKQorICAgICAg
ICAgICAgbGFzdCA9IG5leHQ7CisgICAgICAgIHJldHVybiBsYXN0OwogICAgIH0KKyNlbmRpZgog
Ci0gICAgY2FjaGUtPmluZGV4Kys7Ci0KLSAgICBpZiAoY2FjaGUtPmluZGV4IDwgY2FjaGUtPmJv
eGVzLnNpemUoKSkKLSAgICAgICAgcmV0dXJuIGNhY2hlLT5ib3hlc1tjYWNoZS0+aW5kZXhdOwot
Ci0gICAgcmV0dXJuIHsgfTsKKyAgICByZXR1cm4geyBCb3hMZWdhY3lQYXRoIHsgdGV4dC5sYXN0
VGV4dEJveCgpIH0gfTsKIH0KIAogVGV4dEJveEl0ZXJhdG9yIHRleHRCb3hGb3IoY29uc3QgTGVn
YWN5SW5saW5lVGV4dEJveCogbGVnYWN5SW5saW5lVGV4dEJveCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9JbmxpbmVJdGVyYXRvclRleHRCb3guaCBiL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9JbmxpbmVJdGVyYXRvclRleHRCb3guaApp
bmRleCA0MmI0N2UzNDk5N2YzM2IyYTg3ZGI1ZTBiN2E1YjFhYTBkZTI4M2I4Li4zNmU5YzVkOTZj
MzUzNDczMDU4MDY1Njc1OWUwZDY5ZDdjZTdhNTRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvaW50ZWdyYXRpb24vSW5saW5lSXRlcmF0b3JUZXh0Qm94LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0lubGluZUl0ZXJhdG9yVGV4dEJveC5oCkBAIC0z
Miw5ICszMiw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogbmFtZXNwYWNlIElubGluZUl0ZXJh
dG9yIHsKIAotc3RydWN0IExvZ2ljYWxPcmRlckNhY2hlRGF0YTsKLXVzaW5nIExvZ2ljYWxPcmRl
ckNhY2hlID0gc3RkOjp1bmlxdWVfcHRyPExvZ2ljYWxPcmRlckNhY2hlRGF0YT47Ci0KIGNsYXNz
IFRleHRCb3ggOiBwdWJsaWMgQm94IHsKIHB1YmxpYzoKICAgICBUZXh0Qm94KFBhdGhWYXJpYW50
JiYpOwpAQCAtNjMsNiArNjAsNyBAQCBwdWJsaWM6CiAgICAgY29uc3QgTGVnYWN5SW5saW5lVGV4
dEJveCogbGVnYWN5SW5saW5lQm94KCkgY29uc3QgeyByZXR1cm4gZG93bmNhc3Q8TGVnYWN5SW5s
aW5lVGV4dEJveD4oQm94OjpsZWdhY3lJbmxpbmVCb3goKSk7IH0KIAogICAgIFRleHRCb3hJdGVy
YXRvciBuZXh0VGV4dEJveCgpIGNvbnN0OworICAgIFRleHRCb3hJdGVyYXRvciBwcmV2aW91c1Rl
eHRCb3goKSBjb25zdDsKIH07CiAKIGNsYXNzIFRleHRCb3hJdGVyYXRvciA6IHB1YmxpYyBMZWFm
Qm94SXRlcmF0b3IgewpAQCAtNzcsMTQgKzc1LDEzIEBAIHB1YmxpYzoKICAgICBjb25zdCBUZXh0
Qm94KiBvcGVyYXRvci0+KCkgY29uc3QgeyByZXR1cm4gJmdldCgpOyB9CiAKICAgICBUZXh0Qm94
SXRlcmF0b3ImIHRyYXZlcnNlTmV4dFRleHRCb3goKTsKKyAgICBUZXh0Qm94SXRlcmF0b3ImIHRy
YXZlcnNlUHJldmlvdXNUZXh0Qm94KCk7CiAKIHByaXZhdGU6CiAgICAgQm94SXRlcmF0b3ImIHRy
YXZlcnNlTmV4dE9uTGluZSgpID0gZGVsZXRlOwogICAgIEJveEl0ZXJhdG9yJiB0cmF2ZXJzZVBy
ZXZpb3VzT25MaW5lKCkgPSBkZWxldGU7CiAgICAgQm94SXRlcmF0b3ImIHRyYXZlcnNlTmV4dE9u
TGluZUlnbm9yaW5nTGluZUJyZWFrKCkgPSBkZWxldGU7CiAgICAgQm94SXRlcmF0b3ImIHRyYXZl
cnNlUHJldmlvdXNPbkxpbmVJZ25vcmluZ0xpbmVCcmVhaygpID0gZGVsZXRlOwotICAgIEJveEl0
ZXJhdG9yJiB0cmF2ZXJzZU5leHRPbkxpbmVJbkxvZ2ljYWxPcmRlcigpID0gZGVsZXRlOwotICAg
IEJveEl0ZXJhdG9yJiB0cmF2ZXJzZVByZXZpb3VzT25MaW5lSW5Mb2dpY2FsT3JkZXIoKSA9IGRl
bGV0ZTsKIAogICAgIGNvbnN0IFRleHRCb3gmIGdldCgpIGNvbnN0IHsgcmV0dXJuIGRvd25jYXN0
PFRleHRCb3g+KG1fYm94KTsgfQogfTsKQEAgLTEwNCw2ICsxMDEsNyBAQCBwcml2YXRlOgogfTsK
IAogVGV4dEJveEl0ZXJhdG9yIGZpcnN0VGV4dEJveEZvcihjb25zdCBSZW5kZXJUZXh0Jik7CitU
ZXh0Qm94SXRlcmF0b3IgbGFzdFRleHRCb3hGb3IoY29uc3QgUmVuZGVyVGV4dCYpOwogVGV4dEJv
eEl0ZXJhdG9yIHRleHRCb3hGb3IoY29uc3QgTGVnYWN5SW5saW5lVGV4dEJveCopOwogI2lmIEVO
QUJMRShMQVlPVVRfRk9STUFUVElOR19DT05URVhUKQogVGV4dEJveEl0ZXJhdG9yIHRleHRCb3hG
b3IoY29uc3QgTGF5b3V0SW50ZWdyYXRpb246OklubGluZUNvbnRlbnQmLCBjb25zdCBJbmxpbmVE
aXNwbGF5OjpCb3gmKTsKQEAgLTExMSwxNSArMTA5LDYgQEAgVGV4dEJveEl0ZXJhdG9yIHRleHRC
b3hGb3IoY29uc3QgTGF5b3V0SW50ZWdyYXRpb246OklubGluZUNvbnRlbnQmLCBzaXplX3QgYm94
SW4KICNlbmRpZgogVGV4dEJveFJhbmdlIHRleHRCb3hlc0Zvcihjb25zdCBSZW5kZXJUZXh0Jik7
CiAKLXN0cnVjdCBMb2dpY2FsT3JkZXJDYWNoZURhdGEgewotICAgIFdURl9NQUtFX1NUUlVDVF9G
QVNUX0FMTE9DQVRFRDsKLSAgICAKLSAgICBWZWN0b3I8VGV4dEJveEl0ZXJhdG9yPiBib3hlczsK
LSAgICBzaXplX3QgaW5kZXggeyAwIH07Ci19Owotc3RkOjpwYWlyPFRleHRCb3hJdGVyYXRvciwg
TG9naWNhbE9yZGVyQ2FjaGU+IGZpcnN0VGV4dEJveEluTG9naWNhbE9yZGVyRm9yKGNvbnN0IFJl
bmRlclRleHQmKTsKLVRleHRCb3hJdGVyYXRvciBuZXh0VGV4dEJveEluTG9naWNhbE9yZGVyKGNv
bnN0IFRleHRCb3hJdGVyYXRvciYsIExvZ2ljYWxPcmRlckNhY2hlJik7Ci0KIGlubGluZSBib29s
IFRleHRCb3g6Omhhc0h5cGhlbigpIGNvbnN0CiB7CiAgICAgcmV0dXJuIFdURjo6c3dpdGNoT24o
bV9wYXRoVmFyaWFudCwgW10oYXV0byYgcGF0aCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyQmxvY2tGbG93LmNwcAppbmRleCAxMThjYzIwYTdiMmVhNTkxMzU5YzcyNTI1NjM0
MWRkN2JmMTdkZmMwLi5mMmM2MjhmNjcxYmJmZTVjYjg4ZTU4NWNjYWRmYTJmMmNlNzUxNmZkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNwcApAQCAtMzYs
NiArMzYsNyBAQAogI2luY2x1ZGUgIkhpdFRlc3RMb2NhdGlvbi5oIgogI2luY2x1ZGUgIklubGlu
ZUl0ZXJhdG9yQm94LmgiCiAjaW5jbHVkZSAiSW5saW5lSXRlcmF0b3JMaW5lLmgiCisjaW5jbHVk
ZSAiSW5saW5lSXRlcmF0b3JMb2dpY2FsT3JkZXJUcmF2ZXJzYWwuaCIKICNpbmNsdWRlICJJbmxp
bmVJdGVyYXRvclRleHRCb3guaCIKICNpbmNsdWRlICJJbmxpbmVXYWxrZXIuaCIKICNpbmNsdWRl
ICJMYXlvdXRJbnRlZ3JhdGlvbkxpbmVMYXlvdXQuaCIKQEAgLTM2MTksNyArMzYyMCw4IEBAIFZp
c2libGVQb3NpdGlvbiBSZW5kZXJCbG9ja0Zsb3c6OnBvc2l0aW9uRm9yUG9pbnRXaXRoSW5saW5l
Q2hpbGRyZW4oY29uc3QgTGF5b3V0CiAgICAgaWYgKGxhc3RMaW5lV2l0aENoaWxkcmVuKSB7CiAg
ICAgICAgIC8vIFdlIGhpdCB0aGlzIGNhc2UgZm9yIE1hYyBiZWhhdmlvciB3aGVuIHRoZSBZIGNv
b3JkaW5hdGUgaXMgYmVsb3cgdGhlIGxhc3QgYm94LgogICAgICAgICBBU1NFUlQobW92ZUNhcmV0
VG9Cb3VuZGFyeSk7Ci0gICAgICAgIGlmIChhdXRvIGxvZ2ljYWxseUxhc3RSdW4gPSBsYXN0TGlu
ZVdpdGhDaGlsZHJlbi0+bG9naWNhbEVuZFJ1bldpdGhOb2RlKCkpCisgICAgICAgIElubGluZUl0
ZXJhdG9yOjpMaW5lTG9naWNhbE9yZGVyQ2FjaGUgb3JkZXJDYWNoZTsKKyAgICAgICAgaWYgKGF1
dG8gbG9naWNhbGx5TGFzdFJ1biA9IElubGluZUl0ZXJhdG9yOjpsYXN0TGVhZk9uTGluZUluTG9n
aWNhbE9yZGVyV2l0aE5vZGUobGFzdExpbmVXaXRoQ2hpbGRyZW4sIG9yZGVyQ2FjaGUpKQogICAg
ICAgICAgICAgcmV0dXJuIHBvc2l0aW9uRm9yUnVuKCp0aGlzLCBsb2dpY2FsbHlMYXN0UnVuLCBm
YWxzZSk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHAKaW5k
ZXggNTdkZjE0MWVmNDc2NzdkNjJhYzFiMTNmNGFlMjk1N2MyMjVlODg0Zi4uMjgxNjczMDg3NzMz
ZGI5ZDNkZjY5NmM0NDYzOTkwZDJmMjZkYTZlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUZXh0LmNwcApAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgIkhUTUxQYXJzZXJJZGlv
bXMuaCIKICNpbmNsdWRlICJIeXBoZW5hdGlvbi5oIgogI2luY2x1ZGUgIklubGluZUl0ZXJhdG9y
TGluZS5oIgorI2luY2x1ZGUgIklubGluZUl0ZXJhdG9yTG9naWNhbE9yZGVyVHJhdmVyc2FsLmgi
CiAjaW5jbHVkZSAiSW5saW5lSXRlcmF0b3JUZXh0Qm94LmgiCiAjaW5jbHVkZSAiSW5saW5lUnVu
QW5kT2Zmc2V0LmgiCiAjaW5jbHVkZSAiTGF5b3V0SW50ZWdyYXRpb25MaW5lTGF5b3V0LmgiCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>441356</attachid>
            <date>2021-10-15 03:04:20 -0700</date>
            <delta_ts>2021-10-15 03:07:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-231800-20211015130418.patch</filename>
            <type>text/plain</type>
            <size>52087</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg0MjM2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODUwN2I1YjhiMjkzNjZj
N2M0ZDI3Mzk5ZWE0ZjQ1YzgxNTczZjU2OS4uMzU5ZGJjMWNmNDk2Y2U3ZmRhNDBlYzA0MWEyYzQ3
ZjQ3N2E4ZWRiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg4IEBACisyMDIxLTEwLTE1ICBBbnR0
aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBbTEZDXVtJbnRlZ3JhdGlv
bl0gRmFjdG9yIGxpbmUgbG9naWNhbCBvcmRlciB0cmF2ZXJzYWwgb3V0IG9mIGl0ZXJhdG9yCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzE4MDAKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTaW1pbGFyIHRv
IHRleHQgbG9naWNhbCBvcmRlciB0cmF2ZXJzYWwsIHVzZSBzdGFuZGFsb25lIHRyYXZlcnNhbCBm
dW5jdGlvbnMgd2l0aCBvcmRlciBjYWNoZQorICAgICAgICBvd25lZCBieSB0aGUgY2FsbGVyLgor
CisgICAgICAgIE1ha2UgdGhlIGNvZGUgZ2VuZXJpYyBzbyBpdCB3aWxsIHdvcmsgd2l0aCBJRkMg
QmlEaS4KKworICAgICAgICBGYWN0b3IgYWxsIHRyYXZlcnNhbCBmdW5jdGlvbnMgdG8gYSBmaWxl
IG9mIHRoZWlyIG93biwgSW5saW5lSXRlcmF0b3JMb2dpY2FsT3JkZXJUcmF2ZXJzYWwuaC9jcHAu
CisKKyAgICAgICAgKiBIZWFkZXJzLmNtYWtlOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAg
ICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBkb20v
UG9zaXRpb24uY3BwOgorICAgICAgICAqIGVkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuY3Bw
OgorICAgICAgICAqIGVkaXRpbmcvVGV4dEl0ZXJhdG9yLmg6CisgICAgICAgICogZWRpdGluZy9W
aXNpYmxlUG9zaXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VmlzaWJsZVBvc2l0aW9uOjps
ZWZ0VmlzdWFsbHlEaXN0aW5jdENhbmRpZGF0ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpW
aXNpYmxlUG9zaXRpb246OnJpZ2h0VmlzdWFsbHlEaXN0aW5jdENhbmRpZGF0ZSBjb25zdCk6Cisg
ICAgICAgICogZWRpdGluZy9WaXNpYmxlVW5pdHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cHJl
dmlvdXNUZXh0T3JMaW5lQnJlYWtSdW4pOgorICAgICAgICAoV2ViQ29yZTo6bmV4dFRleHRPckxp
bmVCcmVha1J1bik6CisgICAgICAgIChXZWJDb3JlOjpzdGFydFRleHRPckxpbmVCcmVha1J1bik6
CisgICAgICAgIChXZWJDb3JlOjplbmRUZXh0T3JMaW5lQnJlYWtSdW4pOgorICAgICAgICAoV2Vi
Q29yZTo6bG9naWNhbGx5UHJldmlvdXNSdW4pOgorICAgICAgICAoV2ViQ29yZTo6bG9naWNhbGx5
TmV4dFJ1bik6CisgICAgICAgIChXZWJDb3JlOjp3b3JkQnJlYWtJdGVyYXRvckZvck1pbk9mZnNl
dEJvdW5kYXJ5KToKKyAgICAgICAgKFdlYkNvcmU6OndvcmRCcmVha0l0ZXJhdG9yRm9yTWF4T2Zm
c2V0Qm91bmRhcnkpOgorICAgICAgICAoV2ViQ29yZTo6c3RhcnRQb3NpdGlvbkZvckxpbmUpOgor
ICAgICAgICAoV2ViQ29yZTo6ZW5kUG9zaXRpb25Gb3JMaW5lKToKKyAgICAgICAgKiBsYXlvdXQv
aW50ZWdyYXRpb24vSW5saW5lSXRlcmF0b3JCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5s
aW5lSXRlcmF0b3I6OkxlYWZCb3hJdGVyYXRvcjo6dHJhdmVyc2VQcmV2aW91c09uTGluZUlnbm9y
aW5nTGluZUJyZWFrKToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpMZWFmQm94
SXRlcmF0b3I6OnRyYXZlcnNlTmV4dE9uTGluZUluTG9naWNhbE9yZGVyKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpMZWFmQm94SXRlcmF0b3I6OnRyYXZlcnNl
UHJldmlvdXNPbkxpbmVJbkxvZ2ljYWxPcmRlcik6IERlbGV0ZWQuCisgICAgICAgICogbGF5b3V0
L2ludGVncmF0aW9uL0lubGluZUl0ZXJhdG9yQm94Lmg6CisgICAgICAgIChXZWJDb3JlOjpJbmxp
bmVJdGVyYXRvcjo6Qm94SXRlcmF0b3I6OkJveEl0ZXJhdG9yKToKKyAgICAgICAgKiBsYXlvdXQv
aW50ZWdyYXRpb24vSW5saW5lSXRlcmF0b3JCb3hMZWdhY3lQYXRoLmg6CisgICAgICAgIChXZWJD
b3JlOjpJbmxpbmVJdGVyYXRvcjo6Qm94TGVnYWN5UGF0aDo6Qm94TGVnYWN5UGF0aCk6CisgICAg
ICAgIChXZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6Qm94TGVnYWN5UGF0aDo6dHJhdmVyc2VOZXh0
T25MaW5lSW5Mb2dpY2FsT3JkZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW5saW5l
SXRlcmF0b3I6OkJveExlZ2FjeVBhdGg6OnRyYXZlcnNlUHJldmlvdXNPbkxpbmVJbkxvZ2ljYWxP
cmRlcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6Qm94TGVn
YWN5UGF0aDo6aW5pdGlhbGl6ZUxvZ2ljYWxPcmRlckNhY2hlRm9yTGluZSk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6Qm94TGVnYWN5UGF0aDo6dHJhdmVyc2VO
ZXh0SW5saW5lQm94SW5DYWNoZU9yZGVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Oklu
bGluZUl0ZXJhdG9yOjpCb3hMZWdhY3lQYXRoOjp0cmF2ZXJzZVByZXZpb3VzSW5saW5lQm94SW5D
YWNoZU9yZGVyKTogRGVsZXRlZC4KKyAgICAgICAgKiBsYXlvdXQvaW50ZWdyYXRpb24vSW5saW5l
SXRlcmF0b3JCb3hNb2Rlcm5QYXRoLmg6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVyYXRv
cjo6Qm94TW9kZXJuUGF0aDo6dHJhdmVyc2VOZXh0T25MaW5lSW5Mb2dpY2FsT3JkZXIpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRlcmF0b3I6OkJveE1vZGVyblBhdGg6OnRy
YXZlcnNlUHJldmlvdXNPbkxpbmVJbkxvZ2ljYWxPcmRlcik6IERlbGV0ZWQuCisgICAgICAgICog
bGF5b3V0L2ludGVncmF0aW9uL0lubGluZUl0ZXJhdG9yTGluZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJbmxpbmVJdGVyYXRvcjo6TGluZTo6bG9naWNhbFN0YXJ0UnVuIGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpMaW5lOjpsb2dpY2FsRW5kUnVu
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpMaW5l
Ojpsb2dpY2FsU3RhcnRSdW5XaXRoTm9kZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpJbmxpbmVJdGVyYXRvcjo6TGluZTo6bG9naWNhbEVuZFJ1bldpdGhOb2RlIGNvbnN0KTog
RGVsZXRlZC4KKyAgICAgICAgKiBsYXlvdXQvaW50ZWdyYXRpb24vSW5saW5lSXRlcmF0b3JMaW5l
Lmg6CisgICAgICAgICogbGF5b3V0L2ludGVncmF0aW9uL0lubGluZUl0ZXJhdG9yTGluZUxlZ2Fj
eVBhdGguaDoKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpMaW5lSXRlcmF0b3JM
ZWdhY3lQYXRoOjpsb2dpY2FsU3RhcnRSdW4gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6SW5saW5lSXRlcmF0b3I6OkxpbmVJdGVyYXRvckxlZ2FjeVBhdGg6OmxvZ2ljYWxFbmRS
dW4gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIGxheW91dC9pbnRlZ3JhdGlvbi9JbmxpbmVJ
dGVyYXRvckxpbmVNb2Rlcm5QYXRoLmg6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVyYXRv
cjo6TGluZUl0ZXJhdG9yTW9kZXJuUGF0aDo6bG9naWNhbFN0YXJ0UnVuIGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpMaW5lSXRlcmF0b3JNb2Rlcm5Q
YXRoOjpsb2dpY2FsRW5kUnVuIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBsYXlvdXQvaW50
ZWdyYXRpb24vSW5saW5lSXRlcmF0b3JMb2dpY2FsT3JkZXJUcmF2ZXJzYWwuY3BwOiBBZGRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjptYWtlVGV4dExvZ2ljYWxPcmRlckNh
Y2hlSWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRlcmF0b3I6OnVwZGF0ZVRl
eHRMb2dpY2FsT3JkZXJDYWNoZUlmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0
ZXJhdG9yOjpmaXJzdFRleHRCb3hJbkxvZ2ljYWxPcmRlckZvcik6CisgICAgICAgIChXZWJDb3Jl
OjpJbmxpbmVJdGVyYXRvcjo6bmV4dFRleHRCb3hJbkxvZ2ljYWxPcmRlcik6CisgICAgICAgIChX
ZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6bWFrZUxpbmVMb2dpY2FsT3JkZXJDYWNoZUlmTmVlZGVk
KToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjp1cGRhdGVMaW5lTG9naWNhbE9y
ZGVyQ2FjaGVJZk5lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6Zmly
c3RMZWFmT25MaW5lSW5Mb2dpY2FsT3JkZXIpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRl
cmF0b3I6Omxhc3RMZWFmT25MaW5lSW5Mb2dpY2FsT3JkZXIpOgorICAgICAgICAoV2ViQ29yZTo6
SW5saW5lSXRlcmF0b3I6Om5leHRMZWFmT25MaW5lSW5Mb2dpY2FsT3JkZXIpOgorICAgICAgICAo
V2ViQ29yZTo6SW5saW5lSXRlcmF0b3I6OnByZXZpb3VzTGVhZk9uTGluZUluTG9naWNhbE9yZGVy
KToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpmaXJzdExlYWZPbkxpbmVJbkxv
Z2ljYWxPcmRlcldpdGhOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjps
YXN0TGVhZk9uTGluZUluTG9naWNhbE9yZGVyV2l0aE5vZGUpOgorICAgICAgICAqIGxheW91dC9p
bnRlZ3JhdGlvbi9JbmxpbmVJdGVyYXRvckxvZ2ljYWxPcmRlclRyYXZlcnNhbC5oOiBBZGRlZC4K
KyAgICAgICAgKiBsYXlvdXQvaW50ZWdyYXRpb24vSW5saW5lSXRlcmF0b3JUZXh0Qm94LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpmaXJzdFRleHRCb3hJbkxvZ2ljYWxP
cmRlckZvcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6bmV4
dFRleHRCb3hJbkxvZ2ljYWxPcmRlcik6IERlbGV0ZWQuCisgICAgICAgICogbGF5b3V0L2ludGVn
cmF0aW9uL0lubGluZUl0ZXJhdG9yVGV4dEJveC5oOgorICAgICAgICAoKTogRGVsZXRlZC4KKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckJsb2NrRmxvdzo6cG9zaXRpb25Gb3JQb2ludFdpdGhJbmxpbmVDaGlsZHJlbik6Cisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwOgorCiAyMDIxLTEwLTE0ICBZb3Vlbm4g
RmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBNZWRpYUNhcGFiaWxpdGllcyBz
aG91bGQgZW5xdWV1ZSBhIHRhc2sgdG8gcmVzb2x2ZSBwcm9taXNlcwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UK
aW5kZXggYjA2NTdlMWNjOWRlNTliMDkyOTg1OWQ0OTE3MmVmMTljZmQ4ZTYzMS4uNGNlNTUxY2Nk
MDM1ZDFiNTcwNjNlZjQxMjRmM2JjZWNkMmI3MjFlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvSGVhZGVycy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCkBAIC04
MDcsNiArODA3LDcgQEAgc2V0KFdlYkNvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogICAg
IGxheW91dC9pbnRlZ3JhdGlvbi9JbmxpbmVJdGVyYXRvckxpbmUuaAogICAgIGxheW91dC9pbnRl
Z3JhdGlvbi9JbmxpbmVJdGVyYXRvckxpbmVMZWdhY3lQYXRoLmgKICAgICBsYXlvdXQvaW50ZWdy
YXRpb24vSW5saW5lSXRlcmF0b3JMaW5lTW9kZXJuUGF0aC5oCisgICAgbGF5b3V0L2ludGVncmF0
aW9uL0lubGluZUl0ZXJhdG9yTG9naWNhbE9yZGVyVHJhdmVyc2FsLmgKICAgICBsYXlvdXQvaW50
ZWdyYXRpb24vSW5saW5lSXRlcmF0b3JUZXh0Qm94LmgKICAgICBsYXlvdXQvaW50ZWdyYXRpb24v
TGF5b3V0SW50ZWdyYXRpb25JbmxpbmVDb250ZW50LmgKICAgICBsYXlvdXQvaW50ZWdyYXRpb24v
TGF5b3V0SW50ZWdyYXRpb25MaW5lLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJj
ZXMudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXggMjU3MjYxOTBjOTFhZTM4
N2RlM2Q0MWVjYjBhOTY5NjlmZGU2YWUxZS4uYzNlMjU4N2U2Y2NmYzEyYzBlOTMzMzE2ZjNlMmQ0
NDUyOGUxNjZmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIv
U291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKQEAgLTE1MjIsNiArMTUyMiw3IEBAIGxheW91dC9m
b3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL3RleHQvVGV4dFV0aWwuY3BwCiBsYXlvdXQvaW50ZWdy
YXRpb24vSW5saW5lSXRlcmF0b3JCb3guY3BwCiBsYXlvdXQvaW50ZWdyYXRpb24vSW5saW5lSXRl
cmF0b3JJbmxpbmVCb3guY3BwCiBsYXlvdXQvaW50ZWdyYXRpb24vSW5saW5lSXRlcmF0b3JMaW5l
LmNwcAorbGF5b3V0L2ludGVncmF0aW9uL0lubGluZUl0ZXJhdG9yTG9naWNhbE9yZGVyVHJhdmVy
c2FsLmNwcAogbGF5b3V0L2ludGVncmF0aW9uL0lubGluZUl0ZXJhdG9yVGV4dEJveC5jcHAKIGxh
eW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbkJveFRyZWUuY3BwCiBsYXlvdXQvaW50
ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25Db3ZlcmFnZS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBhMTIzNmVmZWI3MzA4
ZDUzOTBlNWY4Y2UwZDI3Njk0ZGE0MTJkMTllLi44NzMzNmIzYTFkMjEzNWU4NGQ5ZGQ5NjkwYTY3
YTQwMzAwZDdlNDExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCkBAIC01MjUyLDYgKzUyNTIsNyBAQAogCQlFNDE1RUIxMzI3MEMzNTEz
MDBFOERBMUIgLyogSW5saW5lSXRlcmF0b3JJbmxpbmVCb3guaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0MTVFQjExMjcwQzM1MTIwMEU4REExQiAvKiBJ
bmxpbmVJdGVyYXRvcklubGluZUJveC5oICovOyB9OwogCQlFNDE4MDI1NTIzRDQ1NDlCMDBGRkIw
NzEgLyogTGF5b3V0SW50ZWdyYXRpb25Cb3hUcmVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNDE4MDI1MzIzRDQ1NDlBMDBGRkIwNzEgLyogTGF5b3V0
SW50ZWdyYXRpb25Cb3hUcmVlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJRTQxOTA0MUYxQ0M2NDg2QjAwQzM1RjVEIC8qIEZvbnRTZWxlY3RvckNs
aWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTQx
OTA0MUUxQ0M2NDg2QjAwQzM1RjVEIC8qIEZvbnRTZWxlY3RvckNsaWVudC5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUU0MUFDQzE2MjcxNzM0MDIw
MDNFOTE1NyAvKiBJbmxpbmVJdGVyYXRvckxvZ2ljYWxPcmRlclRyYXZlcnNhbC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTQxQUNDMTUyNzE3MzQwMjAw
M0U5MTU3IC8qIElubGluZUl0ZXJhdG9yTG9naWNhbE9yZGVyVHJhdmVyc2FsLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTQyMDUwMTcyMTQxOTAx
QjAwNjZFRjNCIC8qIFByb2Nlc3NXYXJtaW5nLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBFNDIwNTAxNDIxNDE5MDFBMDA2NkVGM0IgLyogUHJvY2Vzc1dh
cm1pbmcuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQlFNDI0QTM5RTEzMzBERjAxMDBDRjZEQzkgLyogTGVnYWN5VGlsZUdyaWRUaWxlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNDI0QTM5RDEzMzBERjAx
MDBDRjZEQzkgLyogTGVnYWN5VGlsZUdyaWRUaWxlLmggKi87IH07CiAJCUU0MjVBNDlBMTgyOTJC
ODQwMDIwQ0ZDRiAvKiBDb2xsZWN0aW9uSW5kZXhDYWNoZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTQyNUE0OTkxODI5MkI4NDAwMjBDRkNGIC8qIENv
bGxlY3Rpb25JbmRleENhY2hlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKQEAgLTE2NTM0LDYgKzE2NTM1LDggQEAKIAkJRTQxODAyNTMyM0Q0NTQ5QTAw
RkZCMDcxIC8qIExheW91dEludGVncmF0aW9uQm94VHJlZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBMYXlvdXRJbnRlZ3JhdGlvbkJveFRyZWUuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJRTQxODAyNTYyM0Q0NTRCNTAwRkZCMDcxIC8qIExheW91dEludGVncmF0
aW9uQm94VHJlZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBMYXlvdXRJbnRlZ3JhdGlvbkJveFRy
ZWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFNDE5MDQxRTFDQzY0ODZCMDBD
MzVGNUQgLyogRm9udFNlbGVjdG9yQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEZvbnRTZWxlY3RvckNsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlFNDFBQ0MxMjI3MTczM0YzMDAzRTkxNTcgLyogSW5saW5lSXRlcmF0b3JMb2dpY2FsT3JkZXJU
cmF2ZXJzYWwuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5saW5l
SXRlcmF0b3JMb2dpY2FsT3JkZXJUcmF2ZXJzYWwuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlFNDFBQ0MxNTI3MTczNDAyMDAzRTkxNTcgLyogSW5saW5lSXRlcmF0b3JMb2dpY2Fs
T3JkZXJUcmF2ZXJzYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5saW5l
SXRlcmF0b3JMb2dpY2FsT3JkZXJUcmF2ZXJzYWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJRTQxRUEwMzgxMTk4MzZEQjAwNzEwQkM1IC8qIENTU1Byb3BlcnR5TmFtZXMuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gQ1NTUHJvcGVydHlOYW1lcy5jcHA7
IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJDb3JlL0NTU1Byb3BlcnR5TmFtZXMuY3BwOyBzb3Vy
Y2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQlFNDFFQTAzOTExOTgzNzQ5MDA3MTBC
QzUgLyogQ1NTVmFsdWVLZXl3b3Jkcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IG5hbWUgPSBDU1NWYWx1ZUtleXdvcmRzLmNwcDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYkNv
cmUvQ1NTVmFsdWVLZXl3b3Jkcy5jcHA7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7
IH07CiAJCUU0MjA1MDE0MjE0MTkwMUEwMDY2RUYzQiAvKiBQcm9jZXNzV2FybWluZy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQcm9jZXNzV2FybWluZy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtMjk3MDcsNiArMjk3MTAsOCBAQAogCQkJCUU0RDMzRjNGMjUy
QzRCODIwMDgzN0QwNSAvKiBJbmxpbmVJdGVyYXRvckxpbmUuaCAqLywKIAkJCQlFNEQzM0Y0MzI1
MkM1MEUyMDA4MzdEMDUgLyogSW5saW5lSXRlcmF0b3JMaW5lTGVnYWN5UGF0aC5oICovLAogCQkJ
CUU0RDMzRjQ1MjUyQzUwRkIwMDgzN0QwNSAvKiBJbmxpbmVJdGVyYXRvckxpbmVNb2Rlcm5QYXRo
LmggKi8sCisJCQkJRTQxQUNDMTIyNzE3MzNGMzAwM0U5MTU3IC8qIElubGluZUl0ZXJhdG9yTG9n
aWNhbE9yZGVyVHJhdmVyc2FsLmNwcCAqLywKKwkJCQlFNDFBQ0MxNTI3MTczNDAyMDAzRTkxNTcg
LyogSW5saW5lSXRlcmF0b3JMb2dpY2FsT3JkZXJUcmF2ZXJzYWwuaCAqLywKIAkJCQlFNDdDRUJE
RTI3MDk5MTY0MDBCOEQ4RjUgLyogSW5saW5lSXRlcmF0b3JUZXh0Qm94LmNwcCAqLywKIAkJCQlF
NDdDRUJFMDI3MDk5MTZEMDBCOEQ4RjUgLyogSW5saW5lSXRlcmF0b3JUZXh0Qm94LmggKi8sCiAJ
CQkJRTQxODAyNTYyM0Q0NTRCNTAwRkZCMDcxIC8qIExheW91dEludGVncmF0aW9uQm94VHJlZS5j
cHAgKi8sCkBAIC0zMzI0OCw2ICszMzI1Myw3IEBACiAJCQkJRTREMzNGNDEyNTJDNEI4MzAwODM3
RDA1IC8qIElubGluZUl0ZXJhdG9yTGluZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTREMzNGNDQy
NTJDNTBFMjAwODM3RDA1IC8qIElubGluZUl0ZXJhdG9yTGluZUxlZ2FjeVBhdGguaCBpbiBIZWFk
ZXJzICovLAogCQkJCUU0RDMzRjQ2MjUyQzUwRkMwMDgzN0QwNSAvKiBJbmxpbmVJdGVyYXRvckxp
bmVNb2Rlcm5QYXRoLmggaW4gSGVhZGVycyAqLywKKwkJCQlFNDFBQ0MxNjI3MTczNDAyMDAzRTkx
NTcgLyogSW5saW5lSXRlcmF0b3JMb2dpY2FsT3JkZXJUcmF2ZXJzYWwuaCBpbiBIZWFkZXJzICov
LAogCQkJCUU0N0NFQkUxMjcwOTkxNkQwMEI4RDhGNSAvKiBJbmxpbmVJdGVyYXRvclRleHRCb3gu
aCBpbiBIZWFkZXJzICovLAogCQkJCTZGQUFFNzEzMjZBMjgxNEIwMEUwNzUwMiAvKiBJbmxpbmVM
ZXZlbEJveC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNkYwQ0Q2OTUyMjlFRDMyNzAwQzU5OTRFIC8q
IElubGluZUxpbmUuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL1Bvc2l0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Qb3NpdGlvbi5jcHAKaW5kZXgg
MzI2NTYzZDUwODVjY2UwNDM0Yjc3NTU4NjI0OGE0YzUzYmZmYmMyYS4uMmMzMGRjMzI2N2YzZGY3
NzI5NTE0MjQ2MzllYzMzNWVlNjZhZGY1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L1Bvc2l0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUG9zaXRpb24uY3BwCkBAIC0z
Nyw2ICszNyw3IEBACiAjaW5jbHVkZSAiSFRNTFBhcnNlcklkaW9tcy5oIgogI2luY2x1ZGUgIkhU
TUxUYWJsZUVsZW1lbnQuaCIKICNpbmNsdWRlICJJbmxpbmVJdGVyYXRvckxpbmUuaCIKKyNpbmNs
dWRlICJJbmxpbmVJdGVyYXRvckxvZ2ljYWxPcmRlclRyYXZlcnNhbC5oIgogI2luY2x1ZGUgIklu
bGluZUl0ZXJhdG9yVGV4dEJveC5oIgogI2luY2x1ZGUgIklubGluZVJ1bkFuZE9mZnNldC5oIgog
I2luY2x1ZGUgIkxlZ2FjeUlubGluZVRleHRCb3guaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHAKaW5kZXggYzVlODViMTg4ZDhkOGE2N2FkYjM1
ZjM4NGE5YmJiYzExMTA2ZTEyNC4uOWRiYTIxODJhZjQ5MmEzODVmMzY5OWUwZDhmM2M2OTBlNDM2
NjdiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29t
bWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFu
ZC5jcHAKQEAgLTQ4LDYgKzQ4LDcgQEAKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRl
ICJIVE1MU3BhbkVsZW1lbnQuaCIKICNpbmNsdWRlICJJbmxpbmVJdGVyYXRvckJveC5oIgorI2lu
Y2x1ZGUgIklubGluZUl0ZXJhdG9yTG9naWNhbE9yZGVyVHJhdmVyc2FsLmgiCiAjaW5jbHVkZSAi
SW5zZXJ0SW50b1RleHROb2RlQ29tbWFuZC5oIgogI2luY2x1ZGUgIkluc2VydExpbmVCcmVha0Nv
bW1hbmQuaCIKICNpbmNsdWRlICJJbnNlcnROb2RlQmVmb3JlQ29tbWFuZC5oIgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuaCBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmgKaW5kZXggZWYyM2FkZTBhYzE2MGIwNjdhYjk1NzdjNDJm
ZGJhOGNkMjZhOTFjNi4uYWI3N2Y0MjA2ZWJhMDQzNTJmMGQ1MGZlMTIyYjE3ZWUxZTRiOGMxYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5oCkBAIC0yNyw2ICsyNyw3IEBACiAK
ICNpbmNsdWRlICJDaGFyYWN0ZXJSYW5nZS5oIgogI2luY2x1ZGUgIkZpbmRPcHRpb25zLmgiCisj
aW5jbHVkZSAiSW5saW5lSXRlcmF0b3JMb2dpY2FsT3JkZXJUcmF2ZXJzYWwuaCIKICNpbmNsdWRl
ICJJbmxpbmVJdGVyYXRvclRleHRCb3guaCIKICNpbmNsdWRlICJTaW1wbGVSYW5nZS5oIgogI2lu
Y2x1ZGUgIlRleHRJdGVyYXRvckJlaGF2aW9yLmgiCkBAIC0xNTEsMTEgKzE1MiwxMSBAQCBwcml2
YXRlOgogICAgIC8vIFVzZWQgd2hlbiB0aGVyZSBpcyBzdGlsbCBzb21lIHBlbmRpbmcgdGV4dCBm
cm9tIHRoZSBjdXJyZW50IG5vZGU7IHdoZW4gdGhlc2UgYXJlIGZhbHNlIGFuZCBudWxsLCB3ZSBn
byBiYWNrIHRvIG5vcm1hbCBpdGVyYXRpbmcuCiAgICAgTm9kZSogbV9ub2RlRm9yQWRkaXRpb25h
bE5ld2xpbmUgeyBudWxscHRyIH07CiAgICAgSW5saW5lSXRlcmF0b3I6OlRleHRCb3hJdGVyYXRv
ciBtX3RleHRSdW47Ci0gICAgSW5saW5lSXRlcmF0b3I6OkxvZ2ljYWxPcmRlckNhY2hlIG1fdGV4
dFJ1bkxvZ2ljYWxPcmRlckNhY2hlOworICAgIElubGluZUl0ZXJhdG9yOjpUZXh0TG9naWNhbE9y
ZGVyQ2FjaGUgbV90ZXh0UnVuTG9naWNhbE9yZGVyQ2FjaGU7CiAKICAgICAvLyBVc2VkIHdoZW4g
aXRlcmF0aW5nIG92ZXIgOmZpcnN0LWxldHRlciB0ZXh0IHRvIHNhdmUgcG9pbnRlciB0byByZW1h
aW5pbmcgdGV4dCBib3guCiAgICAgSW5saW5lSXRlcmF0b3I6OlRleHRCb3hJdGVyYXRvciBtX3Jl
bWFpbmluZ1RleHRSdW47Ci0gICAgSW5saW5lSXRlcmF0b3I6OkxvZ2ljYWxPcmRlckNhY2hlIG1f
cmVtYWluaW5nVGV4dFJ1bkxvZ2ljYWxPcmRlckNhY2hlOworICAgIElubGluZUl0ZXJhdG9yOjpU
ZXh0TG9naWNhbE9yZGVyQ2FjaGUgbV9yZW1haW5pbmdUZXh0UnVuTG9naWNhbE9yZGVyQ2FjaGU7
CiAKICAgICAvLyBVc2VkIHRvIHBvaW50IHRvIFJlbmRlclRleHQgb2JqZWN0IGZvciA6Zmlyc3Qt
bGV0dGVyLgogICAgIFJlbmRlclRleHQqIG1fZmlyc3RMZXR0ZXJUZXh0IHsgbnVsbHB0ciB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlUG9zaXRpb24uY3BwIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlUG9zaXRpb24uY3BwCmluZGV4IDI0ZGE1NWIz
YjQxNjFlOTNlZWZlNTIyNmUzN2U2ODkxMDI4NWZiMDkuLjJjM2UwNzhhMzJhMmZlZjIxZGE0ZmVj
ZjlkZGFkYjcxNDJhZWYzMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlz
aWJsZVBvc2l0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVQb3Np
dGlvbi5jcHAKQEAgLTEyMiw2ICsxMjIsOCBAQCBQb3NpdGlvbiBWaXNpYmxlUG9zaXRpb246Omxl
ZnRWaXN1YWxseURpc3RpbmN0Q2FuZGlkYXRlKCkgY29uc3QKICAgICBQb3NpdGlvbiBkb3duc3Ry
ZWFtU3RhcnQgPSBwLmRvd25zdHJlYW0oKTsKICAgICBUZXh0RGlyZWN0aW9uIHByaW1hcnlEaXJl
Y3Rpb24gPSBwLnByaW1hcnlEaXJlY3Rpb24oKTsKIAorICAgIElubGluZUl0ZXJhdG9yOjpMaW5l
TG9naWNhbE9yZGVyQ2FjaGUgb3JkZXJDYWNoZTsKKwogICAgIHdoaWxlICh0cnVlKSB7CiAgICAg
ICAgIGF1dG8gW3J1biwgb2Zmc2V0XSA9IHAuaW5saW5lUnVuQW5kT2Zmc2V0KG1fYWZmaW5pdHks
IHByaW1hcnlEaXJlY3Rpb24pOwogICAgICAgICBpZiAoIXJ1bikKQEAgLTE3NCw3ICsxNzYsOSBA
QCBQb3NpdGlvbiBWaXNpYmxlUG9zaXRpb246OmxlZnRWaXN1YWxseURpc3RpbmN0Q2FuZGlkYXRl
KCkgY29uc3QKIAogICAgICAgICAgICAgaWYgKHJ1bi0+ZGlyZWN0aW9uKCkgPT0gcHJpbWFyeURp
cmVjdGlvbikgewogICAgICAgICAgICAgICAgIGlmICghcHJldmlvdXNSdW4pIHsKLSAgICAgICAg
ICAgICAgICAgICAgYXV0byBsb2dpY2FsU3RhcnQgPSAocHJpbWFyeURpcmVjdGlvbiA9PSBUZXh0
RGlyZWN0aW9uOjpMVFIpID8gcnVuLT5saW5lKCktPmxvZ2ljYWxTdGFydFJ1bldpdGhOb2RlKCkg
OiBydW4tPmxpbmUoKS0+bG9naWNhbEVuZFJ1bldpdGhOb2RlKCk7CisgICAgICAgICAgICAgICAg
ICAgIGF1dG8gbG9naWNhbFN0YXJ0ID0gcHJpbWFyeURpcmVjdGlvbiA9PSBUZXh0RGlyZWN0aW9u
OjpMVFIKKyAgICAgICAgICAgICAgICAgICAgICAgID8gSW5saW5lSXRlcmF0b3I6OmZpcnN0TGVh
Zk9uTGluZUluTG9naWNhbE9yZGVyV2l0aE5vZGUocnVuLT5saW5lKCksIG9yZGVyQ2FjaGUpCisg
ICAgICAgICAgICAgICAgICAgICAgICA6IElubGluZUl0ZXJhdG9yOjpsYXN0TGVhZk9uTGluZUlu
TG9naWNhbE9yZGVyV2l0aE5vZGUocnVuLT5saW5lKCksIG9yZGVyQ2FjaGUpOwogICAgICAgICAg
ICAgICAgICAgICBpZiAobG9naWNhbFN0YXJ0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBy
dW4gPSBsb2dpY2FsU3RhcnQ7CiAgICAgICAgICAgICAgICAgICAgICAgICByZW5kZXJlciA9ICZy
dW4tPnJlbmRlcmVyKCk7CkBAIC0yODQsNiArMjg4LDggQEAgUG9zaXRpb24gVmlzaWJsZVBvc2l0
aW9uOjpyaWdodFZpc3VhbGx5RGlzdGluY3RDYW5kaWRhdGUoKSBjb25zdAogICAgIFBvc2l0aW9u
IGRvd25zdHJlYW1TdGFydCA9IHAuZG93bnN0cmVhbSgpOwogICAgIFRleHREaXJlY3Rpb24gcHJp
bWFyeURpcmVjdGlvbiA9IHAucHJpbWFyeURpcmVjdGlvbigpOwogCisgICAgSW5saW5lSXRlcmF0
b3I6OkxpbmVMb2dpY2FsT3JkZXJDYWNoZSBvcmRlckNhY2hlOworCiAgICAgd2hpbGUgKHRydWUp
IHsKICAgICAgICAgYXV0byBbcnVuLCBvZmZzZXRdID0gcC5pbmxpbmVSdW5BbmRPZmZzZXQobV9h
ZmZpbml0eSwgcHJpbWFyeURpcmVjdGlvbik7CiAgICAgICAgIGlmICghcnVuKQpAQCAtMzM2LDcg
KzM0MiwxMCBAQCBQb3NpdGlvbiBWaXNpYmxlUG9zaXRpb246OnJpZ2h0VmlzdWFsbHlEaXN0aW5j
dENhbmRpZGF0ZSgpIGNvbnN0CiAKICAgICAgICAgICAgIGlmIChydW4tPmRpcmVjdGlvbigpID09
IHByaW1hcnlEaXJlY3Rpb24pIHsKICAgICAgICAgICAgICAgICBpZiAoIW5leHRSdW4pIHsKLSAg
ICAgICAgICAgICAgICAgICAgYXV0byBsb2dpY2FsRW5kID0gcHJpbWFyeURpcmVjdGlvbiA9PSBU
ZXh0RGlyZWN0aW9uOjpMVFIgPyBydW4tPmxpbmUoKS0+bG9naWNhbEVuZFJ1bldpdGhOb2RlKCkg
OiBydW4tPmxpbmUoKS0+bG9naWNhbFN0YXJ0UnVuV2l0aE5vZGUoKTsKKyAgICAgICAgICAgICAg
ICAgICAgYXV0byBsb2dpY2FsRW5kID0gcHJpbWFyeURpcmVjdGlvbiA9PSBUZXh0RGlyZWN0aW9u
OjpMVFIKKyAgICAgICAgICAgICAgICAgICAgICAgID8gSW5saW5lSXRlcmF0b3I6Omxhc3RMZWFm
T25MaW5lSW5Mb2dpY2FsT3JkZXJXaXRoTm9kZShydW4tPmxpbmUoKSwgb3JkZXJDYWNoZSkKKyAg
ICAgICAgICAgICAgICAgICAgICAgIDogSW5saW5lSXRlcmF0b3I6OmZpcnN0TGVhZk9uTGluZUlu
TG9naWNhbE9yZGVyV2l0aE5vZGUocnVuLT5saW5lKCksIG9yZGVyQ2FjaGUpOworCiAgICAgICAg
ICAgICAgICAgICAgIGlmIChsb2dpY2FsRW5kKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBy
dW4gPSBsb2dpY2FsRW5kOwogICAgICAgICAgICAgICAgICAgICAgICAgcmVuZGVyZXIgPSAmcnVu
LT5yZW5kZXJlcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxl
VW5pdHMuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlVW5pdHMuY3BwCmluZGV4
IDkzODc4ODgzY2U4ZDVmNzA3YjczYjAyZDg3NjA0Yzg1Y2VkY2ZhZWIuLjZjMDI0YmUzNTQ4NTlm
MGNjNzcwZjExOWVmOWU3MWJiYTVkNGFkNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvVmlzaWJsZVVuaXRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2li
bGVVbml0cy5jcHAKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNp
bmNsdWRlICJJbmxpbmVJdGVyYXRvckJveC5oIgogI2luY2x1ZGUgIklubGluZUl0ZXJhdG9yTGlu
ZS5oIgorI2luY2x1ZGUgIklubGluZUl0ZXJhdG9yTG9naWNhbE9yZGVyVHJhdmVyc2FsLmgiCiAj
aW5jbHVkZSAiSW5saW5lUnVuQW5kT2Zmc2V0LmgiCiAjaW5jbHVkZSAiTm9kZVRyYXZlcnNhbC5o
IgogI2luY2x1ZGUgIlJhbmdlLmgiCkBAIC0xMjksNTAgKzEzMCw1MCBAQCBzdGF0aWMgYm9vbCBp
c1RleHRPckxpbmVCcmVha1J1bihJbmxpbmVJdGVyYXRvcjo6TGVhZkJveEl0ZXJhdG9yIHJ1bikK
ICAgICByZXR1cm4gcnVuICYmIChydW4tPmlzVGV4dCgpIHx8IHJ1bi0+cmVuZGVyZXIoKS5pc0JS
KCkpOwogfQogCi1zdGF0aWMgSW5saW5lSXRlcmF0b3I6OkxlYWZCb3hJdGVyYXRvciBwcmV2aW91
c1RleHRPckxpbmVCcmVha1J1bihJbmxpbmVJdGVyYXRvcjo6TGVhZkJveEl0ZXJhdG9yIHJ1bikK
K3N0YXRpYyBJbmxpbmVJdGVyYXRvcjo6TGVhZkJveEl0ZXJhdG9yIHByZXZpb3VzVGV4dE9yTGlu
ZUJyZWFrUnVuKElubGluZUl0ZXJhdG9yOjpMZWFmQm94SXRlcmF0b3IgcnVuLCBJbmxpbmVJdGVy
YXRvcjo6TGluZUxvZ2ljYWxPcmRlckNhY2hlJiBvcmRlckNhY2hlKQogewogICAgIHdoaWxlIChy
dW4pIHsKLSAgICAgICAgcnVuLnRyYXZlcnNlUHJldmlvdXNPbkxpbmVJbkxvZ2ljYWxPcmRlcigp
OworICAgICAgICBydW4gPSBJbmxpbmVJdGVyYXRvcjo6cHJldmlvdXNMZWFmT25MaW5lSW5Mb2dp
Y2FsT3JkZXIocnVuLCBvcmRlckNhY2hlKTsKICAgICAgICAgaWYgKGlzVGV4dE9yTGluZUJyZWFr
UnVuKHJ1bikpCiAgICAgICAgICAgICByZXR1cm4gcnVuOwogICAgIH0KICAgICByZXR1cm4geyB9
OwogfQogCi1zdGF0aWMgSW5saW5lSXRlcmF0b3I6OkxlYWZCb3hJdGVyYXRvciBuZXh0VGV4dE9y
TGluZUJyZWFrUnVuKElubGluZUl0ZXJhdG9yOjpMZWFmQm94SXRlcmF0b3IgcnVuKQorc3RhdGlj
IElubGluZUl0ZXJhdG9yOjpMZWFmQm94SXRlcmF0b3IgbmV4dFRleHRPckxpbmVCcmVha1J1bihJ
bmxpbmVJdGVyYXRvcjo6TGVhZkJveEl0ZXJhdG9yIHJ1biwgSW5saW5lSXRlcmF0b3I6OkxpbmVM
b2dpY2FsT3JkZXJDYWNoZSYgb3JkZXJDYWNoZSkKIHsKICAgICB3aGlsZSAocnVuKSB7Ci0gICAg
ICAgIHJ1bi50cmF2ZXJzZU5leHRPbkxpbmVJbkxvZ2ljYWxPcmRlcigpOworICAgICAgICBydW4g
PSBJbmxpbmVJdGVyYXRvcjo6bmV4dExlYWZPbkxpbmVJbkxvZ2ljYWxPcmRlcihydW4sIG9yZGVy
Q2FjaGUpOwogICAgICAgICBpZiAoaXNUZXh0T3JMaW5lQnJlYWtSdW4ocnVuKSkKICAgICAgICAg
ICAgIHJldHVybiBydW47CiAgICAgfQogICAgIHJldHVybiB7IH07CiB9CiAKLXN0YXRpYyBJbmxp
bmVJdGVyYXRvcjo6TGVhZkJveEl0ZXJhdG9yIHN0YXJ0VGV4dE9yTGluZUJyZWFrUnVuKElubGlu
ZUl0ZXJhdG9yOjpMaW5lSXRlcmF0b3IgbGluZSkKK3N0YXRpYyBJbmxpbmVJdGVyYXRvcjo6TGVh
ZkJveEl0ZXJhdG9yIHN0YXJ0VGV4dE9yTGluZUJyZWFrUnVuKElubGluZUl0ZXJhdG9yOjpMaW5l
SXRlcmF0b3IgbGluZSwgSW5saW5lSXRlcmF0b3I6OkxpbmVMb2dpY2FsT3JkZXJDYWNoZSYgb3Jk
ZXJDYWNoZSkKIHsKLSAgICBhdXRvIHJ1biA9IGxpbmUtPmxvZ2ljYWxTdGFydFJ1bigpOworICAg
IGF1dG8gcnVuID0gSW5saW5lSXRlcmF0b3I6OmZpcnN0TGVhZk9uTGluZUluTG9naWNhbE9yZGVy
KGxpbmUsIG9yZGVyQ2FjaGUpOwogICAgIGlmIChpc1RleHRPckxpbmVCcmVha1J1bihydW4pKQog
ICAgICAgICByZXR1cm4gcnVuOwotICAgIHJldHVybiBuZXh0VGV4dE9yTGluZUJyZWFrUnVuKHJ1
bik7CisgICAgcmV0dXJuIG5leHRUZXh0T3JMaW5lQnJlYWtSdW4ocnVuLCBvcmRlckNhY2hlKTsK
IH0KIAotc3RhdGljIElubGluZUl0ZXJhdG9yOjpMZWFmQm94SXRlcmF0b3IgZW5kVGV4dE9yTGlu
ZUJyZWFrUnVuKElubGluZUl0ZXJhdG9yOjpMaW5lSXRlcmF0b3IgbGluZSkKK3N0YXRpYyBJbmxp
bmVJdGVyYXRvcjo6TGVhZkJveEl0ZXJhdG9yIGVuZFRleHRPckxpbmVCcmVha1J1bihJbmxpbmVJ
dGVyYXRvcjo6TGluZUl0ZXJhdG9yIGxpbmUsIElubGluZUl0ZXJhdG9yOjpMaW5lTG9naWNhbE9y
ZGVyQ2FjaGUmIG9yZGVyQ2FjaGUpCiB7Ci0gICAgYXV0byBydW4gPSBsaW5lLT5sb2dpY2FsRW5k
UnVuKCk7CisgICAgYXV0byBydW4gPSBJbmxpbmVJdGVyYXRvcjo6bGFzdExlYWZPbkxpbmVJbkxv
Z2ljYWxPcmRlcihsaW5lLCBvcmRlckNhY2hlKTsKICAgICBpZiAoaXNUZXh0T3JMaW5lQnJlYWtS
dW4ocnVuKSkKICAgICAgICAgcmV0dXJuIHJ1bjsKLSAgICByZXR1cm4gcHJldmlvdXNUZXh0T3JM
aW5lQnJlYWtSdW4ocnVuKTsKKyAgICByZXR1cm4gcHJldmlvdXNUZXh0T3JMaW5lQnJlYWtSdW4o
cnVuLCBvcmRlckNhY2hlKTsKIH0KIAotc3RhdGljIGNvbnN0IElubGluZUl0ZXJhdG9yOjpMZWFm
Qm94SXRlcmF0b3IgbG9naWNhbGx5UHJldmlvdXNSdW4oY29uc3QgVmlzaWJsZVBvc2l0aW9uJiB2
aXNpYmxlUG9zaXRpb24sIElubGluZUl0ZXJhdG9yOjpMZWFmQm94SXRlcmF0b3Igc3RhcnRSdW4s
IGJvb2wmIHByZXZpb3VzQm94SW5EaWZmZXJlbnRMaW5lKQorc3RhdGljIGNvbnN0IElubGluZUl0
ZXJhdG9yOjpMZWFmQm94SXRlcmF0b3IgbG9naWNhbGx5UHJldmlvdXNSdW4oY29uc3QgVmlzaWJs
ZVBvc2l0aW9uJiB2aXNpYmxlUG9zaXRpb24sIElubGluZUl0ZXJhdG9yOjpMZWFmQm94SXRlcmF0
b3Igc3RhcnRSdW4sIElubGluZUl0ZXJhdG9yOjpMaW5lTG9naWNhbE9yZGVyQ2FjaGUmIG9yZGVy
Q2FjaGUsIGJvb2wmIHByZXZpb3VzQm94SW5EaWZmZXJlbnRMaW5lKQogewotICAgIGlmIChhdXRv
IHByZXZpb3VzUnVuID0gcHJldmlvdXNUZXh0T3JMaW5lQnJlYWtSdW4oc3RhcnRSdW4pKQorICAg
IGlmIChhdXRvIHByZXZpb3VzUnVuID0gcHJldmlvdXNUZXh0T3JMaW5lQnJlYWtSdW4oc3RhcnRS
dW4sIG9yZGVyQ2FjaGUpKQogICAgICAgICByZXR1cm4gcHJldmlvdXNSdW47CiAKICAgICBpZiAo
YXV0byBwcmV2aW91c0xpbmUgPSBzdGFydFJ1bi0+bGluZSgpLT5wcmV2aW91cygpKSB7CiAgICAg
ICAgIC8vIEZJWE1FOiBXaHkgaXNuJ3QgcHJldmlvdXNCb3hJbkRpZmZlcmVudExpbmUgc2V0IGhl
cmU/Ci0gICAgICAgIGlmIChhdXRvIHByZXZpb3VzUnVuID0gZW5kVGV4dE9yTGluZUJyZWFrUnVu
KHByZXZpb3VzTGluZSkpCisgICAgICAgIGlmIChhdXRvIHByZXZpb3VzUnVuID0gZW5kVGV4dE9y
TGluZUJyZWFrUnVuKHByZXZpb3VzTGluZSwgb3JkZXJDYWNoZSkpCiAgICAgICAgICAgICByZXR1
cm4gcHJldmlvdXNSdW47CiAgICAgfQogCkBAIC0xOTEsMjYgKzE5MiwyNiBAQCBzdGF0aWMgY29u
c3QgSW5saW5lSXRlcmF0b3I6OkxlYWZCb3hJdGVyYXRvciBsb2dpY2FsbHlQcmV2aW91c1J1bihj
b25zdCBWaXNpYmxlUAogICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgaWYgKHByZXZpb3Vz
TGluZSAhPSBzdGFydFJ1bi0+bGluZSgpKSB7Ci0gICAgICAgICAgICBpZiAoYXV0byBwcmV2aW91
c1J1biA9IGVuZFRleHRPckxpbmVCcmVha1J1bihwcmV2aW91c0xpbmUpKSB7CisgICAgICAgICAg
ICBpZiAoYXV0byBwcmV2aW91c1J1biA9IGVuZFRleHRPckxpbmVCcmVha1J1bihwcmV2aW91c0xp
bmUsIG9yZGVyQ2FjaGUpKSB7CiAgICAgICAgICAgICAgICAgcHJldmlvdXNCb3hJbkRpZmZlcmVu
dExpbmUgPSB0cnVlOwogICAgICAgICAgICAgICAgIHJldHVybiBwcmV2aW91c1J1bjsKICAgICAg
ICAgICAgIH0KICAgICAgICAgfQogCi0gICAgICAgIHN0YXJ0UnVuID0gcHJldmlvdXNMaW5lLT5s
b2dpY2FsU3RhcnRSdW4oKTsKKyAgICAgICAgc3RhcnRSdW4gPSBJbmxpbmVJdGVyYXRvcjo6Zmly
c3RMZWFmT25MaW5lSW5Mb2dpY2FsT3JkZXIocHJldmlvdXNMaW5lLCBvcmRlckNhY2hlKTsKICAg
ICB9CiAgICAgcmV0dXJuIHsgfTsKIH0KIAogCi1zdGF0aWMgY29uc3QgSW5saW5lSXRlcmF0b3I6
OkxlYWZCb3hJdGVyYXRvciBsb2dpY2FsbHlOZXh0UnVuKGNvbnN0IFZpc2libGVQb3NpdGlvbiYg
dmlzaWJsZVBvc2l0aW9uLCBJbmxpbmVJdGVyYXRvcjo6TGVhZkJveEl0ZXJhdG9yIHN0YXJ0UnVu
LCBib29sJiBuZXh0Qm94SW5EaWZmZXJlbnRMaW5lKQorc3RhdGljIGNvbnN0IElubGluZUl0ZXJh
dG9yOjpMZWFmQm94SXRlcmF0b3IgbG9naWNhbGx5TmV4dFJ1bihjb25zdCBWaXNpYmxlUG9zaXRp
b24mIHZpc2libGVQb3NpdGlvbiwgSW5saW5lSXRlcmF0b3I6OkxlYWZCb3hJdGVyYXRvciBzdGFy
dFJ1biwgSW5saW5lSXRlcmF0b3I6OkxpbmVMb2dpY2FsT3JkZXJDYWNoZSYgb3JkZXJDYWNoZSwg
Ym9vbCYgbmV4dEJveEluRGlmZmVyZW50TGluZSkKIHsKLSAgICBpZiAoYXV0byBuZXh0UnVuID0g
bmV4dFRleHRPckxpbmVCcmVha1J1bihzdGFydFJ1bikpCisgICAgaWYgKGF1dG8gbmV4dFJ1biA9
IG5leHRUZXh0T3JMaW5lQnJlYWtSdW4oc3RhcnRSdW4sIG9yZGVyQ2FjaGUpKQogICAgICAgICBy
ZXR1cm4gbmV4dFJ1bjsKIAogICAgIGlmIChhdXRvIG5leHRMaW5lID0gc3RhcnRSdW4tPmxpbmUo
KS0+bmV4dCgpKSB7CiAgICAgICAgIC8vIEZJWE1FOiBXaHkgaXNuJ3QgcHJldmlvdXNCb3hJbkRp
ZmZlcmVudExpbmUgc2V0IGhlcmU/Ci0gICAgICAgIGlmIChhdXRvIG5leHRSdW4gPSBzdGFydFRl
eHRPckxpbmVCcmVha1J1bihuZXh0TGluZSkpCisgICAgICAgIGlmIChhdXRvIG5leHRSdW4gPSBz
dGFydFRleHRPckxpbmVCcmVha1J1bihuZXh0TGluZSwgb3JkZXJDYWNoZSkpCiAgICAgICAgICAg
ICByZXR1cm4gbmV4dFJ1bjsKICAgICB9CiAKQEAgLTIyOSwxMyArMjMwLDEzIEBAIHN0YXRpYyBj
b25zdCBJbmxpbmVJdGVyYXRvcjo6TGVhZkJveEl0ZXJhdG9yIGxvZ2ljYWxseU5leHRSdW4oY29u
c3QgVmlzaWJsZVBvc2l0CiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBpZiAobmV4dExp
bmUgIT0gc3RhcnRSdW4tPmxpbmUoKSkgewotICAgICAgICAgICAgaWYgKGF1dG8gbmV4dFJ1biA9
IHN0YXJ0VGV4dE9yTGluZUJyZWFrUnVuKG5leHRMaW5lKSkgeworICAgICAgICAgICAgaWYgKGF1
dG8gbmV4dFJ1biA9IHN0YXJ0VGV4dE9yTGluZUJyZWFrUnVuKG5leHRMaW5lLCBvcmRlckNhY2hl
KSkgewogICAgICAgICAgICAgICAgIG5leHRCb3hJbkRpZmZlcmVudExpbmUgPSB0cnVlOwogICAg
ICAgICAgICAgICAgIHJldHVybiBuZXh0UnVuOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAK
LSAgICAgICAgc3RhcnRSdW4gPSBuZXh0TGluZS0+bG9naWNhbEVuZFJ1bigpOworICAgICAgICBz
dGFydFJ1biA9IElubGluZUl0ZXJhdG9yOjpsYXN0TGVhZk9uTGluZUluTG9naWNhbE9yZGVyV2l0
aE5vZGUobmV4dExpbmUsIG9yZGVyQ2FjaGUpOwogICAgIH0KICAgICByZXR1cm4geyB9OwogfQpA
QCAtMjQ1LDExICsyNDYsMTIgQEAgc3RhdGljIFVCcmVha0l0ZXJhdG9yKiB3b3JkQnJlYWtJdGVy
YXRvckZvck1pbk9mZnNldEJvdW5kYXJ5KGNvbnN0IFZpc2libGVQb3NpdGkKIHsKICAgICBwcmV2
aW91c1J1bkluRGlmZmVyZW50TGluZSA9IGZhbHNlOwogCi0gICAgYXV0byBwcmV2aW91c1J1biA9
IGxvZ2ljYWxseVByZXZpb3VzUnVuKHZpc2libGVQb3NpdGlvbiwgdGV4dFJ1biwgcHJldmlvdXNS
dW5JbkRpZmZlcmVudExpbmUpOworICAgIElubGluZUl0ZXJhdG9yOjpMaW5lTG9naWNhbE9yZGVy
Q2FjaGUgb3JkZXJDYWNoZTsKKyAgICBhdXRvIHByZXZpb3VzUnVuID0gbG9naWNhbGx5UHJldmlv
dXNSdW4odmlzaWJsZVBvc2l0aW9uLCB0ZXh0UnVuLCBvcmRlckNhY2hlLCBwcmV2aW91c1J1bklu
RGlmZmVyZW50TGluZSk7CiAgICAgd2hpbGUgKHByZXZpb3VzUnVuICYmICFwcmV2aW91c1J1bi0+
aXNUZXh0KCkpIHsKICAgICAgICAgQVNTRVJUKHByZXZpb3VzUnVuLT5yZW5kZXJlcigpLmlzQlIo
KSk7CiAgICAgICAgIHByZXZpb3VzUnVuSW5EaWZmZXJlbnRMaW5lID0gdHJ1ZTsKLSAgICAgICAg
cHJldmlvdXNSdW4gPSBsb2dpY2FsbHlQcmV2aW91c1J1bih2aXNpYmxlUG9zaXRpb24sIHByZXZp
b3VzUnVuLCBwcmV2aW91c1J1bkluRGlmZmVyZW50TGluZSk7CisgICAgICAgIHByZXZpb3VzUnVu
ID0gbG9naWNhbGx5UHJldmlvdXNSdW4odmlzaWJsZVBvc2l0aW9uLCBwcmV2aW91c1J1biwgb3Jk
ZXJDYWNoZSwgcHJldmlvdXNSdW5JbkRpZmZlcmVudExpbmUpOwogICAgIH0KIAogICAgIHN0cmlu
Zy5jbGVhcigpOwpAQCAtMjY5LDExICsyNzEsMTIgQEAgc3RhdGljIFVCcmVha0l0ZXJhdG9yKiB3
b3JkQnJlYWtJdGVyYXRvckZvck1heE9mZnNldEJvdW5kYXJ5KGNvbnN0IFZpc2libGVQb3NpdGkK
IHsKICAgICBuZXh0UnVuSW5EaWZmZXJlbnRMaW5lID0gZmFsc2U7CiAKLSAgICBhdXRvIG5leHRS
dW4gPSBsb2dpY2FsbHlOZXh0UnVuKHZpc2libGVQb3NpdGlvbiwgdGV4dFJ1biwgbmV4dFJ1bklu
RGlmZmVyZW50TGluZSk7CisgICAgSW5saW5lSXRlcmF0b3I6OkxpbmVMb2dpY2FsT3JkZXJDYWNo
ZSBvcmRlckNhY2hlOworICAgIGF1dG8gbmV4dFJ1biA9IGxvZ2ljYWxseU5leHRSdW4odmlzaWJs
ZVBvc2l0aW9uLCB0ZXh0UnVuLCBvcmRlckNhY2hlLCBuZXh0UnVuSW5EaWZmZXJlbnRMaW5lKTsK
ICAgICB3aGlsZSAobmV4dFJ1biAmJiAhbmV4dFJ1bi0+aXNUZXh0KCkpIHsKICAgICAgICAgQVNT
RVJUKG5leHRSdW4tPnJlbmRlcmVyKCkuaXNCUigpKTsKICAgICAgICAgbmV4dFJ1bkluRGlmZmVy
ZW50TGluZSA9IHRydWU7Ci0gICAgICAgIG5leHRSdW4gPSBsb2dpY2FsbHlOZXh0UnVuKHZpc2li
bGVQb3NpdGlvbiwgbmV4dFJ1biwgbmV4dFJ1bkluRGlmZmVyZW50TGluZSk7CisgICAgICAgIG5l
eHRSdW4gPSBsb2dpY2FsbHlOZXh0UnVuKHZpc2libGVQb3NpdGlvbiwgbmV4dFJ1biwgb3JkZXJD
YWNoZSwgbmV4dFJ1bkluRGlmZmVyZW50TGluZSk7CiAgICAgfQogCiAgICAgc3RyaW5nLmNsZWFy
KCk7CkBAIC03NDYsOCArNzQ5LDEwIEBAIHN0YXRpYyBWaXNpYmxlUG9zaXRpb24gc3RhcnRQb3Np
dGlvbkZvckxpbmUoY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBjLCBMaW5lRW5kcG9pCiAgICAgICAg
IHJldHVybiBWaXNpYmxlUG9zaXRpb24oKTsKICAgICB9CiAKKyAgICBJbmxpbmVJdGVyYXRvcjo6
TGluZUxvZ2ljYWxPcmRlckNhY2hlIG9yZGVyQ2FjaGU7CisKICAgICBOb2RlKiBzdGFydE5vZGUg
PSBudWxscHRyOwotICAgIGF1dG8gc3RhcnRSdW4gPSBtb2RlID09IFVzZUxvZ2ljYWxPcmRlcmlu
ZyA/IGxpbmUtPmxvZ2ljYWxTdGFydFJ1bldpdGhOb2RlKCkgOiBsaW5lLT5maXJzdFJ1bigpOwor
ICAgIGF1dG8gc3RhcnRSdW4gPSBtb2RlID09IFVzZUxvZ2ljYWxPcmRlcmluZyA/IElubGluZUl0
ZXJhdG9yOjpmaXJzdExlYWZPbkxpbmVJbkxvZ2ljYWxPcmRlcldpdGhOb2RlKGxpbmUsIG9yZGVy
Q2FjaGUpIDogbGluZS0+Zmlyc3RSdW4oKTsKICAgICAvLyBHZW5lcmF0ZWQgY29udGVudCAoZS5n
LiBsaXN0IG1hcmtlcnMgYW5kIENTUyA6YmVmb3JlIGFuZCA6YWZ0ZXIgcHNldWRvZWxlbWVudHMp
IGhhdmUgbm8gY29ycmVzcG9uZGluZyBET00gZWxlbWVudCwKICAgICAvLyBhbmQgc28gY2Fubm90
IGJlIHJlcHJlc2VudGVkIGJ5IGEgVmlzaWJsZVBvc2l0aW9uLiBVc2Ugd2hhdGV2ZXIgZm9sbG93
cyBpbnN0ZWFkLgogICAgIHdoaWxlICh0cnVlKSB7CkBAIC03NTksNyArNzY0LDcgQEAgc3RhdGlj
IFZpc2libGVQb3NpdGlvbiBzdGFydFBvc2l0aW9uRm9yTGluZShjb25zdCBWaXNpYmxlUG9zaXRp
b24mIGMsIExpbmVFbmRwb2kKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGlmIChtb2Rl
ID09IFVzZUxvZ2ljYWxPcmRlcmluZykKLSAgICAgICAgICAgIHN0YXJ0UnVuLnRyYXZlcnNlTmV4
dE9uTGluZUluTG9naWNhbE9yZGVyKCk7CisgICAgICAgICAgICBzdGFydFJ1biA9IElubGluZUl0
ZXJhdG9yOjpuZXh0TGVhZk9uTGluZUluTG9naWNhbE9yZGVyKHN0YXJ0UnVuLCBvcmRlckNhY2hl
KTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgc3RhcnRSdW4udHJhdmVyc2VOZXh0T25MaW5l
KCk7CiAgICAgfQpAQCAtODE2LDggKzgyMSwxMCBAQCBzdGF0aWMgVmlzaWJsZVBvc2l0aW9uIGVu
ZFBvc2l0aW9uRm9yTGluZShjb25zdCBWaXNpYmxlUG9zaXRpb24mIGMsIExpbmVFbmRwb2ludAog
ICAgICAgICByZXR1cm4gVmlzaWJsZVBvc2l0aW9uKCk7CiAgICAgfQogCisgICAgSW5saW5lSXRl
cmF0b3I6OkxpbmVMb2dpY2FsT3JkZXJDYWNoZSBvcmRlckNhY2hlOworCiAgICAgTm9kZSogZW5k
Tm9kZSA9IG51bGxwdHI7Ci0gICAgYXV0byBlbmRSdW4gPSBtb2RlID09IFVzZUxvZ2ljYWxPcmRl
cmluZyA/IGxpbmUtPmxvZ2ljYWxFbmRSdW5XaXRoTm9kZSgpIDogbGluZS0+bGFzdFJ1bigpOwor
ICAgIGF1dG8gZW5kUnVuID0gbW9kZSA9PSBVc2VMb2dpY2FsT3JkZXJpbmcgPyBJbmxpbmVJdGVy
YXRvcjo6bGFzdExlYWZPbkxpbmVJbkxvZ2ljYWxPcmRlcihsaW5lLCBvcmRlckNhY2hlKSA6IGxp
bmUtPmxhc3RSdW4oKTsKICAgICAvLyBHZW5lcmF0ZWQgY29udGVudCAoZS5nLiBsaXN0IG1hcmtl
cnMgYW5kIENTUyA6YmVmb3JlIGFuZCA6YWZ0ZXIgcHNldWRvZWxlbWVudHMpIGhhdmUgbm8gY29y
cmVzcG9uZGluZyBET00gZWxlbWVudCwKICAgICAvLyBhbmQgc28gY2Fubm90IGJlIHJlcHJlc2Vu
dGVkIGJ5IGEgVmlzaWJsZVBvc2l0aW9uLiBVc2Ugd2hhdGV2ZXIgcHJlY2VkZXMgaW5zdGVhZC4K
ICAgICB3aGlsZSAodHJ1ZSkgewpAQCAtODI5LDcgKzgzNiw3IEBAIHN0YXRpYyBWaXNpYmxlUG9z
aXRpb24gZW5kUG9zaXRpb25Gb3JMaW5lKGNvbnN0IFZpc2libGVQb3NpdGlvbiYgYywgTGluZUVu
ZHBvaW50CiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBpZiAobW9kZSA9PSBVc2VMb2dp
Y2FsT3JkZXJpbmcpCi0gICAgICAgICAgICBlbmRSdW4udHJhdmVyc2VQcmV2aW91c09uTGluZUlu
TG9naWNhbE9yZGVyKCk7CisgICAgICAgICAgICBlbmRSdW4gPSBJbmxpbmVJdGVyYXRvcjo6cHJl
dmlvdXNMZWFmT25MaW5lSW5Mb2dpY2FsT3JkZXIoZW5kUnVuLCBvcmRlckNhY2hlKTsKICAgICAg
ICAgZWxzZQogICAgICAgICAgICAgZW5kUnVuLnRyYXZlcnNlUHJldmlvdXNPbkxpbmUoKTsKICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vSW5saW5l
SXRlcmF0b3JCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0lubGlu
ZUl0ZXJhdG9yQm94LmNwcAppbmRleCA5MTYxMjIxZGQ5NTA1ZjAwMjYxYjhiODcxMGY4ZjA1MDU5
NDYyNmUwLi40YTBhNzVkZDYwNzk0MjdhODMzYWI3ZmU1NTc3YTE4YTk0ZmI5MjFhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vSW5saW5lSXRlcmF0b3JCb3gu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9JbmxpbmVJdGVyYXRv
ckJveC5jcHAKQEAgLTE0OCwyMiArMTQ4LDYgQEAgTGVhZkJveEl0ZXJhdG9yJiBMZWFmQm94SXRl
cmF0b3I6OnRyYXZlcnNlUHJldmlvdXNPbkxpbmVJZ25vcmluZ0xpbmVCcmVhaygpCiAgICAgcmV0
dXJuICp0aGlzOwogfQogCi1MZWFmQm94SXRlcmF0b3ImIExlYWZCb3hJdGVyYXRvcjo6dHJhdmVy
c2VOZXh0T25MaW5lSW5Mb2dpY2FsT3JkZXIoKQotewotICAgIFdURjo6c3dpdGNoT24obV9ib3gu
bV9wYXRoVmFyaWFudCwgW10oYXV0byYgcGF0aCkgewotICAgICAgICBwYXRoLnRyYXZlcnNlTmV4
dE9uTGluZUluTG9naWNhbE9yZGVyKCk7Ci0gICAgfSk7Ci0gICAgcmV0dXJuICp0aGlzOwotfQot
Ci1MZWFmQm94SXRlcmF0b3ImIExlYWZCb3hJdGVyYXRvcjo6dHJhdmVyc2VQcmV2aW91c09uTGlu
ZUluTG9naWNhbE9yZGVyKCkKLXsKLSAgICBXVEY6OnN3aXRjaE9uKG1fYm94Lm1fcGF0aFZhcmlh
bnQsIFtdKGF1dG8mIHBhdGgpIHsKLSAgICAgICAgcGF0aC50cmF2ZXJzZVByZXZpb3VzT25MaW5l
SW5Mb2dpY2FsT3JkZXIoKTsKLSAgICB9KTsKLSAgICByZXR1cm4gKnRoaXM7Ci19Ci0KIExlYWZC
b3hJdGVyYXRvciBib3hGb3IoY29uc3QgUmVuZGVyTGluZUJyZWFrJiByZW5kZXJlcikKIHsKICNp
ZiBFTkFCTEUoTEFZT1VUX0ZPUk1BVFRJTkdfQ09OVEVYVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9JbmxpbmVJdGVyYXRvckJveC5oIGIvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0lubGluZUl0ZXJhdG9yQm94LmgKaW5kZXggYjQ1YThl
ZTQyMTdjMGZiYzczZDJjMmZjMjNjNDU4MWJjNWJkYjA1MC4uNDgwYWZiODk5M2JkMjcxMmRiNmVh
ZGM5ZjU1MDlhZTI1MTk2NDYxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lu
dGVncmF0aW9uL0lubGluZUl0ZXJhdG9yQm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2ludGVncmF0aW9uL0lubGluZUl0ZXJhdG9yQm94LmgKQEAgLTEzMSw3ICsxMzEsNyBAQCBwdWJs
aWM6CiAgICAgYm9vbCBhdEVuZCgpIGNvbnN0OwogCiBwcm90ZWN0ZWQ6Ci0gICAgQm94SXRlcmF0
b3IoKSA6IG1fYm94KEJveExlZ2FjeVBhdGggeyBudWxscHRyLCB7IH0gfSkgeyB9OworICAgIEJv
eEl0ZXJhdG9yKCkgOiBtX2JveChCb3hMZWdhY3lQYXRoIHsgbnVsbHB0ciB9KSB7IH07CiAgICAg
Qm94SXRlcmF0b3IoQm94OjpQYXRoVmFyaWFudCYmKTsKICAgICBCb3hJdGVyYXRvcihjb25zdCBC
b3gmKTsKIApAQCAtMTQ4LDggKzE0OCw2IEBAIHB1YmxpYzoKICAgICBMZWFmQm94SXRlcmF0b3Im
IHRyYXZlcnNlUHJldmlvdXNPbkxpbmUoKTsKICAgICBMZWFmQm94SXRlcmF0b3ImIHRyYXZlcnNl
TmV4dE9uTGluZUlnbm9yaW5nTGluZUJyZWFrKCk7CiAgICAgTGVhZkJveEl0ZXJhdG9yJiB0cmF2
ZXJzZVByZXZpb3VzT25MaW5lSWdub3JpbmdMaW5lQnJlYWsoKTsKLSAgICBMZWFmQm94SXRlcmF0
b3ImIHRyYXZlcnNlTmV4dE9uTGluZUluTG9naWNhbE9yZGVyKCk7Ci0gICAgTGVhZkJveEl0ZXJh
dG9yJiB0cmF2ZXJzZVByZXZpb3VzT25MaW5lSW5Mb2dpY2FsT3JkZXIoKTsKIH07CiAKIExlYWZC
b3hJdGVyYXRvciBib3hGb3IoY29uc3QgUmVuZGVyTGluZUJyZWFrJik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vSW5saW5lSXRlcmF0b3JCb3hMZWdhY3lQ
YXRoLmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vSW5saW5lSXRlcmF0b3JC
b3hMZWdhY3lQYXRoLmgKaW5kZXggM2JlNGQzZGNhYzNiOTM5YWVkNjY4YTMzNTMxZmI2N2RmMjM5
OTNmYi4uMTUxYThkYTk0OGYwNDg1N2Q2ODQ2NWYyYWJkMDUyMzQ2ZTg2NTBmOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0lubGluZUl0ZXJhdG9yQm94TGVn
YWN5UGF0aC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9JbmxpbmVJ
dGVyYXRvckJveExlZ2FjeVBhdGguaApAQCAtMzcsMjIgKzM3LDEwIEBAIG5hbWVzcGFjZSBJbmxp
bmVJdGVyYXRvciB7CiAKIGNsYXNzIEJveExlZ2FjeVBhdGggewogcHVibGljOgotICAgIEJveExl
Z2FjeVBhdGgoY29uc3QgTGVnYWN5SW5saW5lQm94KiBpbmxpbmVCb3gsIFZlY3Rvcjxjb25zdCBM
ZWdhY3lJbmxpbmVCb3gqPiYmIHNvcnRlZElubGluZUJveGVzID0geyB9LCBzaXplX3Qgc29ydGVk
SW5saW5lQm94SW5kZXggPSAwKQorICAgIEJveExlZ2FjeVBhdGgoY29uc3QgTGVnYWN5SW5saW5l
Qm94KiBpbmxpbmVCb3gpCiAgICAgICAgIDogbV9pbmxpbmVCb3goaW5saW5lQm94KQotICAgICAg
ICAsIG1fbG9naWNhbE9yZGVyQ2FjaGUoV1RGTW92ZShzb3J0ZWRJbmxpbmVCb3hlcykpCi0gICAg
ICAgICwgbV9sb2dpY2FsT3JkZXJDYWNoZUluZGV4KHNvcnRlZElubGluZUJveEluZGV4KQogICAg
IHsgfQogCi0gICAgZW51bSBjbGFzcyBMb2dpY2FsT3JkZXIgeyBTdGFydCwgRW5kIH07Ci0gICAg
Qm94TGVnYWN5UGF0aChjb25zdCBMZWdhY3lSb290SW5saW5lQm94JiByb290LCBMb2dpY2FsT3Jk
ZXIgb3JkZXIpCi0gICAgICAgIDogbV9sb2dpY2FsT3JkZXJDYWNoZShpbmxpbmVCb3hlc0luTG9n
aWNhbE9yZGVyKHJvb3QpKQotICAgIHsKLSAgICAgICAgaWYgKCFtX2xvZ2ljYWxPcmRlckNhY2hl
LmlzRW1wdHkoKSkgewotICAgICAgICAgICAgbV9sb2dpY2FsT3JkZXJDYWNoZUluZGV4ID0gb3Jk
ZXIgPT0gTG9naWNhbE9yZGVyOjpTdGFydCA/IDAgOiBtX2xvZ2ljYWxPcmRlckNhY2hlLnNpemUo
KSAtIDE7Ci0gICAgICAgICAgICBtX2lubGluZUJveCA9IG1fbG9naWNhbE9yZGVyQ2FjaGVbbV9s
b2dpY2FsT3JkZXJDYWNoZUluZGV4XTsKLSAgICAgICAgfQotICAgIH0KLQogICAgIGJvb2wgaXNU
ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9pbmxpbmVCb3gtPmlzSW5saW5lVGV4dEJveCgpOyB9CiAg
ICAgYm9vbCBpc0lubGluZUJveCgpIGNvbnN0IHsgcmV0dXJuIG1faW5saW5lQm94LT5pc0lubGlu
ZUZsb3dCb3goKTsgfQogICAgIGJvb2wgaXNSb290SW5saW5lQm94KCkgY29uc3QgeyByZXR1cm4g
bV9pbmxpbmVCb3gtPmlzUm9vdElubGluZUJveCgpOyB9CkBAIC05OCwxOCArODYsNiBAQCBwdWJs
aWM6CiAgICAgICAgIG1faW5saW5lQm94ID0gbV9pbmxpbmVCb3gtPnByZXZpb3VzTGVhZk9uTGlu
ZSgpOwogICAgIH0KIAotICAgIHZvaWQgdHJhdmVyc2VOZXh0T25MaW5lSW5Mb2dpY2FsT3JkZXIo
KQotICAgIHsKLSAgICAgICAgaW5pdGlhbGl6ZUxvZ2ljYWxPcmRlckNhY2hlRm9yTGluZSgpOwot
ICAgICAgICB0cmF2ZXJzZU5leHRJbmxpbmVCb3hJbkNhY2hlT3JkZXIoKTsKLSAgICB9Ci0KLSAg
ICB2b2lkIHRyYXZlcnNlUHJldmlvdXNPbkxpbmVJbkxvZ2ljYWxPcmRlcigpCi0gICAgewotICAg
ICAgICBpbml0aWFsaXplTG9naWNhbE9yZGVyQ2FjaGVGb3JMaW5lKCk7Ci0gICAgICAgIHRyYXZl
cnNlUHJldmlvdXNJbmxpbmVCb3hJbkNhY2hlT3JkZXIoKTsKLSAgICB9Ci0KICAgICB2b2lkIHRy
YXZlcnNlTmV4dElubGluZUJveCgpCiAgICAgewogICAgICAgICBtX2lubGluZUJveCA9IGlubGlu
ZUZsb3dCb3goKS0+bmV4dExpbmVCb3goKTsKQEAgLTEzMSw0OSArMTA3LDggQEAgcHJpdmF0ZToK
ICAgICBjb25zdCBMZWdhY3lJbmxpbmVUZXh0Qm94KiBpbmxpbmVUZXh0Qm94KCkgY29uc3QgeyBy
ZXR1cm4gZG93bmNhc3Q8TGVnYWN5SW5saW5lVGV4dEJveD4obV9pbmxpbmVCb3gpOyB9CiAgICAg
Y29uc3QgTGVnYWN5SW5saW5lRmxvd0JveCogaW5saW5lRmxvd0JveCgpIGNvbnN0IHsgcmV0dXJu
IGRvd25jYXN0PExlZ2FjeUlubGluZUZsb3dCb3g+KG1faW5saW5lQm94KTsgfQogCi0gICAgc3Rh
dGljIFZlY3Rvcjxjb25zdCBMZWdhY3lJbmxpbmVCb3gqPiBpbmxpbmVCb3hlc0luTG9naWNhbE9y
ZGVyKGNvbnN0IExlZ2FjeVJvb3RJbmxpbmVCb3gmIHJvb3QpCi0gICAgewotICAgICAgICBWZWN0
b3I8TGVnYWN5SW5saW5lQm94Kj4gaW5saW5lQm94ZXM7Ci0gICAgICAgIHJvb3QuY29sbGVjdExl
YWZCb3hlc0luTG9naWNhbE9yZGVyKGlubGluZUJveGVzKTsKLSAgICAgICAgcmV0dXJuIHJlaW50
ZXJwcmV0X2Nhc3Q8VmVjdG9yPGNvbnN0IExlZ2FjeUlubGluZUJveCo+Jj4oaW5saW5lQm94ZXMp
OwotICAgIH0KLSAgICB2b2lkIGluaXRpYWxpemVMb2dpY2FsT3JkZXJDYWNoZUZvckxpbmUoKQot
ICAgIHsKLSAgICAgICAgaWYgKCFtX2lubGluZUJveCB8fCAhbV9sb2dpY2FsT3JkZXJDYWNoZS5p
c0VtcHR5KCkpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIG1fbG9naWNhbE9yZGVyQ2Fj
aGUgPSBpbmxpbmVCb3hlc0luTG9naWNhbE9yZGVyKG1faW5saW5lQm94LT5yb290KCkpOwotICAg
ICAgICBmb3IgKG1fbG9naWNhbE9yZGVyQ2FjaGVJbmRleCA9IDA7IG1fbG9naWNhbE9yZGVyQ2Fj
aGVJbmRleCA8IG1fbG9naWNhbE9yZGVyQ2FjaGUuc2l6ZSgpOyArK21fbG9naWNhbE9yZGVyQ2Fj
aGVJbmRleCkgewotICAgICAgICAgICAgaWYgKG1fbG9naWNhbE9yZGVyQ2FjaGVbbV9sb2dpY2Fs
T3JkZXJDYWNoZUluZGV4XSA9PSBtX2lubGluZUJveCkKLSAgICAgICAgICAgICAgICByZXR1cm47
Ci0gICAgICAgIH0KLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgfQotCi0gICAg
dm9pZCB0cmF2ZXJzZU5leHRJbmxpbmVCb3hJbkNhY2hlT3JkZXIoKTsKLSAgICB2b2lkIHRyYXZl
cnNlUHJldmlvdXNJbmxpbmVCb3hJbkNhY2hlT3JkZXIoKTsKLQogICAgIGNvbnN0IExlZ2FjeUlu
bGluZUJveCogbV9pbmxpbmVCb3ggeyBudWxscHRyIH07Ci0gICAgUmVmQ291bnRlZEFycmF5PGNv
bnN0IExlZ2FjeUlubGluZUJveCo+IG1fbG9naWNhbE9yZGVyQ2FjaGU7Ci0gICAgc2l6ZV90IG1f
bG9naWNhbE9yZGVyQ2FjaGVJbmRleCB7IDAgfTsKIH07CiAKLQotaW5saW5lIHZvaWQgQm94TGVn
YWN5UGF0aDo6dHJhdmVyc2VOZXh0SW5saW5lQm94SW5DYWNoZU9yZGVyKCkKLXsKLSAgICBBU1NF
UlQoIW1fbG9naWNhbE9yZGVyQ2FjaGUuaXNFbXB0eSgpKTsKLSAgICArK21fbG9naWNhbE9yZGVy
Q2FjaGVJbmRleDsKLSAgICBtX2lubGluZUJveCA9IG1fbG9naWNhbE9yZGVyQ2FjaGVJbmRleCA8
IG1fbG9naWNhbE9yZGVyQ2FjaGUuc2l6ZSgpID8gbV9sb2dpY2FsT3JkZXJDYWNoZVttX2xvZ2lj
YWxPcmRlckNhY2hlSW5kZXhdIDogbnVsbHB0cjsKLX0KLQotaW5saW5lIHZvaWQgQm94TGVnYWN5
UGF0aDo6dHJhdmVyc2VQcmV2aW91c0lubGluZUJveEluQ2FjaGVPcmRlcigpCi17Ci0gICAgQVNT
RVJUKCFtX2xvZ2ljYWxPcmRlckNhY2hlLmlzRW1wdHkoKSk7Ci0gICAgaWYgKCFtX2xvZ2ljYWxP
cmRlckNhY2hlSW5kZXgpIHsKLSAgICAgICAgbV9pbmxpbmVCb3ggPSBudWxscHRyOwotICAgICAg
ICByZXR1cm47Ci0gICAgfQotICAgIG1faW5saW5lQm94ID0gbV9sb2dpY2FsT3JkZXJDYWNoZVst
LW1fbG9naWNhbE9yZGVyQ2FjaGVJbmRleF07Ci19Ci0KIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9JbmxpbmVJdGVyYXRvckJveE1vZGVyblBhdGgu
aCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9JbmxpbmVJdGVyYXRvckJveE1v
ZGVyblBhdGguaAppbmRleCA2MTU0M2IwY2Y0YzQ4YjBhYmQ5ZDJjNDI1ZTk0ZTE3YWRmZjQ2MDUy
Li5kN2RjOTRjYzg2ODdkZjNmMmMwNjQ2MzhjZWVmNTJlZWMxOWVlYTRiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vSW5saW5lSXRlcmF0b3JCb3hNb2Rlcm5Q
YXRoLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0lubGluZUl0ZXJh
dG9yQm94TW9kZXJuUGF0aC5oCkBAIC0xNjAsMTYgKzE2MCw2IEBAIHB1YmxpYzoKICAgICAgICAg
ICAgIHNldEF0RW5kKCk7CiAgICAgfQogCi0gICAgdm9pZCB0cmF2ZXJzZU5leHRPbkxpbmVJbkxv
Z2ljYWxPcmRlcigpCi0gICAgewotICAgICAgICB0cmF2ZXJzZU5leHRPbkxpbmUoKTsKLSAgICB9
Ci0KLSAgICB2b2lkIHRyYXZlcnNlUHJldmlvdXNPbkxpbmVJbkxvZ2ljYWxPcmRlcigpCi0gICAg
ewotICAgICAgICB0cmF2ZXJzZVByZXZpb3VzT25MaW5lKCk7Ci0gICAgfQotCiAgICAgdm9pZCB0
cmF2ZXJzZU5leHRJbmxpbmVCb3goKQogICAgIHsKICAgICAgICAgQVNTRVJUKGJveCgpLmlzSW5s
aW5lQm94KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9u
L0lubGluZUl0ZXJhdG9yTGluZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRp
b24vSW5saW5lSXRlcmF0b3JMaW5lLmNwcAppbmRleCBmNGViNmE2OGZkM2RiYjgxNTczMjAzZjli
NjA3ZjRkMWY0NThhYzU2Li44ZmM2NDU0ZjM2MTIwYmNlZmJmMTM4NTkzMzhmNmE5YjM0YTZhN2Iw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vSW5saW5lSXRl
cmF0b3JMaW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vSW5s
aW5lSXRlcmF0b3JMaW5lLmNwcApAQCAtMTE1LDM4ICsxMTUsNiBAQCBMZWFmQm94SXRlcmF0b3Ig
TGluZTo6bGFzdFJ1bigpIGNvbnN0CiAgICAgfSk7CiB9CiAKLUxlYWZCb3hJdGVyYXRvciBMaW5l
Ojpsb2dpY2FsU3RhcnRSdW4oKSBjb25zdAotewotICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKG1f
cGF0aFZhcmlhbnQsIFtdKGF1dG8mIHBhdGgpIC0+IExlYWZCb3hJdGVyYXRvciB7Ci0gICAgICAg
IHJldHVybiB7IHBhdGgubG9naWNhbFN0YXJ0UnVuKCkgfTsKLSAgICB9KTsKLX0KLQotTGVhZkJv
eEl0ZXJhdG9yIExpbmU6OmxvZ2ljYWxFbmRSdW4oKSBjb25zdAotewotICAgIHJldHVybiBXVEY6
OnN3aXRjaE9uKG1fcGF0aFZhcmlhbnQsIFtdKGF1dG8mIHBhdGgpIC0+IExlYWZCb3hJdGVyYXRv
ciB7Ci0gICAgICAgIHJldHVybiB7IHBhdGgubG9naWNhbEVuZFJ1bigpIH07Ci0gICAgfSk7Ci19
Ci0KLUxlYWZCb3hJdGVyYXRvciBMaW5lOjpsb2dpY2FsU3RhcnRSdW5XaXRoTm9kZSgpIGNvbnN0
Ci17Ci0gICAgZm9yIChhdXRvIHJ1biA9IGxvZ2ljYWxTdGFydFJ1bigpOyBydW47IHJ1bi50cmF2
ZXJzZU5leHRPbkxpbmVJbkxvZ2ljYWxPcmRlcigpKSB7Ci0gICAgICAgIGlmIChydW4tPnJlbmRl
cmVyKCkubm9kZSgpKQotICAgICAgICAgICAgcmV0dXJuIHJ1bjsKLSAgICB9Ci0gICAgcmV0dXJu
IHsgfTsKLX0KLQotTGVhZkJveEl0ZXJhdG9yIExpbmU6OmxvZ2ljYWxFbmRSdW5XaXRoTm9kZSgp
IGNvbnN0Ci17Ci0gICAgZm9yIChhdXRvIHJ1biA9IGxvZ2ljYWxFbmRSdW4oKTsgcnVuOyBydW4u
dHJhdmVyc2VQcmV2aW91c09uTGluZUluTG9naWNhbE9yZGVyKCkpIHsKLSAgICAgICAgaWYgKHJ1
bi0+cmVuZGVyZXIoKS5ub2RlKCkpCi0gICAgICAgICAgICByZXR1cm4gcnVuOwotICAgIH0KLSAg
ICByZXR1cm4geyB9OwotfQotCiBMZWFmQm94SXRlcmF0b3IgTGluZTo6Y2xvc2VzdFJ1bkZvclBv
aW50KGNvbnN0IEludFBvaW50JiBwb2ludEluQ29udGVudHMsIGJvb2wgZWRpdGFibGVPbmx5KSBj
b25zdAogewogICAgIHJldHVybiBjbG9zZXN0UnVuRm9yTG9naWNhbExlZnRQb3NpdGlvbihpc0hv
cml6b250YWwoKSA/IHBvaW50SW5Db250ZW50cy54KCkgOiBwb2ludEluQ29udGVudHMueSgpLCBl
ZGl0YWJsZU9ubHkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0
aW9uL0lubGluZUl0ZXJhdG9yTGluZS5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0
aW9uL0lubGluZUl0ZXJhdG9yTGluZS5oCmluZGV4IDJkMzI4OTNlNzVkN2I3YmIxNmY3ZDRkYWFh
NDQ5ZTBmNTk5ZjEwNDAuLjY3ZDYzNWEzNmIwZWQyYWMyYzlmOWEwNWFkOTY1MTU2ODg1MDYxMTMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9JbmxpbmVJdGVy
YXRvckxpbmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vSW5saW5l
SXRlcmF0b3JMaW5lLmgKQEAgLTg5LDExICs4OSw2IEBAIHB1YmxpYzoKIAogICAgIExlYWZCb3hJ
dGVyYXRvciBjbG9zZXN0UnVuRm9yUG9pbnQoY29uc3QgSW50UG9pbnQmIHBvaW50SW5Db250ZW50
cywgYm9vbCBlZGl0YWJsZU9ubHkpIGNvbnN0OwogICAgIExlYWZCb3hJdGVyYXRvciBjbG9zZXN0
UnVuRm9yTG9naWNhbExlZnRQb3NpdGlvbihpbnQgcG9zaXRpb24sIGJvb2wgZWRpdGFibGVPbmx5
ID0gZmFsc2UpIGNvbnN0OwotCi0gICAgTGVhZkJveEl0ZXJhdG9yIGxvZ2ljYWxTdGFydFJ1bigp
IGNvbnN0OwotICAgIExlYWZCb3hJdGVyYXRvciBsb2dpY2FsRW5kUnVuKCkgY29uc3Q7Ci0gICAg
TGVhZkJveEl0ZXJhdG9yIGxvZ2ljYWxTdGFydFJ1bldpdGhOb2RlKCkgY29uc3Q7Ci0gICAgTGVh
ZkJveEl0ZXJhdG9yIGxvZ2ljYWxFbmRSdW5XaXRoTm9kZSgpIGNvbnN0OwogICAgIAogICAgIExl
YWZCb3hJdGVyYXRvciBmaXJzdFNlbGVjdGVkQm94KCkgY29uc3Q7CiAgICAgTGVhZkJveEl0ZXJh
dG9yIGxhc3RTZWxlY3RlZEJveCgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2ludGVncmF0aW9uL0lubGluZUl0ZXJhdG9yTGluZUxlZ2FjeVBhdGguaCBiL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9JbmxpbmVJdGVyYXRvckxpbmVMZWdhY3lQYXRo
LmgKaW5kZXggZmFjM2EyMmU3NDk0ZDRlNDMxMjE4ZmNlODllNzliNDMyNGE5M2QwOS4uYjc0YzZk
OWEwMDFlMjU0MjI1ZmY3ZmNhYWRiYWZlMzQ2ZGMwNzAxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0lubGluZUl0ZXJhdG9yTGluZUxlZ2FjeVBhdGguaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vSW5saW5lSXRlcmF0b3JMaW5l
TGVnYWN5UGF0aC5oCkBAIC04NSwxNyArODUsNiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiB7
IG1fcm9vdElubGluZUJveC0+bGFzdExlYWZEZXNjZW5kYW50KCkgfTsKICAgICB9CiAKLQotICAg
IEJveExlZ2FjeVBhdGggbG9naWNhbFN0YXJ0UnVuKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJl
dHVybiB7ICptX3Jvb3RJbmxpbmVCb3gsIEJveExlZ2FjeVBhdGg6OkxvZ2ljYWxPcmRlcjo6U3Rh
cnQgfTsKLSAgICB9Ci0KLSAgICBCb3hMZWdhY3lQYXRoIGxvZ2ljYWxFbmRSdW4oKSBjb25zdAot
ICAgIHsKLSAgICAgICAgcmV0dXJuIHsgKm1fcm9vdElubGluZUJveCwgQm94TGVnYWN5UGF0aDo6
TG9naWNhbE9yZGVyOjpFbmQgfTsKLSAgICB9Ci0KIHByaXZhdGU6CiAgICAgY29uc3QgTGVnYWN5
Um9vdElubGluZUJveCogbV9yb290SW5saW5lQm94OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9JbmxpbmVJdGVyYXRvckxpbmVNb2Rlcm5QYXRoLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vSW5saW5lSXRlcmF0b3JMaW5lTW9k
ZXJuUGF0aC5oCmluZGV4IGNhZjgyNmY4NTFlNDdmZmU3ZDVhMGRhYzU5NWZlOWRmMzNjNDVkZTMu
LmI5MWNmY2Y2NDUwZDM5OTVjNWI0NGVlNmY1MDA0ZDA5YTI3ODNkODUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9JbmxpbmVJdGVyYXRvckxpbmVNb2Rlcm5Q
YXRoLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0lubGluZUl0ZXJh
dG9yTGluZU1vZGVyblBhdGguaApAQCAtMTE2LDE2ICsxMTYsNiBAQCBwdWJsaWM6CiAgICAgICAg
IHJldHVybiBydW5JdGVyYXRvcjsKICAgICB9CiAKLSAgICBCb3hNb2Rlcm5QYXRoIGxvZ2ljYWxT
dGFydFJ1bigpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gZmlyc3RSdW4oKTsKLSAgICB9
Ci0KLSAgICBCb3hNb2Rlcm5QYXRoIGxvZ2ljYWxFbmRSdW4oKSBjb25zdAotICAgIHsKLSAgICAg
ICAgcmV0dXJuIGxhc3RSdW4oKTsKLSAgICB9Ci0KIHByaXZhdGU6CiAgICAgdm9pZCBzZXRBdEVu
ZCgpIHsgbV9saW5lSW5kZXggPSBsaW5lcygpLnNpemUoKTsgfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vSW5saW5lSXRlcmF0b3JMb2dpY2FsT3JkZXJU
cmF2ZXJzYWwuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0lubGluZUl0
ZXJhdG9yTG9naWNhbE9yZGVyVHJhdmVyc2FsLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43YTEyY2QzMTA0MzNm
NzUzYTg4MDllMmUyMDQ5YjgzMWUwZDQ3NmYyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0lubGluZUl0ZXJhdG9yTG9naWNhbE9yZGVyVHJhdmVy
c2FsLmNwcApAQCAtMCwwICsxLDIyMSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJJbmxpbmVJdGVyYXRvckxvZ2ljYWxPcmRlclRyYXZlcnNhbC5oIgorCisj
aW5jbHVkZSAiSW5saW5lSXRlcmF0b3JMaW5lLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK25h
bWVzcGFjZSBJbmxpbmVJdGVyYXRvciB7CisKK3N0YXRpYyBUZXh0TG9naWNhbE9yZGVyQ2FjaGUg
bWFrZVRleHRMb2dpY2FsT3JkZXJDYWNoZUlmTmVlZGVkKGNvbnN0IFJlbmRlclRleHQmIHRleHQp
Cit7CisgICAgaWYgKCF0ZXh0LmNvbnRhaW5zUmV2ZXJzZWRUZXh0KCkpCisgICAgICAgIHJldHVy
biB7IH07CisKKyAgICBhdXRvIGNhY2hlID0gV1RGOjptYWtlVW5pcXVlPFRleHRMb2dpY2FsT3Jk
ZXJDYWNoZURhdGE+KCk7CisgICAgZm9yIChhdXRvIHRleHRCb3ggOiB0ZXh0Qm94ZXNGb3IodGV4
dCkpCisgICAgICAgIGNhY2hlLT5ib3hlcy5hcHBlbmQodGV4dEJveCk7CisKKyAgICBpZiAoY2Fj
aGUtPmJveGVzLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBzdGQ6
OnNvcnQoY2FjaGUtPmJveGVzLmJlZ2luKCksIGNhY2hlLT5ib3hlcy5lbmQoKSwgWyZdKGF1dG8m
IGEsIGF1dG8mIGIpIHsKKyAgICAgICAgcmV0dXJuIGEtPnN0YXJ0KCkgPCBiLT5zdGFydCgpOwor
ICAgIH0pOworCisgICAgcmV0dXJuIGNhY2hlOworfQorCitzdGF0aWMgdm9pZCB1cGRhdGVUZXh0
TG9naWNhbE9yZGVyQ2FjaGVJZk5lZWRlZChjb25zdCBUZXh0Qm94SXRlcmF0b3ImIHRleHRCb3gs
IFRleHRMb2dpY2FsT3JkZXJDYWNoZSYgY2FjaGUpCit7CisgICAgaWYgKCFjYWNoZSAmJiAhKGNh
Y2hlID0gbWFrZVRleHRMb2dpY2FsT3JkZXJDYWNoZUlmTmVlZGVkKHRleHRCb3gtPnJlbmRlcmVy
KCkpKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKGNhY2hlLT5pbmRleCA8IGNhY2hlLT5i
b3hlcy5zaXplKCkgJiYgY2FjaGUtPmJveGVzW2NhY2hlLT5pbmRleF0gPT0gdGV4dEJveCkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgY2FjaGUtPmluZGV4ID0gY2FjaGUtPmJveGVzLmZpbmQodGV4
dEJveCk7CisKKyAgICBpZiAoY2FjaGUtPmluZGV4ID09IG5vdEZvdW5kKSB7CisgICAgICAgIGNh
Y2hlID0geyB9OworICAgICAgICBtYWtlVGV4dExvZ2ljYWxPcmRlckNhY2hlSWZOZWVkZWQodGV4
dEJveC0+cmVuZGVyZXIoKSk7CisgICAgfQorfQorCitzdGQ6OnBhaXI8VGV4dEJveEl0ZXJhdG9y
LCBUZXh0TG9naWNhbE9yZGVyQ2FjaGU+IGZpcnN0VGV4dEJveEluTG9naWNhbE9yZGVyRm9yKGNv
bnN0IFJlbmRlclRleHQmIHRleHQpCit7CisgICAgaWYgKGF1dG8gY2FjaGUgPSBtYWtlVGV4dExv
Z2ljYWxPcmRlckNhY2hlSWZOZWVkZWQodGV4dCkpCisgICAgICAgIHJldHVybiB7IGNhY2hlLT5i
b3hlcy5maXJzdCgpLCBXVEZNb3ZlKGNhY2hlKSB9OworCisgICAgcmV0dXJuIHsgZmlyc3RUZXh0
Qm94Rm9yKHRleHQpLCBudWxscHRyIH07Cit9CisKK1RleHRCb3hJdGVyYXRvciBuZXh0VGV4dEJv
eEluTG9naWNhbE9yZGVyKGNvbnN0IFRleHRCb3hJdGVyYXRvciYgdGV4dEJveCwgVGV4dExvZ2lj
YWxPcmRlckNhY2hlJiBjYWNoZSkKK3sKKyAgICB1cGRhdGVUZXh0TG9naWNhbE9yZGVyQ2FjaGVJ
Zk5lZWRlZCh0ZXh0Qm94LCBjYWNoZSk7CisKKyAgICBpZiAoIWNhY2hlKQorICAgICAgICByZXR1
cm4gdGV4dEJveC0+bmV4dFRleHRCb3goKTsKKworICAgIGNhY2hlLT5pbmRleCsrOworCisgICAg
aWYgKGNhY2hlLT5pbmRleCA8IGNhY2hlLT5ib3hlcy5zaXplKCkpCisgICAgICAgIHJldHVybiBj
YWNoZS0+Ym94ZXNbY2FjaGUtPmluZGV4XTsKKworICAgIHJldHVybiB7IH07Cit9CisKK3N0YXRp
YyBMaW5lTG9naWNhbE9yZGVyQ2FjaGUgbWFrZUxpbmVMb2dpY2FsT3JkZXJDYWNoZUlmTmVlZGVk
KGNvbnN0IExpbmVJdGVyYXRvciYgbGluZSkKK3sKKyAgICBpZiAobGluZS0+Y29udGFpbmluZ0Js
b2NrKCkuc3R5bGUoKS5ydGxPcmRlcmluZygpID09IE9yZGVyOjpWaXN1YWwpCisgICAgICAgIHJl
dHVybiB7IH07CisKKyAgICB1bnNpZ25lZCBjaGFyIG1pbkxldmVsID0gMTI4OworICAgIHVuc2ln
bmVkIGNoYXIgbWF4TGV2ZWwgPSAwOworCisgICAgZm9yIChhdXRvIGJveCA9IGxpbmUtPmZpcnN0
UnVuKCk7IGJveDsgYm94ID0gYm94LnRyYXZlcnNlTmV4dE9uTGluZSgpKSB7CisgICAgICAgIG1p
bkxldmVsID0gc3RkOjptaW4obWluTGV2ZWwsIGJveC0+YmlkaUxldmVsKCkpOworICAgICAgICBt
YXhMZXZlbCA9IHN0ZDo6bWF4KG1heExldmVsLCBib3gtPmJpZGlMZXZlbCgpKTsKKyAgICB9CisK
KyAgICBpZiAoIW1heExldmVsKQorICAgICAgICByZXR1cm4geyB9OworCisgICAgYXV0byBjYWNo
ZSA9IFdURjo6bWFrZVVuaXF1ZTxMaW5lTG9naWNhbE9yZGVyQ2FjaGVEYXRhPigpOworCisgICAg
YXV0byYgYm94ZXMgPSBjYWNoZS0+Ym94ZXM7CisgICAgZm9yIChhdXRvIGJveCA9IGxpbmUtPmZp
cnN0UnVuKCk7IGJveDsgYm94ID0gYm94LnRyYXZlcnNlTmV4dE9uTGluZSgpKQorICAgICAgICBi
b3hlcy5hcHBlbmQoYm94KTsKKworICAgIC8vIFJldmVyc2Ugb2YgcmVvcmRlcmluZyBvZiB0aGUg
bGluZSAoTDIgYWNjb3JkaW5nIHRvIEJpZGkgc3BlYyk6CisgICAgLy8gTDIuIEZyb20gdGhlIGhp
Z2hlc3QgbGV2ZWwgZm91bmQgaW4gdGhlIHRleHQgdG8gdGhlIGxvd2VzdCBvZGQgbGV2ZWwgb24g
ZWFjaCBsaW5lLAorICAgIC8vIHJldmVyc2UgYW55IGNvbnRpZ3VvdXMgc2VxdWVuY2Ugb2YgY2hh
cmFjdGVycyB0aGF0IGFyZSBhdCB0aGF0IGxldmVsIG9yIGhpZ2hlci4KKworICAgIC8vIFJldmVy
c2luZyB0aGUgcmVvcmRlcmluZyBvZiB0aGUgbGluZSBpcyBvbmx5IGRvbmUgdXAgdG8gdGhlIGxv
d2VzdCBvZGQgbGV2ZWwuCisgICAgaWYgKCEobWluTGV2ZWwgJSAyKSkKKyAgICAgICAgKyttaW5M
ZXZlbDsKKworICAgIGF1dG8gZW5kID0gYm94ZXMuZW5kKCk7CisgICAgZm9yICg7IG1pbkxldmVs
IDw9IG1heExldmVsOyArK21pbkxldmVsKSB7CisgICAgICAgIGF1dG8gYm94ID0gYm94ZXMuYmVn
aW4oKTsKKyAgICAgICAgd2hpbGUgKGJveCA8IGVuZCkgeworICAgICAgICAgICAgd2hpbGUgKGJv
eCA8IGVuZCAmJiAoKmJveCktPmJpZGlMZXZlbCgpIDwgbWluTGV2ZWwpCisgICAgICAgICAgICAg
ICAgKytib3g7CisKKyAgICAgICAgICAgIGF1dG8gZmlyc3QgPSBib3g7CisgICAgICAgICAgICB3
aGlsZSAoYm94IDwgZW5kICYmICgqYm94KS0+YmlkaUxldmVsKCkgPj0gbWluTGV2ZWwpCisgICAg
ICAgICAgICAgICAgKytib3g7CisKKyAgICAgICAgICAgIGF1dG8gbGFzdCA9IGJveDsKKyAgICAg
ICAgICAgIHN0ZDo6cmV2ZXJzZShmaXJzdCwgbGFzdCk7CisgICAgICAgIH0KKyAgICB9CisKKyAg
ICByZXR1cm4gY2FjaGU7Cit9CisKK3N0YXRpYyB2b2lkIHVwZGF0ZUxpbmVMb2dpY2FsT3JkZXJD
YWNoZUlmTmVlZGVkKGNvbnN0IExlYWZCb3hJdGVyYXRvciYgYm94LCBMaW5lTG9naWNhbE9yZGVy
Q2FjaGUmIGNhY2hlKQoreworICAgIGF1dG8gbGluZSA9IGJveC0+bGluZSgpOworICAgIGlmICgh
Y2FjaGUgJiYgIShjYWNoZSA9IG1ha2VMaW5lTG9naWNhbE9yZGVyQ2FjaGVJZk5lZWRlZChsaW5l
KSkpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChjYWNoZS0+aW5kZXggPCBjYWNoZS0+Ym94
ZXMuc2l6ZSgpICYmIGNhY2hlLT5ib3hlc1tjYWNoZS0+aW5kZXhdID09IGJveCkKKyAgICAgICAg
cmV0dXJuOworCisgICAgY2FjaGUtPmluZGV4ID0gY2FjaGUtPmJveGVzLmZpbmQoYm94KTsKKwor
ICAgIGlmIChjYWNoZS0+aW5kZXggPT0gbm90Rm91bmQpIHsKKyAgICAgICAgY2FjaGUgPSB7IH07
CisgICAgICAgIHVwZGF0ZUxpbmVMb2dpY2FsT3JkZXJDYWNoZUlmTmVlZGVkKGJveCwgY2FjaGUp
OworICAgIH0KK30KKworTGVhZkJveEl0ZXJhdG9yIGZpcnN0TGVhZk9uTGluZUluTG9naWNhbE9y
ZGVyKGNvbnN0IExpbmVJdGVyYXRvciYgbGluZSwgTGluZUxvZ2ljYWxPcmRlckNhY2hlJiBjYWNo
ZSkKK3sKKyAgICBpZiAoKGNhY2hlID0gbWFrZUxpbmVMb2dpY2FsT3JkZXJDYWNoZUlmTmVlZGVk
KGxpbmUpKSkKKyAgICAgICAgcmV0dXJuIGNhY2hlLT5ib3hlcy5maXJzdCgpOworCisgICAgcmV0
dXJuIGxpbmUtPmZpcnN0UnVuKCk7Cit9CisKK0xlYWZCb3hJdGVyYXRvciBsYXN0TGVhZk9uTGlu
ZUluTG9naWNhbE9yZGVyKGNvbnN0IExpbmVJdGVyYXRvciYgbGluZSwgTGluZUxvZ2ljYWxPcmRl
ckNhY2hlJiBjYWNoZSkKK3sKKyAgICBpZiAoKGNhY2hlID0gbWFrZUxpbmVMb2dpY2FsT3JkZXJD
YWNoZUlmTmVlZGVkKGxpbmUpKSkKKyAgICAgICAgcmV0dXJuIGNhY2hlLT5ib3hlcy5sYXN0KCk7
CisKKyAgICByZXR1cm4gbGluZS0+bGFzdFJ1bigpOworfQorCitMZWFmQm94SXRlcmF0b3IgbmV4
dExlYWZPbkxpbmVJbkxvZ2ljYWxPcmRlcihjb25zdCBMZWFmQm94SXRlcmF0b3ImIGJveCwgTGlu
ZUxvZ2ljYWxPcmRlckNhY2hlJiBjYWNoZSkKK3sKKyAgICB1cGRhdGVMaW5lTG9naWNhbE9yZGVy
Q2FjaGVJZk5lZWRlZChib3gsIGNhY2hlKTsKKworICAgIGlmICghY2FjaGUpCisgICAgICAgIHJl
dHVybiBib3gtPm5leHRPbkxpbmUoKTsKKworICAgIGNhY2hlLT5pbmRleCsrOworCisgICAgaWYg
KGNhY2hlLT5pbmRleCA8IGNhY2hlLT5ib3hlcy5zaXplKCkpCisgICAgICAgIHJldHVybiBjYWNo
ZS0+Ym94ZXNbY2FjaGUtPmluZGV4XTsKKworICAgIHJldHVybiB7IH07Cit9CisKK0xlYWZCb3hJ
dGVyYXRvciBwcmV2aW91c0xlYWZPbkxpbmVJbkxvZ2ljYWxPcmRlcihjb25zdCBMZWFmQm94SXRl
cmF0b3ImIGJveCwgTGluZUxvZ2ljYWxPcmRlckNhY2hlJiBjYWNoZSkKK3sKKyAgICB1cGRhdGVM
aW5lTG9naWNhbE9yZGVyQ2FjaGVJZk5lZWRlZChib3gsIGNhY2hlKTsKKworICAgIGlmICghY2Fj
aGUpCisgICAgICAgIHJldHVybiBib3gtPnByZXZpb3VzT25MaW5lKCk7CisKKyAgICBpZiAoIWNh
Y2hlLT5pbmRleCkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIGNhY2hlLT5pbmRleC0tOwor
CisgICAgcmV0dXJuIGNhY2hlLT5ib3hlc1tjYWNoZS0+aW5kZXhdOworfQorCitMZWFmQm94SXRl
cmF0b3IgZmlyc3RMZWFmT25MaW5lSW5Mb2dpY2FsT3JkZXJXaXRoTm9kZShjb25zdCBMaW5lSXRl
cmF0b3ImIGxpbmUsIExpbmVMb2dpY2FsT3JkZXJDYWNoZSYgY2FjaGUpCit7CisgICAgYXV0byBi
b3ggPSBmaXJzdExlYWZPbkxpbmVJbkxvZ2ljYWxPcmRlcihsaW5lLCBjYWNoZSk7CisgICAgd2hp
bGUgKCFib3gtPnJlbmRlcmVyKCkubm9kZSgpKQorICAgICAgICBib3ggPSBuZXh0TGVhZk9uTGlu
ZUluTG9naWNhbE9yZGVyKGJveCwgY2FjaGUpOworICAgIHJldHVybiBib3g7Cit9CisKK0xlYWZC
b3hJdGVyYXRvciBsYXN0TGVhZk9uTGluZUluTG9naWNhbE9yZGVyV2l0aE5vZGUoY29uc3QgTGlu
ZUl0ZXJhdG9yJiBsaW5lLCBMaW5lTG9naWNhbE9yZGVyQ2FjaGUmIGNhY2hlKQoreworICAgIGF1
dG8gYm94ID0gbGFzdExlYWZPbkxpbmVJbkxvZ2ljYWxPcmRlcihsaW5lLCBjYWNoZSk7CisgICAg
d2hpbGUgKCFib3gtPnJlbmRlcmVyKCkubm9kZSgpKQorICAgICAgICBib3ggPSBwcmV2aW91c0xl
YWZPbkxpbmVJbkxvZ2ljYWxPcmRlcihib3gsIGNhY2hlKTsKKyAgICByZXR1cm4gYm94OworfQor
Cit9Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vSW5s
aW5lSXRlcmF0b3JMb2dpY2FsT3JkZXJUcmF2ZXJzYWwuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9pbnRlZ3JhdGlvbi9JbmxpbmVJdGVyYXRvckxvZ2ljYWxPcmRlclRyYXZlcnNhbC5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjVhNmM4MjI0NGY5N2IyNzVkMmYyMjU3N2NjY2FkYTIwYzk5ZDRhOWMKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vSW5saW5lSXRlcmF0
b3JMb2dpY2FsT3JkZXJUcmF2ZXJzYWwuaApAQCAtMCwwICsxLDY0IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJJbmxpbmVJdGVyYXRvclRleHRCb3guaCIKKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworbmFtZXNwYWNlIElubGluZUl0ZXJhdG9yIHsKKworY2xhc3MgTGlu
ZUl0ZXJhdG9yOworCitzdHJ1Y3QgVGV4dExvZ2ljYWxPcmRlckNhY2hlRGF0YSB7CisgICAgV1RG
X01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOworCisgICAgVmVjdG9yPFRleHRCb3hJdGVyYXRv
cj4gYm94ZXM7CisgICAgc2l6ZV90IGluZGV4IHsgMCB9OworfTsKKwordXNpbmcgVGV4dExvZ2lj
YWxPcmRlckNhY2hlID0gc3RkOjp1bmlxdWVfcHRyPFRleHRMb2dpY2FsT3JkZXJDYWNoZURhdGE+
OworCitzdGQ6OnBhaXI8VGV4dEJveEl0ZXJhdG9yLCBUZXh0TG9naWNhbE9yZGVyQ2FjaGU+IGZp
cnN0VGV4dEJveEluTG9naWNhbE9yZGVyRm9yKGNvbnN0IFJlbmRlclRleHQmKTsKK1RleHRCb3hJ
dGVyYXRvciBuZXh0VGV4dEJveEluTG9naWNhbE9yZGVyKGNvbnN0IFRleHRCb3hJdGVyYXRvciYs
IFRleHRMb2dpY2FsT3JkZXJDYWNoZSYpOworCitzdHJ1Y3QgTGluZUxvZ2ljYWxPcmRlckNhY2hl
RGF0YSB7CisgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOworCisgICAgVmVjdG9y
PExlYWZCb3hJdGVyYXRvcj4gYm94ZXM7CisgICAgc2l6ZV90IGluZGV4IHsgMCB9OworfTsKK3Vz
aW5nIExpbmVMb2dpY2FsT3JkZXJDYWNoZSA9IHN0ZDo6dW5pcXVlX3B0cjxMaW5lTG9naWNhbE9y
ZGVyQ2FjaGVEYXRhPjsKKworTGVhZkJveEl0ZXJhdG9yIGZpcnN0TGVhZk9uTGluZUluTG9naWNh
bE9yZGVyKGNvbnN0IExpbmVJdGVyYXRvciYsIExpbmVMb2dpY2FsT3JkZXJDYWNoZSYpOworTGVh
ZkJveEl0ZXJhdG9yIGxhc3RMZWFmT25MaW5lSW5Mb2dpY2FsT3JkZXIoY29uc3QgTGluZUl0ZXJh
dG9yJiwgTGluZUxvZ2ljYWxPcmRlckNhY2hlJik7CitMZWFmQm94SXRlcmF0b3IgbmV4dExlYWZP
bkxpbmVJbkxvZ2ljYWxPcmRlcihjb25zdCBMZWFmQm94SXRlcmF0b3ImLCBMaW5lTG9naWNhbE9y
ZGVyQ2FjaGUmKTsKK0xlYWZCb3hJdGVyYXRvciBwcmV2aW91c0xlYWZPbkxpbmVJbkxvZ2ljYWxP
cmRlcihjb25zdCBMZWFmQm94SXRlcmF0b3ImLCBMaW5lTG9naWNhbE9yZGVyQ2FjaGUmKTsKKwor
TGVhZkJveEl0ZXJhdG9yIGZpcnN0TGVhZk9uTGluZUluTG9naWNhbE9yZGVyV2l0aE5vZGUoY29u
c3QgTGluZUl0ZXJhdG9yJiwgTGluZUxvZ2ljYWxPcmRlckNhY2hlJik7CitMZWFmQm94SXRlcmF0
b3IgbGFzdExlYWZPbkxpbmVJbkxvZ2ljYWxPcmRlcldpdGhOb2RlKGNvbnN0IExpbmVJdGVyYXRv
ciYsIExpbmVMb2dpY2FsT3JkZXJDYWNoZSYpOworCit9Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vSW5saW5lSXRlcmF0b3JUZXh0Qm94LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9JbmxpbmVJdGVyYXRvclRleHRCb3guY3Bw
CmluZGV4IDIxNTY4ZGYzNDg4MmFmZDU2MmI4NThhNTQ1NTIwYTVlYTk4YmY0YjkuLmQyOTFjZjI2
MzQ3ODg0MDNlMTE4ZThhZTJkMWNmZWM3MzFkMjkzNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9pbnRlZ3JhdGlvbi9JbmxpbmVJdGVyYXRvclRleHRCb3guY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9JbmxpbmVJdGVyYXRvclRleHRCb3guY3Bw
CkBAIC05OSw0MyArOTksNiBAQCBUZXh0Qm94SXRlcmF0b3IgZmlyc3RUZXh0Qm94Rm9yKGNvbnN0
IFJlbmRlclRleHQmIHRleHQpCiAgICAgcmV0dXJuIHsgQm94TGVnYWN5UGF0aCB7IHRleHQuZmly
c3RUZXh0Qm94KCkgfSB9OwogfQogCi1zdGQ6OnBhaXI8VGV4dEJveEl0ZXJhdG9yLCBMb2dpY2Fs
T3JkZXJDYWNoZT4gZmlyc3RUZXh0Qm94SW5Mb2dpY2FsT3JkZXJGb3IoY29uc3QgUmVuZGVyVGV4
dCYgdGV4dCkKLXsKLSAgICBpZiAoIXRleHQuY29udGFpbnNSZXZlcnNlZFRleHQoKSkKLSAgICAg
ICAgcmV0dXJuIHsgZmlyc3RUZXh0Qm94Rm9yKHRleHQpLCBudWxscHRyIH07Ci0KLSAgICBhdXRv
IGNhY2hlID0gV1RGOjptYWtlVW5pcXVlPExvZ2ljYWxPcmRlckNhY2hlRGF0YT4oKTsKLSAgICBm
b3IgKGF1dG8gdGV4dEJveCA6IHRleHRCb3hlc0Zvcih0ZXh0KSkKLSAgICAgICAgY2FjaGUtPmJv
eGVzLmFwcGVuZCh0ZXh0Qm94KTsKLQotICAgIGlmIChjYWNoZS0+Ym94ZXMuaXNFbXB0eSgpKQot
ICAgICAgICByZXR1cm4geyBUZXh0Qm94SXRlcmF0b3IgeyB9LCBudWxscHRyIH07Ci0KLSAgICBz
dGQ6OnNvcnQoY2FjaGUtPmJveGVzLmJlZ2luKCksIGNhY2hlLT5ib3hlcy5lbmQoKSwgWyZdKGF1
dG8mIGEsIGF1dG8mIGIpIHsKLSAgICAgICAgcmV0dXJuIGEtPnN0YXJ0KCkgPCBiLT5zdGFydCgp
OwotICAgIH0pOwotCi0gICAgcmV0dXJuIHsgY2FjaGUtPmJveGVzWzBdLCBXVEZNb3ZlKGNhY2hl
KSB9OwotfQotCi1UZXh0Qm94SXRlcmF0b3IgbmV4dFRleHRCb3hJbkxvZ2ljYWxPcmRlcihjb25z
dCBUZXh0Qm94SXRlcmF0b3ImIHRleHRCb3gsIExvZ2ljYWxPcmRlckNhY2hlJiBjYWNoZSkKLXsK
LSAgICBpZiAoIWNhY2hlKQotICAgICAgICByZXR1cm4gdGV4dEJveC0+bmV4dFRleHRCb3goKTsK
LQotICAgIGlmIChjYWNoZS0+aW5kZXggPT0gY2FjaGUtPmJveGVzLnNpemUoKSB8fCBjYWNoZS0+
Ym94ZXNbY2FjaGUtPmluZGV4XSAhPSB0ZXh0Qm94KSB7Ci0gICAgICAgIGNhY2hlLT5pbmRleCA9
IGNhY2hlLT5ib3hlcy5maW5kKHRleHRCb3gpOwotICAgICAgICBBU1NFUlQoY2FjaGUtPmluZGV4
ICE9IG5vdEZvdW5kKTsKLSAgICB9Ci0KLSAgICBjYWNoZS0+aW5kZXgrKzsKLQotICAgIGlmIChj
YWNoZS0+aW5kZXggPCBjYWNoZS0+Ym94ZXMuc2l6ZSgpKQotICAgICAgICByZXR1cm4gY2FjaGUt
PmJveGVzW2NhY2hlLT5pbmRleF07Ci0KLSAgICByZXR1cm4geyB9OwotfQotCiBUZXh0Qm94SXRl
cmF0b3IgdGV4dEJveEZvcihjb25zdCBMZWdhY3lJbmxpbmVUZXh0Qm94KiBsZWdhY3lJbmxpbmVU
ZXh0Qm94KQogewogICAgIHJldHVybiB7IEJveExlZ2FjeVBhdGggeyBsZWdhY3lJbmxpbmVUZXh0
Qm94IH0gfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9J
bmxpbmVJdGVyYXRvclRleHRCb3guaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlv
bi9JbmxpbmVJdGVyYXRvclRleHRCb3guaAppbmRleCA0MmI0N2UzNDk5N2YzM2IyYTg3ZGI1ZTBi
N2E1YjFhYTBkZTI4M2I4Li5lOTMyYzA2ODc3MjUyNWU2MmUwOGZmNDc2MDUyYTYxNjc5NTVkNWZj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vSW5saW5lSXRl
cmF0b3JUZXh0Qm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0lu
bGluZUl0ZXJhdG9yVGV4dEJveC5oCkBAIC0zMiw5ICszMiw2IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogbmFtZXNwYWNlIElubGluZUl0ZXJhdG9yIHsKIAotc3RydWN0IExvZ2ljYWxPcmRlckNh
Y2hlRGF0YTsKLXVzaW5nIExvZ2ljYWxPcmRlckNhY2hlID0gc3RkOjp1bmlxdWVfcHRyPExvZ2lj
YWxPcmRlckNhY2hlRGF0YT47Ci0KIGNsYXNzIFRleHRCb3ggOiBwdWJsaWMgQm94IHsKIHB1Ymxp
YzoKICAgICBUZXh0Qm94KFBhdGhWYXJpYW50JiYpOwpAQCAtNjMsNiArNjAsNyBAQCBwdWJsaWM6
CiAgICAgY29uc3QgTGVnYWN5SW5saW5lVGV4dEJveCogbGVnYWN5SW5saW5lQm94KCkgY29uc3Qg
eyByZXR1cm4gZG93bmNhc3Q8TGVnYWN5SW5saW5lVGV4dEJveD4oQm94OjpsZWdhY3lJbmxpbmVC
b3goKSk7IH0KIAogICAgIFRleHRCb3hJdGVyYXRvciBuZXh0VGV4dEJveCgpIGNvbnN0OworICAg
IFRleHRCb3hJdGVyYXRvciBwcmV2aW91c1RleHRCb3goKSBjb25zdDsKIH07CiAKIGNsYXNzIFRl
eHRCb3hJdGVyYXRvciA6IHB1YmxpYyBMZWFmQm94SXRlcmF0b3IgewpAQCAtODMsOCArODEsNiBA
QCBwcml2YXRlOgogICAgIEJveEl0ZXJhdG9yJiB0cmF2ZXJzZVByZXZpb3VzT25MaW5lKCkgPSBk
ZWxldGU7CiAgICAgQm94SXRlcmF0b3ImIHRyYXZlcnNlTmV4dE9uTGluZUlnbm9yaW5nTGluZUJy
ZWFrKCkgPSBkZWxldGU7CiAgICAgQm94SXRlcmF0b3ImIHRyYXZlcnNlUHJldmlvdXNPbkxpbmVJ
Z25vcmluZ0xpbmVCcmVhaygpID0gZGVsZXRlOwotICAgIEJveEl0ZXJhdG9yJiB0cmF2ZXJzZU5l
eHRPbkxpbmVJbkxvZ2ljYWxPcmRlcigpID0gZGVsZXRlOwotICAgIEJveEl0ZXJhdG9yJiB0cmF2
ZXJzZVByZXZpb3VzT25MaW5lSW5Mb2dpY2FsT3JkZXIoKSA9IGRlbGV0ZTsKIAogICAgIGNvbnN0
IFRleHRCb3gmIGdldCgpIGNvbnN0IHsgcmV0dXJuIGRvd25jYXN0PFRleHRCb3g+KG1fYm94KTsg
fQogfTsKQEAgLTExMSwxNSArMTA3LDYgQEAgVGV4dEJveEl0ZXJhdG9yIHRleHRCb3hGb3IoY29u
c3QgTGF5b3V0SW50ZWdyYXRpb246OklubGluZUNvbnRlbnQmLCBzaXplX3QgYm94SW4KICNlbmRp
ZgogVGV4dEJveFJhbmdlIHRleHRCb3hlc0Zvcihjb25zdCBSZW5kZXJUZXh0Jik7CiAKLXN0cnVj
dCBMb2dpY2FsT3JkZXJDYWNoZURhdGEgewotICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9D
QVRFRDsKLSAgICAKLSAgICBWZWN0b3I8VGV4dEJveEl0ZXJhdG9yPiBib3hlczsKLSAgICBzaXpl
X3QgaW5kZXggeyAwIH07Ci19Owotc3RkOjpwYWlyPFRleHRCb3hJdGVyYXRvciwgTG9naWNhbE9y
ZGVyQ2FjaGU+IGZpcnN0VGV4dEJveEluTG9naWNhbE9yZGVyRm9yKGNvbnN0IFJlbmRlclRleHQm
KTsKLVRleHRCb3hJdGVyYXRvciBuZXh0VGV4dEJveEluTG9naWNhbE9yZGVyKGNvbnN0IFRleHRC
b3hJdGVyYXRvciYsIExvZ2ljYWxPcmRlckNhY2hlJik7Ci0KIGlubGluZSBib29sIFRleHRCb3g6
Omhhc0h5cGhlbigpIGNvbnN0CiB7CiAgICAgcmV0dXJuIFdURjo6c3dpdGNoT24obV9wYXRoVmFy
aWFudCwgW10oYXV0byYgcGF0aCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckJsb2NrRmxvdy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
QmxvY2tGbG93LmNwcAppbmRleCAxMThjYzIwYTdiMmVhNTkxMzU5YzcyNTI1NjM0MWRkN2JmMTdk
ZmMwLi5mMmM2MjhmNjcxYmJmZTVjYjg4ZTU4NWNjYWRmYTJmMmNlNzUxNmZkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNwcApAQCAtMzYsNiArMzYsNyBA
QAogI2luY2x1ZGUgIkhpdFRlc3RMb2NhdGlvbi5oIgogI2luY2x1ZGUgIklubGluZUl0ZXJhdG9y
Qm94LmgiCiAjaW5jbHVkZSAiSW5saW5lSXRlcmF0b3JMaW5lLmgiCisjaW5jbHVkZSAiSW5saW5l
SXRlcmF0b3JMb2dpY2FsT3JkZXJUcmF2ZXJzYWwuaCIKICNpbmNsdWRlICJJbmxpbmVJdGVyYXRv
clRleHRCb3guaCIKICNpbmNsdWRlICJJbmxpbmVXYWxrZXIuaCIKICNpbmNsdWRlICJMYXlvdXRJ
bnRlZ3JhdGlvbkxpbmVMYXlvdXQuaCIKQEAgLTM2MTksNyArMzYyMCw4IEBAIFZpc2libGVQb3Np
dGlvbiBSZW5kZXJCbG9ja0Zsb3c6OnBvc2l0aW9uRm9yUG9pbnRXaXRoSW5saW5lQ2hpbGRyZW4o
Y29uc3QgTGF5b3V0CiAgICAgaWYgKGxhc3RMaW5lV2l0aENoaWxkcmVuKSB7CiAgICAgICAgIC8v
IFdlIGhpdCB0aGlzIGNhc2UgZm9yIE1hYyBiZWhhdmlvciB3aGVuIHRoZSBZIGNvb3JkaW5hdGUg
aXMgYmVsb3cgdGhlIGxhc3QgYm94LgogICAgICAgICBBU1NFUlQobW92ZUNhcmV0VG9Cb3VuZGFy
eSk7Ci0gICAgICAgIGlmIChhdXRvIGxvZ2ljYWxseUxhc3RSdW4gPSBsYXN0TGluZVdpdGhDaGls
ZHJlbi0+bG9naWNhbEVuZFJ1bldpdGhOb2RlKCkpCisgICAgICAgIElubGluZUl0ZXJhdG9yOjpM
aW5lTG9naWNhbE9yZGVyQ2FjaGUgb3JkZXJDYWNoZTsKKyAgICAgICAgaWYgKGF1dG8gbG9naWNh
bGx5TGFzdFJ1biA9IElubGluZUl0ZXJhdG9yOjpsYXN0TGVhZk9uTGluZUluTG9naWNhbE9yZGVy
V2l0aE5vZGUobGFzdExpbmVXaXRoQ2hpbGRyZW4sIG9yZGVyQ2FjaGUpKQogICAgICAgICAgICAg
cmV0dXJuIHBvc2l0aW9uRm9yUnVuKCp0aGlzLCBsb2dpY2FsbHlMYXN0UnVuLCBmYWxzZSk7CiAg
ICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHAKaW5kZXggNTdkZjE0
MWVmNDc2NzdkNjJhYzFiMTNmNGFlMjk1N2MyMjVlODg0Zi4uMjgxNjczMDg3NzMzZGI5ZDNkZjY5
NmM0NDYzOTkwZDJmMjZkYTZlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0
LmNwcApAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgIkhUTUxQYXJzZXJJZGlvbXMuaCIKICNp
bmNsdWRlICJIeXBoZW5hdGlvbi5oIgogI2luY2x1ZGUgIklubGluZUl0ZXJhdG9yTGluZS5oIgor
I2luY2x1ZGUgIklubGluZUl0ZXJhdG9yTG9naWNhbE9yZGVyVHJhdmVyc2FsLmgiCiAjaW5jbHVk
ZSAiSW5saW5lSXRlcmF0b3JUZXh0Qm94LmgiCiAjaW5jbHVkZSAiSW5saW5lUnVuQW5kT2Zmc2V0
LmgiCiAjaW5jbHVkZSAiTGF5b3V0SW50ZWdyYXRpb25MaW5lTGF5b3V0LmgiCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>441357</attachid>
            <date>2021-10-15 03:07:14 -0700</date>
            <delta_ts>2021-10-15 03:35:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-231800-20211015130712.patch</filename>
            <type>text/plain</type>
            <size>52085</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg0MjM2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODUwN2I1YjhiMjkzNjZj
N2M0ZDI3Mzk5ZWE0ZjQ1YzgxNTczZjU2OS4uMzU5ZGJjMWNmNDk2Y2U3ZmRhNDBlYzA0MWEyYzQ3
ZjQ3N2E4ZWRiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg4IEBACisyMDIxLTEwLTE1ICBBbnR0
aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBbTEZDXVtJbnRlZ3JhdGlv
bl0gRmFjdG9yIGxpbmUgbG9naWNhbCBvcmRlciB0cmF2ZXJzYWwgb3V0IG9mIGl0ZXJhdG9yCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzE4MDAKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTaW1pbGFyIHRv
IHRleHQgbG9naWNhbCBvcmRlciB0cmF2ZXJzYWwsIHVzZSBzdGFuZGFsb25lIHRyYXZlcnNhbCBm
dW5jdGlvbnMgd2l0aCBvcmRlciBjYWNoZQorICAgICAgICBvd25lZCBieSB0aGUgY2FsbGVyLgor
CisgICAgICAgIE1ha2UgdGhlIGNvZGUgZ2VuZXJpYyBzbyBpdCB3aWxsIHdvcmsgd2l0aCBJRkMg
QmlEaS4KKworICAgICAgICBGYWN0b3IgYWxsIHRyYXZlcnNhbCBmdW5jdGlvbnMgdG8gYSBmaWxl
IG9mIHRoZWlyIG93biwgSW5saW5lSXRlcmF0b3JMb2dpY2FsT3JkZXJUcmF2ZXJzYWwuaC9jcHAu
CisKKyAgICAgICAgKiBIZWFkZXJzLmNtYWtlOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAg
ICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBkb20v
UG9zaXRpb24uY3BwOgorICAgICAgICAqIGVkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuY3Bw
OgorICAgICAgICAqIGVkaXRpbmcvVGV4dEl0ZXJhdG9yLmg6CisgICAgICAgICogZWRpdGluZy9W
aXNpYmxlUG9zaXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VmlzaWJsZVBvc2l0aW9uOjps
ZWZ0VmlzdWFsbHlEaXN0aW5jdENhbmRpZGF0ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpW
aXNpYmxlUG9zaXRpb246OnJpZ2h0VmlzdWFsbHlEaXN0aW5jdENhbmRpZGF0ZSBjb25zdCk6Cisg
ICAgICAgICogZWRpdGluZy9WaXNpYmxlVW5pdHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cHJl
dmlvdXNUZXh0T3JMaW5lQnJlYWtSdW4pOgorICAgICAgICAoV2ViQ29yZTo6bmV4dFRleHRPckxp
bmVCcmVha1J1bik6CisgICAgICAgIChXZWJDb3JlOjpzdGFydFRleHRPckxpbmVCcmVha1J1bik6
CisgICAgICAgIChXZWJDb3JlOjplbmRUZXh0T3JMaW5lQnJlYWtSdW4pOgorICAgICAgICAoV2Vi
Q29yZTo6bG9naWNhbGx5UHJldmlvdXNSdW4pOgorICAgICAgICAoV2ViQ29yZTo6bG9naWNhbGx5
TmV4dFJ1bik6CisgICAgICAgIChXZWJDb3JlOjp3b3JkQnJlYWtJdGVyYXRvckZvck1pbk9mZnNl
dEJvdW5kYXJ5KToKKyAgICAgICAgKFdlYkNvcmU6OndvcmRCcmVha0l0ZXJhdG9yRm9yTWF4T2Zm
c2V0Qm91bmRhcnkpOgorICAgICAgICAoV2ViQ29yZTo6c3RhcnRQb3NpdGlvbkZvckxpbmUpOgor
ICAgICAgICAoV2ViQ29yZTo6ZW5kUG9zaXRpb25Gb3JMaW5lKToKKyAgICAgICAgKiBsYXlvdXQv
aW50ZWdyYXRpb24vSW5saW5lSXRlcmF0b3JCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5s
aW5lSXRlcmF0b3I6OkxlYWZCb3hJdGVyYXRvcjo6dHJhdmVyc2VQcmV2aW91c09uTGluZUlnbm9y
aW5nTGluZUJyZWFrKToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpMZWFmQm94
SXRlcmF0b3I6OnRyYXZlcnNlTmV4dE9uTGluZUluTG9naWNhbE9yZGVyKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpMZWFmQm94SXRlcmF0b3I6OnRyYXZlcnNl
UHJldmlvdXNPbkxpbmVJbkxvZ2ljYWxPcmRlcik6IERlbGV0ZWQuCisgICAgICAgICogbGF5b3V0
L2ludGVncmF0aW9uL0lubGluZUl0ZXJhdG9yQm94Lmg6CisgICAgICAgIChXZWJDb3JlOjpJbmxp
bmVJdGVyYXRvcjo6Qm94SXRlcmF0b3I6OkJveEl0ZXJhdG9yKToKKyAgICAgICAgKiBsYXlvdXQv
aW50ZWdyYXRpb24vSW5saW5lSXRlcmF0b3JCb3hMZWdhY3lQYXRoLmg6CisgICAgICAgIChXZWJD
b3JlOjpJbmxpbmVJdGVyYXRvcjo6Qm94TGVnYWN5UGF0aDo6Qm94TGVnYWN5UGF0aCk6CisgICAg
ICAgIChXZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6Qm94TGVnYWN5UGF0aDo6dHJhdmVyc2VOZXh0
T25MaW5lSW5Mb2dpY2FsT3JkZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW5saW5l
SXRlcmF0b3I6OkJveExlZ2FjeVBhdGg6OnRyYXZlcnNlUHJldmlvdXNPbkxpbmVJbkxvZ2ljYWxP
cmRlcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6Qm94TGVn
YWN5UGF0aDo6aW5pdGlhbGl6ZUxvZ2ljYWxPcmRlckNhY2hlRm9yTGluZSk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6Qm94TGVnYWN5UGF0aDo6dHJhdmVyc2VO
ZXh0SW5saW5lQm94SW5DYWNoZU9yZGVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Oklu
bGluZUl0ZXJhdG9yOjpCb3hMZWdhY3lQYXRoOjp0cmF2ZXJzZVByZXZpb3VzSW5saW5lQm94SW5D
YWNoZU9yZGVyKTogRGVsZXRlZC4KKyAgICAgICAgKiBsYXlvdXQvaW50ZWdyYXRpb24vSW5saW5l
SXRlcmF0b3JCb3hNb2Rlcm5QYXRoLmg6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVyYXRv
cjo6Qm94TW9kZXJuUGF0aDo6dHJhdmVyc2VOZXh0T25MaW5lSW5Mb2dpY2FsT3JkZXIpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRlcmF0b3I6OkJveE1vZGVyblBhdGg6OnRy
YXZlcnNlUHJldmlvdXNPbkxpbmVJbkxvZ2ljYWxPcmRlcik6IERlbGV0ZWQuCisgICAgICAgICog
bGF5b3V0L2ludGVncmF0aW9uL0lubGluZUl0ZXJhdG9yTGluZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJbmxpbmVJdGVyYXRvcjo6TGluZTo6bG9naWNhbFN0YXJ0UnVuIGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpMaW5lOjpsb2dpY2FsRW5kUnVu
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpMaW5l
Ojpsb2dpY2FsU3RhcnRSdW5XaXRoTm9kZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpJbmxpbmVJdGVyYXRvcjo6TGluZTo6bG9naWNhbEVuZFJ1bldpdGhOb2RlIGNvbnN0KTog
RGVsZXRlZC4KKyAgICAgICAgKiBsYXlvdXQvaW50ZWdyYXRpb24vSW5saW5lSXRlcmF0b3JMaW5l
Lmg6CisgICAgICAgICogbGF5b3V0L2ludGVncmF0aW9uL0lubGluZUl0ZXJhdG9yTGluZUxlZ2Fj
eVBhdGguaDoKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpMaW5lSXRlcmF0b3JM
ZWdhY3lQYXRoOjpsb2dpY2FsU3RhcnRSdW4gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6SW5saW5lSXRlcmF0b3I6OkxpbmVJdGVyYXRvckxlZ2FjeVBhdGg6OmxvZ2ljYWxFbmRS
dW4gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIGxheW91dC9pbnRlZ3JhdGlvbi9JbmxpbmVJ
dGVyYXRvckxpbmVNb2Rlcm5QYXRoLmg6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVyYXRv
cjo6TGluZUl0ZXJhdG9yTW9kZXJuUGF0aDo6bG9naWNhbFN0YXJ0UnVuIGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpMaW5lSXRlcmF0b3JNb2Rlcm5Q
YXRoOjpsb2dpY2FsRW5kUnVuIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBsYXlvdXQvaW50
ZWdyYXRpb24vSW5saW5lSXRlcmF0b3JMb2dpY2FsT3JkZXJUcmF2ZXJzYWwuY3BwOiBBZGRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjptYWtlVGV4dExvZ2ljYWxPcmRlckNh
Y2hlSWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRlcmF0b3I6OnVwZGF0ZVRl
eHRMb2dpY2FsT3JkZXJDYWNoZUlmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0
ZXJhdG9yOjpmaXJzdFRleHRCb3hJbkxvZ2ljYWxPcmRlckZvcik6CisgICAgICAgIChXZWJDb3Jl
OjpJbmxpbmVJdGVyYXRvcjo6bmV4dFRleHRCb3hJbkxvZ2ljYWxPcmRlcik6CisgICAgICAgIChX
ZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6bWFrZUxpbmVMb2dpY2FsT3JkZXJDYWNoZUlmTmVlZGVk
KToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjp1cGRhdGVMaW5lTG9naWNhbE9y
ZGVyQ2FjaGVJZk5lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6Zmly
c3RMZWFmT25MaW5lSW5Mb2dpY2FsT3JkZXIpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRl
cmF0b3I6Omxhc3RMZWFmT25MaW5lSW5Mb2dpY2FsT3JkZXIpOgorICAgICAgICAoV2ViQ29yZTo6
SW5saW5lSXRlcmF0b3I6Om5leHRMZWFmT25MaW5lSW5Mb2dpY2FsT3JkZXIpOgorICAgICAgICAo
V2ViQ29yZTo6SW5saW5lSXRlcmF0b3I6OnByZXZpb3VzTGVhZk9uTGluZUluTG9naWNhbE9yZGVy
KToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpmaXJzdExlYWZPbkxpbmVJbkxv
Z2ljYWxPcmRlcldpdGhOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjps
YXN0TGVhZk9uTGluZUluTG9naWNhbE9yZGVyV2l0aE5vZGUpOgorICAgICAgICAqIGxheW91dC9p
bnRlZ3JhdGlvbi9JbmxpbmVJdGVyYXRvckxvZ2ljYWxPcmRlclRyYXZlcnNhbC5oOiBBZGRlZC4K
KyAgICAgICAgKiBsYXlvdXQvaW50ZWdyYXRpb24vSW5saW5lSXRlcmF0b3JUZXh0Qm94LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpmaXJzdFRleHRCb3hJbkxvZ2ljYWxP
cmRlckZvcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6bmV4
dFRleHRCb3hJbkxvZ2ljYWxPcmRlcik6IERlbGV0ZWQuCisgICAgICAgICogbGF5b3V0L2ludGVn
cmF0aW9uL0lubGluZUl0ZXJhdG9yVGV4dEJveC5oOgorICAgICAgICAoKTogRGVsZXRlZC4KKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckJsb2NrRmxvdzo6cG9zaXRpb25Gb3JQb2ludFdpdGhJbmxpbmVDaGlsZHJlbik6Cisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwOgorCiAyMDIxLTEwLTE0ICBZb3Vlbm4g
RmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBNZWRpYUNhcGFiaWxpdGllcyBz
aG91bGQgZW5xdWV1ZSBhIHRhc2sgdG8gcmVzb2x2ZSBwcm9taXNlcwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UK
aW5kZXggYjA2NTdlMWNjOWRlNTliMDkyOTg1OWQ0OTE3MmVmMTljZmQ4ZTYzMS4uNGNlNTUxY2Nk
MDM1ZDFiNTcwNjNlZjQxMjRmM2JjZWNkMmI3MjFlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvSGVhZGVycy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCkBAIC04
MDcsNiArODA3LDcgQEAgc2V0KFdlYkNvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogICAg
IGxheW91dC9pbnRlZ3JhdGlvbi9JbmxpbmVJdGVyYXRvckxpbmUuaAogICAgIGxheW91dC9pbnRl
Z3JhdGlvbi9JbmxpbmVJdGVyYXRvckxpbmVMZWdhY3lQYXRoLmgKICAgICBsYXlvdXQvaW50ZWdy
YXRpb24vSW5saW5lSXRlcmF0b3JMaW5lTW9kZXJuUGF0aC5oCisgICAgbGF5b3V0L2ludGVncmF0
aW9uL0lubGluZUl0ZXJhdG9yTG9naWNhbE9yZGVyVHJhdmVyc2FsLmgKICAgICBsYXlvdXQvaW50
ZWdyYXRpb24vSW5saW5lSXRlcmF0b3JUZXh0Qm94LmgKICAgICBsYXlvdXQvaW50ZWdyYXRpb24v
TGF5b3V0SW50ZWdyYXRpb25JbmxpbmVDb250ZW50LmgKICAgICBsYXlvdXQvaW50ZWdyYXRpb24v
TGF5b3V0SW50ZWdyYXRpb25MaW5lLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJj
ZXMudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXggMjU3MjYxOTBjOTFhZTM4
N2RlM2Q0MWVjYjBhOTY5NjlmZGU2YWUxZS4uYzNlMjU4N2U2Y2NmYzEyYzBlOTMzMzE2ZjNlMmQ0
NDUyOGUxNjZmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIv
U291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKQEAgLTE1MjIsNiArMTUyMiw3IEBAIGxheW91dC9m
b3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL3RleHQvVGV4dFV0aWwuY3BwCiBsYXlvdXQvaW50ZWdy
YXRpb24vSW5saW5lSXRlcmF0b3JCb3guY3BwCiBsYXlvdXQvaW50ZWdyYXRpb24vSW5saW5lSXRl
cmF0b3JJbmxpbmVCb3guY3BwCiBsYXlvdXQvaW50ZWdyYXRpb24vSW5saW5lSXRlcmF0b3JMaW5l
LmNwcAorbGF5b3V0L2ludGVncmF0aW9uL0lubGluZUl0ZXJhdG9yTG9naWNhbE9yZGVyVHJhdmVy
c2FsLmNwcAogbGF5b3V0L2ludGVncmF0aW9uL0lubGluZUl0ZXJhdG9yVGV4dEJveC5jcHAKIGxh
eW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbkJveFRyZWUuY3BwCiBsYXlvdXQvaW50
ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25Db3ZlcmFnZS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBhMTIzNmVmZWI3MzA4
ZDUzOTBlNWY4Y2UwZDI3Njk0ZGE0MTJkMTllLi44NzMzNmIzYTFkMjEzNWU4NGQ5ZGQ5NjkwYTY3
YTQwMzAwZDdlNDExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCkBAIC01MjUyLDYgKzUyNTIsNyBAQAogCQlFNDE1RUIxMzI3MEMzNTEz
MDBFOERBMUIgLyogSW5saW5lSXRlcmF0b3JJbmxpbmVCb3guaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0MTVFQjExMjcwQzM1MTIwMEU4REExQiAvKiBJ
bmxpbmVJdGVyYXRvcklubGluZUJveC5oICovOyB9OwogCQlFNDE4MDI1NTIzRDQ1NDlCMDBGRkIw
NzEgLyogTGF5b3V0SW50ZWdyYXRpb25Cb3hUcmVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNDE4MDI1MzIzRDQ1NDlBMDBGRkIwNzEgLyogTGF5b3V0
SW50ZWdyYXRpb25Cb3hUcmVlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJRTQxOTA0MUYxQ0M2NDg2QjAwQzM1RjVEIC8qIEZvbnRTZWxlY3RvckNs
aWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTQx
OTA0MUUxQ0M2NDg2QjAwQzM1RjVEIC8qIEZvbnRTZWxlY3RvckNsaWVudC5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUU0MUFDQzE2MjcxNzM0MDIw
MDNFOTE1NyAvKiBJbmxpbmVJdGVyYXRvckxvZ2ljYWxPcmRlclRyYXZlcnNhbC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTQxQUNDMTUyNzE3MzQwMjAw
M0U5MTU3IC8qIElubGluZUl0ZXJhdG9yTG9naWNhbE9yZGVyVHJhdmVyc2FsLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTQyMDUwMTcyMTQxOTAx
QjAwNjZFRjNCIC8qIFByb2Nlc3NXYXJtaW5nLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBFNDIwNTAxNDIxNDE5MDFBMDA2NkVGM0IgLyogUHJvY2Vzc1dh
cm1pbmcuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQlFNDI0QTM5RTEzMzBERjAxMDBDRjZEQzkgLyogTGVnYWN5VGlsZUdyaWRUaWxlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNDI0QTM5RDEzMzBERjAx
MDBDRjZEQzkgLyogTGVnYWN5VGlsZUdyaWRUaWxlLmggKi87IH07CiAJCUU0MjVBNDlBMTgyOTJC
ODQwMDIwQ0ZDRiAvKiBDb2xsZWN0aW9uSW5kZXhDYWNoZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTQyNUE0OTkxODI5MkI4NDAwMjBDRkNGIC8qIENv
bGxlY3Rpb25JbmRleENhY2hlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKQEAgLTE2NTM0LDYgKzE2NTM1LDggQEAKIAkJRTQxODAyNTMyM0Q0NTQ5QTAw
RkZCMDcxIC8qIExheW91dEludGVncmF0aW9uQm94VHJlZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBMYXlvdXRJbnRlZ3JhdGlvbkJveFRyZWUuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJRTQxODAyNTYyM0Q0NTRCNTAwRkZCMDcxIC8qIExheW91dEludGVncmF0
aW9uQm94VHJlZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBMYXlvdXRJbnRlZ3JhdGlvbkJveFRy
ZWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFNDE5MDQxRTFDQzY0ODZCMDBD
MzVGNUQgLyogRm9udFNlbGVjdG9yQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEZvbnRTZWxlY3RvckNsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlFNDFBQ0MxMjI3MTczM0YzMDAzRTkxNTcgLyogSW5saW5lSXRlcmF0b3JMb2dpY2FsT3JkZXJU
cmF2ZXJzYWwuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5saW5l
SXRlcmF0b3JMb2dpY2FsT3JkZXJUcmF2ZXJzYWwuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlFNDFBQ0MxNTI3MTczNDAyMDAzRTkxNTcgLyogSW5saW5lSXRlcmF0b3JMb2dpY2Fs
T3JkZXJUcmF2ZXJzYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5saW5l
SXRlcmF0b3JMb2dpY2FsT3JkZXJUcmF2ZXJzYWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJRTQxRUEwMzgxMTk4MzZEQjAwNzEwQkM1IC8qIENTU1Byb3BlcnR5TmFtZXMuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gQ1NTUHJvcGVydHlOYW1lcy5jcHA7
IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJDb3JlL0NTU1Byb3BlcnR5TmFtZXMuY3BwOyBzb3Vy
Y2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQlFNDFFQTAzOTExOTgzNzQ5MDA3MTBC
QzUgLyogQ1NTVmFsdWVLZXl3b3Jkcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IG5hbWUgPSBDU1NWYWx1ZUtleXdvcmRzLmNwcDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYkNv
cmUvQ1NTVmFsdWVLZXl3b3Jkcy5jcHA7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7
IH07CiAJCUU0MjA1MDE0MjE0MTkwMUEwMDY2RUYzQiAvKiBQcm9jZXNzV2FybWluZy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQcm9jZXNzV2FybWluZy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtMjk3MDcsNiArMjk3MTAsOCBAQAogCQkJCUU0RDMzRjNGMjUy
QzRCODIwMDgzN0QwNSAvKiBJbmxpbmVJdGVyYXRvckxpbmUuaCAqLywKIAkJCQlFNEQzM0Y0MzI1
MkM1MEUyMDA4MzdEMDUgLyogSW5saW5lSXRlcmF0b3JMaW5lTGVnYWN5UGF0aC5oICovLAogCQkJ
CUU0RDMzRjQ1MjUyQzUwRkIwMDgzN0QwNSAvKiBJbmxpbmVJdGVyYXRvckxpbmVNb2Rlcm5QYXRo
LmggKi8sCisJCQkJRTQxQUNDMTIyNzE3MzNGMzAwM0U5MTU3IC8qIElubGluZUl0ZXJhdG9yTG9n
aWNhbE9yZGVyVHJhdmVyc2FsLmNwcCAqLywKKwkJCQlFNDFBQ0MxNTI3MTczNDAyMDAzRTkxNTcg
LyogSW5saW5lSXRlcmF0b3JMb2dpY2FsT3JkZXJUcmF2ZXJzYWwuaCAqLywKIAkJCQlFNDdDRUJE
RTI3MDk5MTY0MDBCOEQ4RjUgLyogSW5saW5lSXRlcmF0b3JUZXh0Qm94LmNwcCAqLywKIAkJCQlF
NDdDRUJFMDI3MDk5MTZEMDBCOEQ4RjUgLyogSW5saW5lSXRlcmF0b3JUZXh0Qm94LmggKi8sCiAJ
CQkJRTQxODAyNTYyM0Q0NTRCNTAwRkZCMDcxIC8qIExheW91dEludGVncmF0aW9uQm94VHJlZS5j
cHAgKi8sCkBAIC0zMzI0OCw2ICszMzI1Myw3IEBACiAJCQkJRTREMzNGNDEyNTJDNEI4MzAwODM3
RDA1IC8qIElubGluZUl0ZXJhdG9yTGluZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTREMzNGNDQy
NTJDNTBFMjAwODM3RDA1IC8qIElubGluZUl0ZXJhdG9yTGluZUxlZ2FjeVBhdGguaCBpbiBIZWFk
ZXJzICovLAogCQkJCUU0RDMzRjQ2MjUyQzUwRkMwMDgzN0QwNSAvKiBJbmxpbmVJdGVyYXRvckxp
bmVNb2Rlcm5QYXRoLmggaW4gSGVhZGVycyAqLywKKwkJCQlFNDFBQ0MxNjI3MTczNDAyMDAzRTkx
NTcgLyogSW5saW5lSXRlcmF0b3JMb2dpY2FsT3JkZXJUcmF2ZXJzYWwuaCBpbiBIZWFkZXJzICov
LAogCQkJCUU0N0NFQkUxMjcwOTkxNkQwMEI4RDhGNSAvKiBJbmxpbmVJdGVyYXRvclRleHRCb3gu
aCBpbiBIZWFkZXJzICovLAogCQkJCTZGQUFFNzEzMjZBMjgxNEIwMEUwNzUwMiAvKiBJbmxpbmVM
ZXZlbEJveC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNkYwQ0Q2OTUyMjlFRDMyNzAwQzU5OTRFIC8q
IElubGluZUxpbmUuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL1Bvc2l0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Qb3NpdGlvbi5jcHAKaW5kZXgg
MzI2NTYzZDUwODVjY2UwNDM0Yjc3NTU4NjI0OGE0YzUzYmZmYmMyYS4uMmMzMGRjMzI2N2YzZGY3
NzI5NTE0MjQ2MzllYzMzNWVlNjZhZGY1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L1Bvc2l0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUG9zaXRpb24uY3BwCkBAIC0z
Nyw2ICszNyw3IEBACiAjaW5jbHVkZSAiSFRNTFBhcnNlcklkaW9tcy5oIgogI2luY2x1ZGUgIkhU
TUxUYWJsZUVsZW1lbnQuaCIKICNpbmNsdWRlICJJbmxpbmVJdGVyYXRvckxpbmUuaCIKKyNpbmNs
dWRlICJJbmxpbmVJdGVyYXRvckxvZ2ljYWxPcmRlclRyYXZlcnNhbC5oIgogI2luY2x1ZGUgIklu
bGluZUl0ZXJhdG9yVGV4dEJveC5oIgogI2luY2x1ZGUgIklubGluZVJ1bkFuZE9mZnNldC5oIgog
I2luY2x1ZGUgIkxlZ2FjeUlubGluZVRleHRCb3guaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHAKaW5kZXggYzVlODViMTg4ZDhkOGE2N2FkYjM1
ZjM4NGE5YmJiYzExMTA2ZTEyNC4uOWRiYTIxODJhZjQ5MmEzODVmMzY5OWUwZDhmM2M2OTBlNDM2
NjdiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29t
bWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFu
ZC5jcHAKQEAgLTQ4LDYgKzQ4LDcgQEAKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRl
ICJIVE1MU3BhbkVsZW1lbnQuaCIKICNpbmNsdWRlICJJbmxpbmVJdGVyYXRvckJveC5oIgorI2lu
Y2x1ZGUgIklubGluZUl0ZXJhdG9yTG9naWNhbE9yZGVyVHJhdmVyc2FsLmgiCiAjaW5jbHVkZSAi
SW5zZXJ0SW50b1RleHROb2RlQ29tbWFuZC5oIgogI2luY2x1ZGUgIkluc2VydExpbmVCcmVha0Nv
bW1hbmQuaCIKICNpbmNsdWRlICJJbnNlcnROb2RlQmVmb3JlQ29tbWFuZC5oIgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuaCBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmgKaW5kZXggZWYyM2FkZTBhYzE2MGIwNjdhYjk1NzdjNDJm
ZGJhOGNkMjZhOTFjNi4uYWI3N2Y0MjA2ZWJhMDQzNTJmMGQ1MGZlMTIyYjE3ZWUxZTRiOGMxYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5oCkBAIC0yNyw2ICsyNyw3IEBACiAK
ICNpbmNsdWRlICJDaGFyYWN0ZXJSYW5nZS5oIgogI2luY2x1ZGUgIkZpbmRPcHRpb25zLmgiCisj
aW5jbHVkZSAiSW5saW5lSXRlcmF0b3JMb2dpY2FsT3JkZXJUcmF2ZXJzYWwuaCIKICNpbmNsdWRl
ICJJbmxpbmVJdGVyYXRvclRleHRCb3guaCIKICNpbmNsdWRlICJTaW1wbGVSYW5nZS5oIgogI2lu
Y2x1ZGUgIlRleHRJdGVyYXRvckJlaGF2aW9yLmgiCkBAIC0xNTEsMTEgKzE1MiwxMSBAQCBwcml2
YXRlOgogICAgIC8vIFVzZWQgd2hlbiB0aGVyZSBpcyBzdGlsbCBzb21lIHBlbmRpbmcgdGV4dCBm
cm9tIHRoZSBjdXJyZW50IG5vZGU7IHdoZW4gdGhlc2UgYXJlIGZhbHNlIGFuZCBudWxsLCB3ZSBn
byBiYWNrIHRvIG5vcm1hbCBpdGVyYXRpbmcuCiAgICAgTm9kZSogbV9ub2RlRm9yQWRkaXRpb25h
bE5ld2xpbmUgeyBudWxscHRyIH07CiAgICAgSW5saW5lSXRlcmF0b3I6OlRleHRCb3hJdGVyYXRv
ciBtX3RleHRSdW47Ci0gICAgSW5saW5lSXRlcmF0b3I6OkxvZ2ljYWxPcmRlckNhY2hlIG1fdGV4
dFJ1bkxvZ2ljYWxPcmRlckNhY2hlOworICAgIElubGluZUl0ZXJhdG9yOjpUZXh0TG9naWNhbE9y
ZGVyQ2FjaGUgbV90ZXh0UnVuTG9naWNhbE9yZGVyQ2FjaGU7CiAKICAgICAvLyBVc2VkIHdoZW4g
aXRlcmF0aW5nIG92ZXIgOmZpcnN0LWxldHRlciB0ZXh0IHRvIHNhdmUgcG9pbnRlciB0byByZW1h
aW5pbmcgdGV4dCBib3guCiAgICAgSW5saW5lSXRlcmF0b3I6OlRleHRCb3hJdGVyYXRvciBtX3Jl
bWFpbmluZ1RleHRSdW47Ci0gICAgSW5saW5lSXRlcmF0b3I6OkxvZ2ljYWxPcmRlckNhY2hlIG1f
cmVtYWluaW5nVGV4dFJ1bkxvZ2ljYWxPcmRlckNhY2hlOworICAgIElubGluZUl0ZXJhdG9yOjpU
ZXh0TG9naWNhbE9yZGVyQ2FjaGUgbV9yZW1haW5pbmdUZXh0UnVuTG9naWNhbE9yZGVyQ2FjaGU7
CiAKICAgICAvLyBVc2VkIHRvIHBvaW50IHRvIFJlbmRlclRleHQgb2JqZWN0IGZvciA6Zmlyc3Qt
bGV0dGVyLgogICAgIFJlbmRlclRleHQqIG1fZmlyc3RMZXR0ZXJUZXh0IHsgbnVsbHB0ciB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlUG9zaXRpb24uY3BwIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlUG9zaXRpb24uY3BwCmluZGV4IDI0ZGE1NWIz
YjQxNjFlOTNlZWZlNTIyNmUzN2U2ODkxMDI4NWZiMDkuLjJjM2UwNzhhMzJhMmZlZjIxZGE0ZmVj
ZjlkZGFkYjcxNDJhZWYzMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlz
aWJsZVBvc2l0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVQb3Np
dGlvbi5jcHAKQEAgLTEyMiw2ICsxMjIsOCBAQCBQb3NpdGlvbiBWaXNpYmxlUG9zaXRpb246Omxl
ZnRWaXN1YWxseURpc3RpbmN0Q2FuZGlkYXRlKCkgY29uc3QKICAgICBQb3NpdGlvbiBkb3duc3Ry
ZWFtU3RhcnQgPSBwLmRvd25zdHJlYW0oKTsKICAgICBUZXh0RGlyZWN0aW9uIHByaW1hcnlEaXJl
Y3Rpb24gPSBwLnByaW1hcnlEaXJlY3Rpb24oKTsKIAorICAgIElubGluZUl0ZXJhdG9yOjpMaW5l
TG9naWNhbE9yZGVyQ2FjaGUgb3JkZXJDYWNoZTsKKwogICAgIHdoaWxlICh0cnVlKSB7CiAgICAg
ICAgIGF1dG8gW3J1biwgb2Zmc2V0XSA9IHAuaW5saW5lUnVuQW5kT2Zmc2V0KG1fYWZmaW5pdHks
IHByaW1hcnlEaXJlY3Rpb24pOwogICAgICAgICBpZiAoIXJ1bikKQEAgLTE3NCw3ICsxNzYsOSBA
QCBQb3NpdGlvbiBWaXNpYmxlUG9zaXRpb246OmxlZnRWaXN1YWxseURpc3RpbmN0Q2FuZGlkYXRl
KCkgY29uc3QKIAogICAgICAgICAgICAgaWYgKHJ1bi0+ZGlyZWN0aW9uKCkgPT0gcHJpbWFyeURp
cmVjdGlvbikgewogICAgICAgICAgICAgICAgIGlmICghcHJldmlvdXNSdW4pIHsKLSAgICAgICAg
ICAgICAgICAgICAgYXV0byBsb2dpY2FsU3RhcnQgPSAocHJpbWFyeURpcmVjdGlvbiA9PSBUZXh0
RGlyZWN0aW9uOjpMVFIpID8gcnVuLT5saW5lKCktPmxvZ2ljYWxTdGFydFJ1bldpdGhOb2RlKCkg
OiBydW4tPmxpbmUoKS0+bG9naWNhbEVuZFJ1bldpdGhOb2RlKCk7CisgICAgICAgICAgICAgICAg
ICAgIGF1dG8gbG9naWNhbFN0YXJ0ID0gcHJpbWFyeURpcmVjdGlvbiA9PSBUZXh0RGlyZWN0aW9u
OjpMVFIKKyAgICAgICAgICAgICAgICAgICAgICAgID8gSW5saW5lSXRlcmF0b3I6OmZpcnN0TGVh
Zk9uTGluZUluTG9naWNhbE9yZGVyV2l0aE5vZGUocnVuLT5saW5lKCksIG9yZGVyQ2FjaGUpCisg
ICAgICAgICAgICAgICAgICAgICAgICA6IElubGluZUl0ZXJhdG9yOjpsYXN0TGVhZk9uTGluZUlu
TG9naWNhbE9yZGVyV2l0aE5vZGUocnVuLT5saW5lKCksIG9yZGVyQ2FjaGUpOwogICAgICAgICAg
ICAgICAgICAgICBpZiAobG9naWNhbFN0YXJ0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBy
dW4gPSBsb2dpY2FsU3RhcnQ7CiAgICAgICAgICAgICAgICAgICAgICAgICByZW5kZXJlciA9ICZy
dW4tPnJlbmRlcmVyKCk7CkBAIC0yODQsNiArMjg4LDggQEAgUG9zaXRpb24gVmlzaWJsZVBvc2l0
aW9uOjpyaWdodFZpc3VhbGx5RGlzdGluY3RDYW5kaWRhdGUoKSBjb25zdAogICAgIFBvc2l0aW9u
IGRvd25zdHJlYW1TdGFydCA9IHAuZG93bnN0cmVhbSgpOwogICAgIFRleHREaXJlY3Rpb24gcHJp
bWFyeURpcmVjdGlvbiA9IHAucHJpbWFyeURpcmVjdGlvbigpOwogCisgICAgSW5saW5lSXRlcmF0
b3I6OkxpbmVMb2dpY2FsT3JkZXJDYWNoZSBvcmRlckNhY2hlOworCiAgICAgd2hpbGUgKHRydWUp
IHsKICAgICAgICAgYXV0byBbcnVuLCBvZmZzZXRdID0gcC5pbmxpbmVSdW5BbmRPZmZzZXQobV9h
ZmZpbml0eSwgcHJpbWFyeURpcmVjdGlvbik7CiAgICAgICAgIGlmICghcnVuKQpAQCAtMzM2LDcg
KzM0MiwxMCBAQCBQb3NpdGlvbiBWaXNpYmxlUG9zaXRpb246OnJpZ2h0VmlzdWFsbHlEaXN0aW5j
dENhbmRpZGF0ZSgpIGNvbnN0CiAKICAgICAgICAgICAgIGlmIChydW4tPmRpcmVjdGlvbigpID09
IHByaW1hcnlEaXJlY3Rpb24pIHsKICAgICAgICAgICAgICAgICBpZiAoIW5leHRSdW4pIHsKLSAg
ICAgICAgICAgICAgICAgICAgYXV0byBsb2dpY2FsRW5kID0gcHJpbWFyeURpcmVjdGlvbiA9PSBU
ZXh0RGlyZWN0aW9uOjpMVFIgPyBydW4tPmxpbmUoKS0+bG9naWNhbEVuZFJ1bldpdGhOb2RlKCkg
OiBydW4tPmxpbmUoKS0+bG9naWNhbFN0YXJ0UnVuV2l0aE5vZGUoKTsKKyAgICAgICAgICAgICAg
ICAgICAgYXV0byBsb2dpY2FsRW5kID0gcHJpbWFyeURpcmVjdGlvbiA9PSBUZXh0RGlyZWN0aW9u
OjpMVFIKKyAgICAgICAgICAgICAgICAgICAgICAgID8gSW5saW5lSXRlcmF0b3I6Omxhc3RMZWFm
T25MaW5lSW5Mb2dpY2FsT3JkZXJXaXRoTm9kZShydW4tPmxpbmUoKSwgb3JkZXJDYWNoZSkKKyAg
ICAgICAgICAgICAgICAgICAgICAgIDogSW5saW5lSXRlcmF0b3I6OmZpcnN0TGVhZk9uTGluZUlu
TG9naWNhbE9yZGVyV2l0aE5vZGUocnVuLT5saW5lKCksIG9yZGVyQ2FjaGUpOworCiAgICAgICAg
ICAgICAgICAgICAgIGlmIChsb2dpY2FsRW5kKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBy
dW4gPSBsb2dpY2FsRW5kOwogICAgICAgICAgICAgICAgICAgICAgICAgcmVuZGVyZXIgPSAmcnVu
LT5yZW5kZXJlcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxl
VW5pdHMuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlVW5pdHMuY3BwCmluZGV4
IDkzODc4ODgzY2U4ZDVmNzA3YjczYjAyZDg3NjA0Yzg1Y2VkY2ZhZWIuLjZjMDI0YmUzNTQ4NTlm
MGNjNzcwZjExOWVmOWU3MWJiYTVkNGFkNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvVmlzaWJsZVVuaXRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2li
bGVVbml0cy5jcHAKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNp
bmNsdWRlICJJbmxpbmVJdGVyYXRvckJveC5oIgogI2luY2x1ZGUgIklubGluZUl0ZXJhdG9yTGlu
ZS5oIgorI2luY2x1ZGUgIklubGluZUl0ZXJhdG9yTG9naWNhbE9yZGVyVHJhdmVyc2FsLmgiCiAj
aW5jbHVkZSAiSW5saW5lUnVuQW5kT2Zmc2V0LmgiCiAjaW5jbHVkZSAiTm9kZVRyYXZlcnNhbC5o
IgogI2luY2x1ZGUgIlJhbmdlLmgiCkBAIC0xMjksNTAgKzEzMCw1MCBAQCBzdGF0aWMgYm9vbCBp
c1RleHRPckxpbmVCcmVha1J1bihJbmxpbmVJdGVyYXRvcjo6TGVhZkJveEl0ZXJhdG9yIHJ1bikK
ICAgICByZXR1cm4gcnVuICYmIChydW4tPmlzVGV4dCgpIHx8IHJ1bi0+cmVuZGVyZXIoKS5pc0JS
KCkpOwogfQogCi1zdGF0aWMgSW5saW5lSXRlcmF0b3I6OkxlYWZCb3hJdGVyYXRvciBwcmV2aW91
c1RleHRPckxpbmVCcmVha1J1bihJbmxpbmVJdGVyYXRvcjo6TGVhZkJveEl0ZXJhdG9yIHJ1bikK
K3N0YXRpYyBJbmxpbmVJdGVyYXRvcjo6TGVhZkJveEl0ZXJhdG9yIHByZXZpb3VzVGV4dE9yTGlu
ZUJyZWFrUnVuKElubGluZUl0ZXJhdG9yOjpMZWFmQm94SXRlcmF0b3IgcnVuLCBJbmxpbmVJdGVy
YXRvcjo6TGluZUxvZ2ljYWxPcmRlckNhY2hlJiBvcmRlckNhY2hlKQogewogICAgIHdoaWxlIChy
dW4pIHsKLSAgICAgICAgcnVuLnRyYXZlcnNlUHJldmlvdXNPbkxpbmVJbkxvZ2ljYWxPcmRlcigp
OworICAgICAgICBydW4gPSBJbmxpbmVJdGVyYXRvcjo6cHJldmlvdXNMZWFmT25MaW5lSW5Mb2dp
Y2FsT3JkZXIocnVuLCBvcmRlckNhY2hlKTsKICAgICAgICAgaWYgKGlzVGV4dE9yTGluZUJyZWFr
UnVuKHJ1bikpCiAgICAgICAgICAgICByZXR1cm4gcnVuOwogICAgIH0KICAgICByZXR1cm4geyB9
OwogfQogCi1zdGF0aWMgSW5saW5lSXRlcmF0b3I6OkxlYWZCb3hJdGVyYXRvciBuZXh0VGV4dE9y
TGluZUJyZWFrUnVuKElubGluZUl0ZXJhdG9yOjpMZWFmQm94SXRlcmF0b3IgcnVuKQorc3RhdGlj
IElubGluZUl0ZXJhdG9yOjpMZWFmQm94SXRlcmF0b3IgbmV4dFRleHRPckxpbmVCcmVha1J1bihJ
bmxpbmVJdGVyYXRvcjo6TGVhZkJveEl0ZXJhdG9yIHJ1biwgSW5saW5lSXRlcmF0b3I6OkxpbmVM
b2dpY2FsT3JkZXJDYWNoZSYgb3JkZXJDYWNoZSkKIHsKICAgICB3aGlsZSAocnVuKSB7Ci0gICAg
ICAgIHJ1bi50cmF2ZXJzZU5leHRPbkxpbmVJbkxvZ2ljYWxPcmRlcigpOworICAgICAgICBydW4g
PSBJbmxpbmVJdGVyYXRvcjo6bmV4dExlYWZPbkxpbmVJbkxvZ2ljYWxPcmRlcihydW4sIG9yZGVy
Q2FjaGUpOwogICAgICAgICBpZiAoaXNUZXh0T3JMaW5lQnJlYWtSdW4ocnVuKSkKICAgICAgICAg
ICAgIHJldHVybiBydW47CiAgICAgfQogICAgIHJldHVybiB7IH07CiB9CiAKLXN0YXRpYyBJbmxp
bmVJdGVyYXRvcjo6TGVhZkJveEl0ZXJhdG9yIHN0YXJ0VGV4dE9yTGluZUJyZWFrUnVuKElubGlu
ZUl0ZXJhdG9yOjpMaW5lSXRlcmF0b3IgbGluZSkKK3N0YXRpYyBJbmxpbmVJdGVyYXRvcjo6TGVh
ZkJveEl0ZXJhdG9yIHN0YXJ0VGV4dE9yTGluZUJyZWFrUnVuKElubGluZUl0ZXJhdG9yOjpMaW5l
SXRlcmF0b3IgbGluZSwgSW5saW5lSXRlcmF0b3I6OkxpbmVMb2dpY2FsT3JkZXJDYWNoZSYgb3Jk
ZXJDYWNoZSkKIHsKLSAgICBhdXRvIHJ1biA9IGxpbmUtPmxvZ2ljYWxTdGFydFJ1bigpOworICAg
IGF1dG8gcnVuID0gSW5saW5lSXRlcmF0b3I6OmZpcnN0TGVhZk9uTGluZUluTG9naWNhbE9yZGVy
KGxpbmUsIG9yZGVyQ2FjaGUpOwogICAgIGlmIChpc1RleHRPckxpbmVCcmVha1J1bihydW4pKQog
ICAgICAgICByZXR1cm4gcnVuOwotICAgIHJldHVybiBuZXh0VGV4dE9yTGluZUJyZWFrUnVuKHJ1
bik7CisgICAgcmV0dXJuIG5leHRUZXh0T3JMaW5lQnJlYWtSdW4ocnVuLCBvcmRlckNhY2hlKTsK
IH0KIAotc3RhdGljIElubGluZUl0ZXJhdG9yOjpMZWFmQm94SXRlcmF0b3IgZW5kVGV4dE9yTGlu
ZUJyZWFrUnVuKElubGluZUl0ZXJhdG9yOjpMaW5lSXRlcmF0b3IgbGluZSkKK3N0YXRpYyBJbmxp
bmVJdGVyYXRvcjo6TGVhZkJveEl0ZXJhdG9yIGVuZFRleHRPckxpbmVCcmVha1J1bihJbmxpbmVJ
dGVyYXRvcjo6TGluZUl0ZXJhdG9yIGxpbmUsIElubGluZUl0ZXJhdG9yOjpMaW5lTG9naWNhbE9y
ZGVyQ2FjaGUmIG9yZGVyQ2FjaGUpCiB7Ci0gICAgYXV0byBydW4gPSBsaW5lLT5sb2dpY2FsRW5k
UnVuKCk7CisgICAgYXV0byBydW4gPSBJbmxpbmVJdGVyYXRvcjo6bGFzdExlYWZPbkxpbmVJbkxv
Z2ljYWxPcmRlcihsaW5lLCBvcmRlckNhY2hlKTsKICAgICBpZiAoaXNUZXh0T3JMaW5lQnJlYWtS
dW4ocnVuKSkKICAgICAgICAgcmV0dXJuIHJ1bjsKLSAgICByZXR1cm4gcHJldmlvdXNUZXh0T3JM
aW5lQnJlYWtSdW4ocnVuKTsKKyAgICByZXR1cm4gcHJldmlvdXNUZXh0T3JMaW5lQnJlYWtSdW4o
cnVuLCBvcmRlckNhY2hlKTsKIH0KIAotc3RhdGljIGNvbnN0IElubGluZUl0ZXJhdG9yOjpMZWFm
Qm94SXRlcmF0b3IgbG9naWNhbGx5UHJldmlvdXNSdW4oY29uc3QgVmlzaWJsZVBvc2l0aW9uJiB2
aXNpYmxlUG9zaXRpb24sIElubGluZUl0ZXJhdG9yOjpMZWFmQm94SXRlcmF0b3Igc3RhcnRSdW4s
IGJvb2wmIHByZXZpb3VzQm94SW5EaWZmZXJlbnRMaW5lKQorc3RhdGljIGNvbnN0IElubGluZUl0
ZXJhdG9yOjpMZWFmQm94SXRlcmF0b3IgbG9naWNhbGx5UHJldmlvdXNSdW4oY29uc3QgVmlzaWJs
ZVBvc2l0aW9uJiB2aXNpYmxlUG9zaXRpb24sIElubGluZUl0ZXJhdG9yOjpMZWFmQm94SXRlcmF0
b3Igc3RhcnRSdW4sIElubGluZUl0ZXJhdG9yOjpMaW5lTG9naWNhbE9yZGVyQ2FjaGUmIG9yZGVy
Q2FjaGUsIGJvb2wmIHByZXZpb3VzQm94SW5EaWZmZXJlbnRMaW5lKQogewotICAgIGlmIChhdXRv
IHByZXZpb3VzUnVuID0gcHJldmlvdXNUZXh0T3JMaW5lQnJlYWtSdW4oc3RhcnRSdW4pKQorICAg
IGlmIChhdXRvIHByZXZpb3VzUnVuID0gcHJldmlvdXNUZXh0T3JMaW5lQnJlYWtSdW4oc3RhcnRS
dW4sIG9yZGVyQ2FjaGUpKQogICAgICAgICByZXR1cm4gcHJldmlvdXNSdW47CiAKICAgICBpZiAo
YXV0byBwcmV2aW91c0xpbmUgPSBzdGFydFJ1bi0+bGluZSgpLT5wcmV2aW91cygpKSB7CiAgICAg
ICAgIC8vIEZJWE1FOiBXaHkgaXNuJ3QgcHJldmlvdXNCb3hJbkRpZmZlcmVudExpbmUgc2V0IGhl
cmU/Ci0gICAgICAgIGlmIChhdXRvIHByZXZpb3VzUnVuID0gZW5kVGV4dE9yTGluZUJyZWFrUnVu
KHByZXZpb3VzTGluZSkpCisgICAgICAgIGlmIChhdXRvIHByZXZpb3VzUnVuID0gZW5kVGV4dE9y
TGluZUJyZWFrUnVuKHByZXZpb3VzTGluZSwgb3JkZXJDYWNoZSkpCiAgICAgICAgICAgICByZXR1
cm4gcHJldmlvdXNSdW47CiAgICAgfQogCkBAIC0xOTEsMjYgKzE5MiwyNiBAQCBzdGF0aWMgY29u
c3QgSW5saW5lSXRlcmF0b3I6OkxlYWZCb3hJdGVyYXRvciBsb2dpY2FsbHlQcmV2aW91c1J1bihj
b25zdCBWaXNpYmxlUAogICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgaWYgKHByZXZpb3Vz
TGluZSAhPSBzdGFydFJ1bi0+bGluZSgpKSB7Ci0gICAgICAgICAgICBpZiAoYXV0byBwcmV2aW91
c1J1biA9IGVuZFRleHRPckxpbmVCcmVha1J1bihwcmV2aW91c0xpbmUpKSB7CisgICAgICAgICAg
ICBpZiAoYXV0byBwcmV2aW91c1J1biA9IGVuZFRleHRPckxpbmVCcmVha1J1bihwcmV2aW91c0xp
bmUsIG9yZGVyQ2FjaGUpKSB7CiAgICAgICAgICAgICAgICAgcHJldmlvdXNCb3hJbkRpZmZlcmVu
dExpbmUgPSB0cnVlOwogICAgICAgICAgICAgICAgIHJldHVybiBwcmV2aW91c1J1bjsKICAgICAg
ICAgICAgIH0KICAgICAgICAgfQogCi0gICAgICAgIHN0YXJ0UnVuID0gcHJldmlvdXNMaW5lLT5s
b2dpY2FsU3RhcnRSdW4oKTsKKyAgICAgICAgc3RhcnRSdW4gPSBJbmxpbmVJdGVyYXRvcjo6Zmly
c3RMZWFmT25MaW5lSW5Mb2dpY2FsT3JkZXIocHJldmlvdXNMaW5lLCBvcmRlckNhY2hlKTsKICAg
ICB9CiAgICAgcmV0dXJuIHsgfTsKIH0KIAogCi1zdGF0aWMgY29uc3QgSW5saW5lSXRlcmF0b3I6
OkxlYWZCb3hJdGVyYXRvciBsb2dpY2FsbHlOZXh0UnVuKGNvbnN0IFZpc2libGVQb3NpdGlvbiYg
dmlzaWJsZVBvc2l0aW9uLCBJbmxpbmVJdGVyYXRvcjo6TGVhZkJveEl0ZXJhdG9yIHN0YXJ0UnVu
LCBib29sJiBuZXh0Qm94SW5EaWZmZXJlbnRMaW5lKQorc3RhdGljIGNvbnN0IElubGluZUl0ZXJh
dG9yOjpMZWFmQm94SXRlcmF0b3IgbG9naWNhbGx5TmV4dFJ1bihjb25zdCBWaXNpYmxlUG9zaXRp
b24mIHZpc2libGVQb3NpdGlvbiwgSW5saW5lSXRlcmF0b3I6OkxlYWZCb3hJdGVyYXRvciBzdGFy
dFJ1biwgSW5saW5lSXRlcmF0b3I6OkxpbmVMb2dpY2FsT3JkZXJDYWNoZSYgb3JkZXJDYWNoZSwg
Ym9vbCYgbmV4dEJveEluRGlmZmVyZW50TGluZSkKIHsKLSAgICBpZiAoYXV0byBuZXh0UnVuID0g
bmV4dFRleHRPckxpbmVCcmVha1J1bihzdGFydFJ1bikpCisgICAgaWYgKGF1dG8gbmV4dFJ1biA9
IG5leHRUZXh0T3JMaW5lQnJlYWtSdW4oc3RhcnRSdW4sIG9yZGVyQ2FjaGUpKQogICAgICAgICBy
ZXR1cm4gbmV4dFJ1bjsKIAogICAgIGlmIChhdXRvIG5leHRMaW5lID0gc3RhcnRSdW4tPmxpbmUo
KS0+bmV4dCgpKSB7CiAgICAgICAgIC8vIEZJWE1FOiBXaHkgaXNuJ3QgcHJldmlvdXNCb3hJbkRp
ZmZlcmVudExpbmUgc2V0IGhlcmU/Ci0gICAgICAgIGlmIChhdXRvIG5leHRSdW4gPSBzdGFydFRl
eHRPckxpbmVCcmVha1J1bihuZXh0TGluZSkpCisgICAgICAgIGlmIChhdXRvIG5leHRSdW4gPSBz
dGFydFRleHRPckxpbmVCcmVha1J1bihuZXh0TGluZSwgb3JkZXJDYWNoZSkpCiAgICAgICAgICAg
ICByZXR1cm4gbmV4dFJ1bjsKICAgICB9CiAKQEAgLTIyOSwxMyArMjMwLDEzIEBAIHN0YXRpYyBj
b25zdCBJbmxpbmVJdGVyYXRvcjo6TGVhZkJveEl0ZXJhdG9yIGxvZ2ljYWxseU5leHRSdW4oY29u
c3QgVmlzaWJsZVBvc2l0CiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBpZiAobmV4dExp
bmUgIT0gc3RhcnRSdW4tPmxpbmUoKSkgewotICAgICAgICAgICAgaWYgKGF1dG8gbmV4dFJ1biA9
IHN0YXJ0VGV4dE9yTGluZUJyZWFrUnVuKG5leHRMaW5lKSkgeworICAgICAgICAgICAgaWYgKGF1
dG8gbmV4dFJ1biA9IHN0YXJ0VGV4dE9yTGluZUJyZWFrUnVuKG5leHRMaW5lLCBvcmRlckNhY2hl
KSkgewogICAgICAgICAgICAgICAgIG5leHRCb3hJbkRpZmZlcmVudExpbmUgPSB0cnVlOwogICAg
ICAgICAgICAgICAgIHJldHVybiBuZXh0UnVuOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAK
LSAgICAgICAgc3RhcnRSdW4gPSBuZXh0TGluZS0+bG9naWNhbEVuZFJ1bigpOworICAgICAgICBz
dGFydFJ1biA9IElubGluZUl0ZXJhdG9yOjpsYXN0TGVhZk9uTGluZUluTG9naWNhbE9yZGVyV2l0
aE5vZGUobmV4dExpbmUsIG9yZGVyQ2FjaGUpOwogICAgIH0KICAgICByZXR1cm4geyB9OwogfQpA
QCAtMjQ1LDExICsyNDYsMTIgQEAgc3RhdGljIFVCcmVha0l0ZXJhdG9yKiB3b3JkQnJlYWtJdGVy
YXRvckZvck1pbk9mZnNldEJvdW5kYXJ5KGNvbnN0IFZpc2libGVQb3NpdGkKIHsKICAgICBwcmV2
aW91c1J1bkluRGlmZmVyZW50TGluZSA9IGZhbHNlOwogCi0gICAgYXV0byBwcmV2aW91c1J1biA9
IGxvZ2ljYWxseVByZXZpb3VzUnVuKHZpc2libGVQb3NpdGlvbiwgdGV4dFJ1biwgcHJldmlvdXNS
dW5JbkRpZmZlcmVudExpbmUpOworICAgIElubGluZUl0ZXJhdG9yOjpMaW5lTG9naWNhbE9yZGVy
Q2FjaGUgb3JkZXJDYWNoZTsKKyAgICBhdXRvIHByZXZpb3VzUnVuID0gbG9naWNhbGx5UHJldmlv
dXNSdW4odmlzaWJsZVBvc2l0aW9uLCB0ZXh0UnVuLCBvcmRlckNhY2hlLCBwcmV2aW91c1J1bklu
RGlmZmVyZW50TGluZSk7CiAgICAgd2hpbGUgKHByZXZpb3VzUnVuICYmICFwcmV2aW91c1J1bi0+
aXNUZXh0KCkpIHsKICAgICAgICAgQVNTRVJUKHByZXZpb3VzUnVuLT5yZW5kZXJlcigpLmlzQlIo
KSk7CiAgICAgICAgIHByZXZpb3VzUnVuSW5EaWZmZXJlbnRMaW5lID0gdHJ1ZTsKLSAgICAgICAg
cHJldmlvdXNSdW4gPSBsb2dpY2FsbHlQcmV2aW91c1J1bih2aXNpYmxlUG9zaXRpb24sIHByZXZp
b3VzUnVuLCBwcmV2aW91c1J1bkluRGlmZmVyZW50TGluZSk7CisgICAgICAgIHByZXZpb3VzUnVu
ID0gbG9naWNhbGx5UHJldmlvdXNSdW4odmlzaWJsZVBvc2l0aW9uLCBwcmV2aW91c1J1biwgb3Jk
ZXJDYWNoZSwgcHJldmlvdXNSdW5JbkRpZmZlcmVudExpbmUpOwogICAgIH0KIAogICAgIHN0cmlu
Zy5jbGVhcigpOwpAQCAtMjY5LDExICsyNzEsMTIgQEAgc3RhdGljIFVCcmVha0l0ZXJhdG9yKiB3
b3JkQnJlYWtJdGVyYXRvckZvck1heE9mZnNldEJvdW5kYXJ5KGNvbnN0IFZpc2libGVQb3NpdGkK
IHsKICAgICBuZXh0UnVuSW5EaWZmZXJlbnRMaW5lID0gZmFsc2U7CiAKLSAgICBhdXRvIG5leHRS
dW4gPSBsb2dpY2FsbHlOZXh0UnVuKHZpc2libGVQb3NpdGlvbiwgdGV4dFJ1biwgbmV4dFJ1bklu
RGlmZmVyZW50TGluZSk7CisgICAgSW5saW5lSXRlcmF0b3I6OkxpbmVMb2dpY2FsT3JkZXJDYWNo
ZSBvcmRlckNhY2hlOworICAgIGF1dG8gbmV4dFJ1biA9IGxvZ2ljYWxseU5leHRSdW4odmlzaWJs
ZVBvc2l0aW9uLCB0ZXh0UnVuLCBvcmRlckNhY2hlLCBuZXh0UnVuSW5EaWZmZXJlbnRMaW5lKTsK
ICAgICB3aGlsZSAobmV4dFJ1biAmJiAhbmV4dFJ1bi0+aXNUZXh0KCkpIHsKICAgICAgICAgQVNT
RVJUKG5leHRSdW4tPnJlbmRlcmVyKCkuaXNCUigpKTsKICAgICAgICAgbmV4dFJ1bkluRGlmZmVy
ZW50TGluZSA9IHRydWU7Ci0gICAgICAgIG5leHRSdW4gPSBsb2dpY2FsbHlOZXh0UnVuKHZpc2li
bGVQb3NpdGlvbiwgbmV4dFJ1biwgbmV4dFJ1bkluRGlmZmVyZW50TGluZSk7CisgICAgICAgIG5l
eHRSdW4gPSBsb2dpY2FsbHlOZXh0UnVuKHZpc2libGVQb3NpdGlvbiwgbmV4dFJ1biwgb3JkZXJD
YWNoZSwgbmV4dFJ1bkluRGlmZmVyZW50TGluZSk7CiAgICAgfQogCiAgICAgc3RyaW5nLmNsZWFy
KCk7CkBAIC03NDYsOCArNzQ5LDEwIEBAIHN0YXRpYyBWaXNpYmxlUG9zaXRpb24gc3RhcnRQb3Np
dGlvbkZvckxpbmUoY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBjLCBMaW5lRW5kcG9pCiAgICAgICAg
IHJldHVybiBWaXNpYmxlUG9zaXRpb24oKTsKICAgICB9CiAKKyAgICBJbmxpbmVJdGVyYXRvcjo6
TGluZUxvZ2ljYWxPcmRlckNhY2hlIG9yZGVyQ2FjaGU7CisKICAgICBOb2RlKiBzdGFydE5vZGUg
PSBudWxscHRyOwotICAgIGF1dG8gc3RhcnRSdW4gPSBtb2RlID09IFVzZUxvZ2ljYWxPcmRlcmlu
ZyA/IGxpbmUtPmxvZ2ljYWxTdGFydFJ1bldpdGhOb2RlKCkgOiBsaW5lLT5maXJzdFJ1bigpOwor
ICAgIGF1dG8gc3RhcnRSdW4gPSBtb2RlID09IFVzZUxvZ2ljYWxPcmRlcmluZyA/IElubGluZUl0
ZXJhdG9yOjpmaXJzdExlYWZPbkxpbmVJbkxvZ2ljYWxPcmRlcldpdGhOb2RlKGxpbmUsIG9yZGVy
Q2FjaGUpIDogbGluZS0+Zmlyc3RSdW4oKTsKICAgICAvLyBHZW5lcmF0ZWQgY29udGVudCAoZS5n
LiBsaXN0IG1hcmtlcnMgYW5kIENTUyA6YmVmb3JlIGFuZCA6YWZ0ZXIgcHNldWRvZWxlbWVudHMp
IGhhdmUgbm8gY29ycmVzcG9uZGluZyBET00gZWxlbWVudCwKICAgICAvLyBhbmQgc28gY2Fubm90
IGJlIHJlcHJlc2VudGVkIGJ5IGEgVmlzaWJsZVBvc2l0aW9uLiBVc2Ugd2hhdGV2ZXIgZm9sbG93
cyBpbnN0ZWFkLgogICAgIHdoaWxlICh0cnVlKSB7CkBAIC03NTksNyArNzY0LDcgQEAgc3RhdGlj
IFZpc2libGVQb3NpdGlvbiBzdGFydFBvc2l0aW9uRm9yTGluZShjb25zdCBWaXNpYmxlUG9zaXRp
b24mIGMsIExpbmVFbmRwb2kKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGlmIChtb2Rl
ID09IFVzZUxvZ2ljYWxPcmRlcmluZykKLSAgICAgICAgICAgIHN0YXJ0UnVuLnRyYXZlcnNlTmV4
dE9uTGluZUluTG9naWNhbE9yZGVyKCk7CisgICAgICAgICAgICBzdGFydFJ1biA9IElubGluZUl0
ZXJhdG9yOjpuZXh0TGVhZk9uTGluZUluTG9naWNhbE9yZGVyKHN0YXJ0UnVuLCBvcmRlckNhY2hl
KTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgc3RhcnRSdW4udHJhdmVyc2VOZXh0T25MaW5l
KCk7CiAgICAgfQpAQCAtODE2LDggKzgyMSwxMCBAQCBzdGF0aWMgVmlzaWJsZVBvc2l0aW9uIGVu
ZFBvc2l0aW9uRm9yTGluZShjb25zdCBWaXNpYmxlUG9zaXRpb24mIGMsIExpbmVFbmRwb2ludAog
ICAgICAgICByZXR1cm4gVmlzaWJsZVBvc2l0aW9uKCk7CiAgICAgfQogCisgICAgSW5saW5lSXRl
cmF0b3I6OkxpbmVMb2dpY2FsT3JkZXJDYWNoZSBvcmRlckNhY2hlOworCiAgICAgTm9kZSogZW5k
Tm9kZSA9IG51bGxwdHI7Ci0gICAgYXV0byBlbmRSdW4gPSBtb2RlID09IFVzZUxvZ2ljYWxPcmRl
cmluZyA/IGxpbmUtPmxvZ2ljYWxFbmRSdW5XaXRoTm9kZSgpIDogbGluZS0+bGFzdFJ1bigpOwor
ICAgIGF1dG8gZW5kUnVuID0gbW9kZSA9PSBVc2VMb2dpY2FsT3JkZXJpbmcgPyBJbmxpbmVJdGVy
YXRvcjo6bGFzdExlYWZPbkxpbmVJbkxvZ2ljYWxPcmRlcihsaW5lLCBvcmRlckNhY2hlKSA6IGxp
bmUtPmxhc3RSdW4oKTsKICAgICAvLyBHZW5lcmF0ZWQgY29udGVudCAoZS5nLiBsaXN0IG1hcmtl
cnMgYW5kIENTUyA6YmVmb3JlIGFuZCA6YWZ0ZXIgcHNldWRvZWxlbWVudHMpIGhhdmUgbm8gY29y
cmVzcG9uZGluZyBET00gZWxlbWVudCwKICAgICAvLyBhbmQgc28gY2Fubm90IGJlIHJlcHJlc2Vu
dGVkIGJ5IGEgVmlzaWJsZVBvc2l0aW9uLiBVc2Ugd2hhdGV2ZXIgcHJlY2VkZXMgaW5zdGVhZC4K
ICAgICB3aGlsZSAodHJ1ZSkgewpAQCAtODI5LDcgKzgzNiw3IEBAIHN0YXRpYyBWaXNpYmxlUG9z
aXRpb24gZW5kUG9zaXRpb25Gb3JMaW5lKGNvbnN0IFZpc2libGVQb3NpdGlvbiYgYywgTGluZUVu
ZHBvaW50CiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBpZiAobW9kZSA9PSBVc2VMb2dp
Y2FsT3JkZXJpbmcpCi0gICAgICAgICAgICBlbmRSdW4udHJhdmVyc2VQcmV2aW91c09uTGluZUlu
TG9naWNhbE9yZGVyKCk7CisgICAgICAgICAgICBlbmRSdW4gPSBJbmxpbmVJdGVyYXRvcjo6cHJl
dmlvdXNMZWFmT25MaW5lSW5Mb2dpY2FsT3JkZXIoZW5kUnVuLCBvcmRlckNhY2hlKTsKICAgICAg
ICAgZWxzZQogICAgICAgICAgICAgZW5kUnVuLnRyYXZlcnNlUHJldmlvdXNPbkxpbmUoKTsKICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vSW5saW5l
SXRlcmF0b3JCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0lubGlu
ZUl0ZXJhdG9yQm94LmNwcAppbmRleCA5MTYxMjIxZGQ5NTA1ZjAwMjYxYjhiODcxMGY4ZjA1MDU5
NDYyNmUwLi40YTBhNzVkZDYwNzk0MjdhODMzYWI3ZmU1NTc3YTE4YTk0ZmI5MjFhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vSW5saW5lSXRlcmF0b3JCb3gu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9JbmxpbmVJdGVyYXRv
ckJveC5jcHAKQEAgLTE0OCwyMiArMTQ4LDYgQEAgTGVhZkJveEl0ZXJhdG9yJiBMZWFmQm94SXRl
cmF0b3I6OnRyYXZlcnNlUHJldmlvdXNPbkxpbmVJZ25vcmluZ0xpbmVCcmVhaygpCiAgICAgcmV0
dXJuICp0aGlzOwogfQogCi1MZWFmQm94SXRlcmF0b3ImIExlYWZCb3hJdGVyYXRvcjo6dHJhdmVy
c2VOZXh0T25MaW5lSW5Mb2dpY2FsT3JkZXIoKQotewotICAgIFdURjo6c3dpdGNoT24obV9ib3gu
bV9wYXRoVmFyaWFudCwgW10oYXV0byYgcGF0aCkgewotICAgICAgICBwYXRoLnRyYXZlcnNlTmV4
dE9uTGluZUluTG9naWNhbE9yZGVyKCk7Ci0gICAgfSk7Ci0gICAgcmV0dXJuICp0aGlzOwotfQot
Ci1MZWFmQm94SXRlcmF0b3ImIExlYWZCb3hJdGVyYXRvcjo6dHJhdmVyc2VQcmV2aW91c09uTGlu
ZUluTG9naWNhbE9yZGVyKCkKLXsKLSAgICBXVEY6OnN3aXRjaE9uKG1fYm94Lm1fcGF0aFZhcmlh
bnQsIFtdKGF1dG8mIHBhdGgpIHsKLSAgICAgICAgcGF0aC50cmF2ZXJzZVByZXZpb3VzT25MaW5l
SW5Mb2dpY2FsT3JkZXIoKTsKLSAgICB9KTsKLSAgICByZXR1cm4gKnRoaXM7Ci19Ci0KIExlYWZC
b3hJdGVyYXRvciBib3hGb3IoY29uc3QgUmVuZGVyTGluZUJyZWFrJiByZW5kZXJlcikKIHsKICNp
ZiBFTkFCTEUoTEFZT1VUX0ZPUk1BVFRJTkdfQ09OVEVYVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9JbmxpbmVJdGVyYXRvckJveC5oIGIvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0lubGluZUl0ZXJhdG9yQm94LmgKaW5kZXggYjQ1YThl
ZTQyMTdjMGZiYzczZDJjMmZjMjNjNDU4MWJjNWJkYjA1MC4uNDgwYWZiODk5M2JkMjcxMmRiNmVh
ZGM5ZjU1MDlhZTI1MTk2NDYxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lu
dGVncmF0aW9uL0lubGluZUl0ZXJhdG9yQm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2ludGVncmF0aW9uL0lubGluZUl0ZXJhdG9yQm94LmgKQEAgLTEzMSw3ICsxMzEsNyBAQCBwdWJs
aWM6CiAgICAgYm9vbCBhdEVuZCgpIGNvbnN0OwogCiBwcm90ZWN0ZWQ6Ci0gICAgQm94SXRlcmF0
b3IoKSA6IG1fYm94KEJveExlZ2FjeVBhdGggeyBudWxscHRyLCB7IH0gfSkgeyB9OworICAgIEJv
eEl0ZXJhdG9yKCkgOiBtX2JveChCb3hMZWdhY3lQYXRoIHsgbnVsbHB0ciB9KSB7IH07CiAgICAg
Qm94SXRlcmF0b3IoQm94OjpQYXRoVmFyaWFudCYmKTsKICAgICBCb3hJdGVyYXRvcihjb25zdCBC
b3gmKTsKIApAQCAtMTQ4LDggKzE0OCw2IEBAIHB1YmxpYzoKICAgICBMZWFmQm94SXRlcmF0b3Im
IHRyYXZlcnNlUHJldmlvdXNPbkxpbmUoKTsKICAgICBMZWFmQm94SXRlcmF0b3ImIHRyYXZlcnNl
TmV4dE9uTGluZUlnbm9yaW5nTGluZUJyZWFrKCk7CiAgICAgTGVhZkJveEl0ZXJhdG9yJiB0cmF2
ZXJzZVByZXZpb3VzT25MaW5lSWdub3JpbmdMaW5lQnJlYWsoKTsKLSAgICBMZWFmQm94SXRlcmF0
b3ImIHRyYXZlcnNlTmV4dE9uTGluZUluTG9naWNhbE9yZGVyKCk7Ci0gICAgTGVhZkJveEl0ZXJh
dG9yJiB0cmF2ZXJzZVByZXZpb3VzT25MaW5lSW5Mb2dpY2FsT3JkZXIoKTsKIH07CiAKIExlYWZC
b3hJdGVyYXRvciBib3hGb3IoY29uc3QgUmVuZGVyTGluZUJyZWFrJik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vSW5saW5lSXRlcmF0b3JCb3hMZWdhY3lQ
YXRoLmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vSW5saW5lSXRlcmF0b3JC
b3hMZWdhY3lQYXRoLmgKaW5kZXggM2JlNGQzZGNhYzNiOTM5YWVkNjY4YTMzNTMxZmI2N2RmMjM5
OTNmYi4uMTUxYThkYTk0OGYwNDg1N2Q2ODQ2NWYyYWJkMDUyMzQ2ZTg2NTBmOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0lubGluZUl0ZXJhdG9yQm94TGVn
YWN5UGF0aC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9JbmxpbmVJ
dGVyYXRvckJveExlZ2FjeVBhdGguaApAQCAtMzcsMjIgKzM3LDEwIEBAIG5hbWVzcGFjZSBJbmxp
bmVJdGVyYXRvciB7CiAKIGNsYXNzIEJveExlZ2FjeVBhdGggewogcHVibGljOgotICAgIEJveExl
Z2FjeVBhdGgoY29uc3QgTGVnYWN5SW5saW5lQm94KiBpbmxpbmVCb3gsIFZlY3Rvcjxjb25zdCBM
ZWdhY3lJbmxpbmVCb3gqPiYmIHNvcnRlZElubGluZUJveGVzID0geyB9LCBzaXplX3Qgc29ydGVk
SW5saW5lQm94SW5kZXggPSAwKQorICAgIEJveExlZ2FjeVBhdGgoY29uc3QgTGVnYWN5SW5saW5l
Qm94KiBpbmxpbmVCb3gpCiAgICAgICAgIDogbV9pbmxpbmVCb3goaW5saW5lQm94KQotICAgICAg
ICAsIG1fbG9naWNhbE9yZGVyQ2FjaGUoV1RGTW92ZShzb3J0ZWRJbmxpbmVCb3hlcykpCi0gICAg
ICAgICwgbV9sb2dpY2FsT3JkZXJDYWNoZUluZGV4KHNvcnRlZElubGluZUJveEluZGV4KQogICAg
IHsgfQogCi0gICAgZW51bSBjbGFzcyBMb2dpY2FsT3JkZXIgeyBTdGFydCwgRW5kIH07Ci0gICAg
Qm94TGVnYWN5UGF0aChjb25zdCBMZWdhY3lSb290SW5saW5lQm94JiByb290LCBMb2dpY2FsT3Jk
ZXIgb3JkZXIpCi0gICAgICAgIDogbV9sb2dpY2FsT3JkZXJDYWNoZShpbmxpbmVCb3hlc0luTG9n
aWNhbE9yZGVyKHJvb3QpKQotICAgIHsKLSAgICAgICAgaWYgKCFtX2xvZ2ljYWxPcmRlckNhY2hl
LmlzRW1wdHkoKSkgewotICAgICAgICAgICAgbV9sb2dpY2FsT3JkZXJDYWNoZUluZGV4ID0gb3Jk
ZXIgPT0gTG9naWNhbE9yZGVyOjpTdGFydCA/IDAgOiBtX2xvZ2ljYWxPcmRlckNhY2hlLnNpemUo
KSAtIDE7Ci0gICAgICAgICAgICBtX2lubGluZUJveCA9IG1fbG9naWNhbE9yZGVyQ2FjaGVbbV9s
b2dpY2FsT3JkZXJDYWNoZUluZGV4XTsKLSAgICAgICAgfQotICAgIH0KLQogICAgIGJvb2wgaXNU
ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9pbmxpbmVCb3gtPmlzSW5saW5lVGV4dEJveCgpOyB9CiAg
ICAgYm9vbCBpc0lubGluZUJveCgpIGNvbnN0IHsgcmV0dXJuIG1faW5saW5lQm94LT5pc0lubGlu
ZUZsb3dCb3goKTsgfQogICAgIGJvb2wgaXNSb290SW5saW5lQm94KCkgY29uc3QgeyByZXR1cm4g
bV9pbmxpbmVCb3gtPmlzUm9vdElubGluZUJveCgpOyB9CkBAIC05OCwxOCArODYsNiBAQCBwdWJs
aWM6CiAgICAgICAgIG1faW5saW5lQm94ID0gbV9pbmxpbmVCb3gtPnByZXZpb3VzTGVhZk9uTGlu
ZSgpOwogICAgIH0KIAotICAgIHZvaWQgdHJhdmVyc2VOZXh0T25MaW5lSW5Mb2dpY2FsT3JkZXIo
KQotICAgIHsKLSAgICAgICAgaW5pdGlhbGl6ZUxvZ2ljYWxPcmRlckNhY2hlRm9yTGluZSgpOwot
ICAgICAgICB0cmF2ZXJzZU5leHRJbmxpbmVCb3hJbkNhY2hlT3JkZXIoKTsKLSAgICB9Ci0KLSAg
ICB2b2lkIHRyYXZlcnNlUHJldmlvdXNPbkxpbmVJbkxvZ2ljYWxPcmRlcigpCi0gICAgewotICAg
ICAgICBpbml0aWFsaXplTG9naWNhbE9yZGVyQ2FjaGVGb3JMaW5lKCk7Ci0gICAgICAgIHRyYXZl
cnNlUHJldmlvdXNJbmxpbmVCb3hJbkNhY2hlT3JkZXIoKTsKLSAgICB9Ci0KICAgICB2b2lkIHRy
YXZlcnNlTmV4dElubGluZUJveCgpCiAgICAgewogICAgICAgICBtX2lubGluZUJveCA9IGlubGlu
ZUZsb3dCb3goKS0+bmV4dExpbmVCb3goKTsKQEAgLTEzMSw0OSArMTA3LDggQEAgcHJpdmF0ZToK
ICAgICBjb25zdCBMZWdhY3lJbmxpbmVUZXh0Qm94KiBpbmxpbmVUZXh0Qm94KCkgY29uc3QgeyBy
ZXR1cm4gZG93bmNhc3Q8TGVnYWN5SW5saW5lVGV4dEJveD4obV9pbmxpbmVCb3gpOyB9CiAgICAg
Y29uc3QgTGVnYWN5SW5saW5lRmxvd0JveCogaW5saW5lRmxvd0JveCgpIGNvbnN0IHsgcmV0dXJu
IGRvd25jYXN0PExlZ2FjeUlubGluZUZsb3dCb3g+KG1faW5saW5lQm94KTsgfQogCi0gICAgc3Rh
dGljIFZlY3Rvcjxjb25zdCBMZWdhY3lJbmxpbmVCb3gqPiBpbmxpbmVCb3hlc0luTG9naWNhbE9y
ZGVyKGNvbnN0IExlZ2FjeVJvb3RJbmxpbmVCb3gmIHJvb3QpCi0gICAgewotICAgICAgICBWZWN0
b3I8TGVnYWN5SW5saW5lQm94Kj4gaW5saW5lQm94ZXM7Ci0gICAgICAgIHJvb3QuY29sbGVjdExl
YWZCb3hlc0luTG9naWNhbE9yZGVyKGlubGluZUJveGVzKTsKLSAgICAgICAgcmV0dXJuIHJlaW50
ZXJwcmV0X2Nhc3Q8VmVjdG9yPGNvbnN0IExlZ2FjeUlubGluZUJveCo+Jj4oaW5saW5lQm94ZXMp
OwotICAgIH0KLSAgICB2b2lkIGluaXRpYWxpemVMb2dpY2FsT3JkZXJDYWNoZUZvckxpbmUoKQot
ICAgIHsKLSAgICAgICAgaWYgKCFtX2lubGluZUJveCB8fCAhbV9sb2dpY2FsT3JkZXJDYWNoZS5p
c0VtcHR5KCkpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIG1fbG9naWNhbE9yZGVyQ2Fj
aGUgPSBpbmxpbmVCb3hlc0luTG9naWNhbE9yZGVyKG1faW5saW5lQm94LT5yb290KCkpOwotICAg
ICAgICBmb3IgKG1fbG9naWNhbE9yZGVyQ2FjaGVJbmRleCA9IDA7IG1fbG9naWNhbE9yZGVyQ2Fj
aGVJbmRleCA8IG1fbG9naWNhbE9yZGVyQ2FjaGUuc2l6ZSgpOyArK21fbG9naWNhbE9yZGVyQ2Fj
aGVJbmRleCkgewotICAgICAgICAgICAgaWYgKG1fbG9naWNhbE9yZGVyQ2FjaGVbbV9sb2dpY2Fs
T3JkZXJDYWNoZUluZGV4XSA9PSBtX2lubGluZUJveCkKLSAgICAgICAgICAgICAgICByZXR1cm47
Ci0gICAgICAgIH0KLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgfQotCi0gICAg
dm9pZCB0cmF2ZXJzZU5leHRJbmxpbmVCb3hJbkNhY2hlT3JkZXIoKTsKLSAgICB2b2lkIHRyYXZl
cnNlUHJldmlvdXNJbmxpbmVCb3hJbkNhY2hlT3JkZXIoKTsKLQogICAgIGNvbnN0IExlZ2FjeUlu
bGluZUJveCogbV9pbmxpbmVCb3ggeyBudWxscHRyIH07Ci0gICAgUmVmQ291bnRlZEFycmF5PGNv
bnN0IExlZ2FjeUlubGluZUJveCo+IG1fbG9naWNhbE9yZGVyQ2FjaGU7Ci0gICAgc2l6ZV90IG1f
bG9naWNhbE9yZGVyQ2FjaGVJbmRleCB7IDAgfTsKIH07CiAKLQotaW5saW5lIHZvaWQgQm94TGVn
YWN5UGF0aDo6dHJhdmVyc2VOZXh0SW5saW5lQm94SW5DYWNoZU9yZGVyKCkKLXsKLSAgICBBU1NF
UlQoIW1fbG9naWNhbE9yZGVyQ2FjaGUuaXNFbXB0eSgpKTsKLSAgICArK21fbG9naWNhbE9yZGVy
Q2FjaGVJbmRleDsKLSAgICBtX2lubGluZUJveCA9IG1fbG9naWNhbE9yZGVyQ2FjaGVJbmRleCA8
IG1fbG9naWNhbE9yZGVyQ2FjaGUuc2l6ZSgpID8gbV9sb2dpY2FsT3JkZXJDYWNoZVttX2xvZ2lj
YWxPcmRlckNhY2hlSW5kZXhdIDogbnVsbHB0cjsKLX0KLQotaW5saW5lIHZvaWQgQm94TGVnYWN5
UGF0aDo6dHJhdmVyc2VQcmV2aW91c0lubGluZUJveEluQ2FjaGVPcmRlcigpCi17Ci0gICAgQVNT
RVJUKCFtX2xvZ2ljYWxPcmRlckNhY2hlLmlzRW1wdHkoKSk7Ci0gICAgaWYgKCFtX2xvZ2ljYWxP
cmRlckNhY2hlSW5kZXgpIHsKLSAgICAgICAgbV9pbmxpbmVCb3ggPSBudWxscHRyOwotICAgICAg
ICByZXR1cm47Ci0gICAgfQotICAgIG1faW5saW5lQm94ID0gbV9sb2dpY2FsT3JkZXJDYWNoZVst
LW1fbG9naWNhbE9yZGVyQ2FjaGVJbmRleF07Ci19Ci0KIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9JbmxpbmVJdGVyYXRvckJveE1vZGVyblBhdGgu
aCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9JbmxpbmVJdGVyYXRvckJveE1v
ZGVyblBhdGguaAppbmRleCA2MTU0M2IwY2Y0YzQ4YjBhYmQ5ZDJjNDI1ZTk0ZTE3YWRmZjQ2MDUy
Li5kN2RjOTRjYzg2ODdkZjNmMmMwNjQ2MzhjZWVmNTJlZWMxOWVlYTRiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vSW5saW5lSXRlcmF0b3JCb3hNb2Rlcm5Q
YXRoLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0lubGluZUl0ZXJh
dG9yQm94TW9kZXJuUGF0aC5oCkBAIC0xNjAsMTYgKzE2MCw2IEBAIHB1YmxpYzoKICAgICAgICAg
ICAgIHNldEF0RW5kKCk7CiAgICAgfQogCi0gICAgdm9pZCB0cmF2ZXJzZU5leHRPbkxpbmVJbkxv
Z2ljYWxPcmRlcigpCi0gICAgewotICAgICAgICB0cmF2ZXJzZU5leHRPbkxpbmUoKTsKLSAgICB9
Ci0KLSAgICB2b2lkIHRyYXZlcnNlUHJldmlvdXNPbkxpbmVJbkxvZ2ljYWxPcmRlcigpCi0gICAg
ewotICAgICAgICB0cmF2ZXJzZVByZXZpb3VzT25MaW5lKCk7Ci0gICAgfQotCiAgICAgdm9pZCB0
cmF2ZXJzZU5leHRJbmxpbmVCb3goKQogICAgIHsKICAgICAgICAgQVNTRVJUKGJveCgpLmlzSW5s
aW5lQm94KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9u
L0lubGluZUl0ZXJhdG9yTGluZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRp
b24vSW5saW5lSXRlcmF0b3JMaW5lLmNwcAppbmRleCBmNGViNmE2OGZkM2RiYjgxNTczMjAzZjli
NjA3ZjRkMWY0NThhYzU2Li44ZmM2NDU0ZjM2MTIwYmNlZmJmMTM4NTkzMzhmNmE5YjM0YTZhN2Iw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vSW5saW5lSXRl
cmF0b3JMaW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vSW5s
aW5lSXRlcmF0b3JMaW5lLmNwcApAQCAtMTE1LDM4ICsxMTUsNiBAQCBMZWFmQm94SXRlcmF0b3Ig
TGluZTo6bGFzdFJ1bigpIGNvbnN0CiAgICAgfSk7CiB9CiAKLUxlYWZCb3hJdGVyYXRvciBMaW5l
Ojpsb2dpY2FsU3RhcnRSdW4oKSBjb25zdAotewotICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKG1f
cGF0aFZhcmlhbnQsIFtdKGF1dG8mIHBhdGgpIC0+IExlYWZCb3hJdGVyYXRvciB7Ci0gICAgICAg
IHJldHVybiB7IHBhdGgubG9naWNhbFN0YXJ0UnVuKCkgfTsKLSAgICB9KTsKLX0KLQotTGVhZkJv
eEl0ZXJhdG9yIExpbmU6OmxvZ2ljYWxFbmRSdW4oKSBjb25zdAotewotICAgIHJldHVybiBXVEY6
OnN3aXRjaE9uKG1fcGF0aFZhcmlhbnQsIFtdKGF1dG8mIHBhdGgpIC0+IExlYWZCb3hJdGVyYXRv
ciB7Ci0gICAgICAgIHJldHVybiB7IHBhdGgubG9naWNhbEVuZFJ1bigpIH07Ci0gICAgfSk7Ci19
Ci0KLUxlYWZCb3hJdGVyYXRvciBMaW5lOjpsb2dpY2FsU3RhcnRSdW5XaXRoTm9kZSgpIGNvbnN0
Ci17Ci0gICAgZm9yIChhdXRvIHJ1biA9IGxvZ2ljYWxTdGFydFJ1bigpOyBydW47IHJ1bi50cmF2
ZXJzZU5leHRPbkxpbmVJbkxvZ2ljYWxPcmRlcigpKSB7Ci0gICAgICAgIGlmIChydW4tPnJlbmRl
cmVyKCkubm9kZSgpKQotICAgICAgICAgICAgcmV0dXJuIHJ1bjsKLSAgICB9Ci0gICAgcmV0dXJu
IHsgfTsKLX0KLQotTGVhZkJveEl0ZXJhdG9yIExpbmU6OmxvZ2ljYWxFbmRSdW5XaXRoTm9kZSgp
IGNvbnN0Ci17Ci0gICAgZm9yIChhdXRvIHJ1biA9IGxvZ2ljYWxFbmRSdW4oKTsgcnVuOyBydW4u
dHJhdmVyc2VQcmV2aW91c09uTGluZUluTG9naWNhbE9yZGVyKCkpIHsKLSAgICAgICAgaWYgKHJ1
bi0+cmVuZGVyZXIoKS5ub2RlKCkpCi0gICAgICAgICAgICByZXR1cm4gcnVuOwotICAgIH0KLSAg
ICByZXR1cm4geyB9OwotfQotCiBMZWFmQm94SXRlcmF0b3IgTGluZTo6Y2xvc2VzdFJ1bkZvclBv
aW50KGNvbnN0IEludFBvaW50JiBwb2ludEluQ29udGVudHMsIGJvb2wgZWRpdGFibGVPbmx5KSBj
b25zdAogewogICAgIHJldHVybiBjbG9zZXN0UnVuRm9yTG9naWNhbExlZnRQb3NpdGlvbihpc0hv
cml6b250YWwoKSA/IHBvaW50SW5Db250ZW50cy54KCkgOiBwb2ludEluQ29udGVudHMueSgpLCBl
ZGl0YWJsZU9ubHkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0
aW9uL0lubGluZUl0ZXJhdG9yTGluZS5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0
aW9uL0lubGluZUl0ZXJhdG9yTGluZS5oCmluZGV4IDJkMzI4OTNlNzVkN2I3YmIxNmY3ZDRkYWFh
NDQ5ZTBmNTk5ZjEwNDAuLjY3ZDYzNWEzNmIwZWQyYWMyYzlmOWEwNWFkOTY1MTU2ODg1MDYxMTMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9JbmxpbmVJdGVy
YXRvckxpbmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vSW5saW5l
SXRlcmF0b3JMaW5lLmgKQEAgLTg5LDExICs4OSw2IEBAIHB1YmxpYzoKIAogICAgIExlYWZCb3hJ
dGVyYXRvciBjbG9zZXN0UnVuRm9yUG9pbnQoY29uc3QgSW50UG9pbnQmIHBvaW50SW5Db250ZW50
cywgYm9vbCBlZGl0YWJsZU9ubHkpIGNvbnN0OwogICAgIExlYWZCb3hJdGVyYXRvciBjbG9zZXN0
UnVuRm9yTG9naWNhbExlZnRQb3NpdGlvbihpbnQgcG9zaXRpb24sIGJvb2wgZWRpdGFibGVPbmx5
ID0gZmFsc2UpIGNvbnN0OwotCi0gICAgTGVhZkJveEl0ZXJhdG9yIGxvZ2ljYWxTdGFydFJ1bigp
IGNvbnN0OwotICAgIExlYWZCb3hJdGVyYXRvciBsb2dpY2FsRW5kUnVuKCkgY29uc3Q7Ci0gICAg
TGVhZkJveEl0ZXJhdG9yIGxvZ2ljYWxTdGFydFJ1bldpdGhOb2RlKCkgY29uc3Q7Ci0gICAgTGVh
ZkJveEl0ZXJhdG9yIGxvZ2ljYWxFbmRSdW5XaXRoTm9kZSgpIGNvbnN0OwogICAgIAogICAgIExl
YWZCb3hJdGVyYXRvciBmaXJzdFNlbGVjdGVkQm94KCkgY29uc3Q7CiAgICAgTGVhZkJveEl0ZXJh
dG9yIGxhc3RTZWxlY3RlZEJveCgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2ludGVncmF0aW9uL0lubGluZUl0ZXJhdG9yTGluZUxlZ2FjeVBhdGguaCBiL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9JbmxpbmVJdGVyYXRvckxpbmVMZWdhY3lQYXRo
LmgKaW5kZXggZmFjM2EyMmU3NDk0ZDRlNDMxMjE4ZmNlODllNzliNDMyNGE5M2QwOS4uYjc0YzZk
OWEwMDFlMjU0MjI1ZmY3ZmNhYWRiYWZlMzQ2ZGMwNzAxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0lubGluZUl0ZXJhdG9yTGluZUxlZ2FjeVBhdGguaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vSW5saW5lSXRlcmF0b3JMaW5l
TGVnYWN5UGF0aC5oCkBAIC04NSwxNyArODUsNiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiB7
IG1fcm9vdElubGluZUJveC0+bGFzdExlYWZEZXNjZW5kYW50KCkgfTsKICAgICB9CiAKLQotICAg
IEJveExlZ2FjeVBhdGggbG9naWNhbFN0YXJ0UnVuKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJl
dHVybiB7ICptX3Jvb3RJbmxpbmVCb3gsIEJveExlZ2FjeVBhdGg6OkxvZ2ljYWxPcmRlcjo6U3Rh
cnQgfTsKLSAgICB9Ci0KLSAgICBCb3hMZWdhY3lQYXRoIGxvZ2ljYWxFbmRSdW4oKSBjb25zdAot
ICAgIHsKLSAgICAgICAgcmV0dXJuIHsgKm1fcm9vdElubGluZUJveCwgQm94TGVnYWN5UGF0aDo6
TG9naWNhbE9yZGVyOjpFbmQgfTsKLSAgICB9Ci0KIHByaXZhdGU6CiAgICAgY29uc3QgTGVnYWN5
Um9vdElubGluZUJveCogbV9yb290SW5saW5lQm94OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9JbmxpbmVJdGVyYXRvckxpbmVNb2Rlcm5QYXRoLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vSW5saW5lSXRlcmF0b3JMaW5lTW9k
ZXJuUGF0aC5oCmluZGV4IGNhZjgyNmY4NTFlNDdmZmU3ZDVhMGRhYzU5NWZlOWRmMzNjNDVkZTMu
LmI5MWNmY2Y2NDUwZDM5OTVjNWI0NGVlNmY1MDA0ZDA5YTI3ODNkODUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9JbmxpbmVJdGVyYXRvckxpbmVNb2Rlcm5Q
YXRoLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0lubGluZUl0ZXJh
dG9yTGluZU1vZGVyblBhdGguaApAQCAtMTE2LDE2ICsxMTYsNiBAQCBwdWJsaWM6CiAgICAgICAg
IHJldHVybiBydW5JdGVyYXRvcjsKICAgICB9CiAKLSAgICBCb3hNb2Rlcm5QYXRoIGxvZ2ljYWxT
dGFydFJ1bigpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gZmlyc3RSdW4oKTsKLSAgICB9
Ci0KLSAgICBCb3hNb2Rlcm5QYXRoIGxvZ2ljYWxFbmRSdW4oKSBjb25zdAotICAgIHsKLSAgICAg
ICAgcmV0dXJuIGxhc3RSdW4oKTsKLSAgICB9Ci0KIHByaXZhdGU6CiAgICAgdm9pZCBzZXRBdEVu
ZCgpIHsgbV9saW5lSW5kZXggPSBsaW5lcygpLnNpemUoKTsgfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vSW5saW5lSXRlcmF0b3JMb2dpY2FsT3JkZXJU
cmF2ZXJzYWwuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0lubGluZUl0
ZXJhdG9yTG9naWNhbE9yZGVyVHJhdmVyc2FsLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43YTEyY2QzMTA0MzNm
NzUzYTg4MDllMmUyMDQ5YjgzMWUwZDQ3NmYyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0lubGluZUl0ZXJhdG9yTG9naWNhbE9yZGVyVHJhdmVy
c2FsLmNwcApAQCAtMCwwICsxLDIyMSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJJbmxpbmVJdGVyYXRvckxvZ2ljYWxPcmRlclRyYXZlcnNhbC5oIgorCisj
aW5jbHVkZSAiSW5saW5lSXRlcmF0b3JMaW5lLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK25h
bWVzcGFjZSBJbmxpbmVJdGVyYXRvciB7CisKK3N0YXRpYyBUZXh0TG9naWNhbE9yZGVyQ2FjaGUg
bWFrZVRleHRMb2dpY2FsT3JkZXJDYWNoZUlmTmVlZGVkKGNvbnN0IFJlbmRlclRleHQmIHRleHQp
Cit7CisgICAgaWYgKCF0ZXh0LmNvbnRhaW5zUmV2ZXJzZWRUZXh0KCkpCisgICAgICAgIHJldHVy
biB7IH07CisKKyAgICBhdXRvIGNhY2hlID0gV1RGOjptYWtlVW5pcXVlPFRleHRMb2dpY2FsT3Jk
ZXJDYWNoZURhdGE+KCk7CisgICAgZm9yIChhdXRvIHRleHRCb3ggOiB0ZXh0Qm94ZXNGb3IodGV4
dCkpCisgICAgICAgIGNhY2hlLT5ib3hlcy5hcHBlbmQodGV4dEJveCk7CisKKyAgICBpZiAoY2Fj
aGUtPmJveGVzLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBzdGQ6
OnNvcnQoY2FjaGUtPmJveGVzLmJlZ2luKCksIGNhY2hlLT5ib3hlcy5lbmQoKSwgWyZdKGF1dG8m
IGEsIGF1dG8mIGIpIHsKKyAgICAgICAgcmV0dXJuIGEtPnN0YXJ0KCkgPCBiLT5zdGFydCgpOwor
ICAgIH0pOworCisgICAgcmV0dXJuIGNhY2hlOworfQorCitzdGF0aWMgdm9pZCB1cGRhdGVUZXh0
TG9naWNhbE9yZGVyQ2FjaGVJZk5lZWRlZChjb25zdCBUZXh0Qm94SXRlcmF0b3ImIHRleHRCb3gs
IFRleHRMb2dpY2FsT3JkZXJDYWNoZSYgY2FjaGUpCit7CisgICAgaWYgKCFjYWNoZSAmJiAhKGNh
Y2hlID0gbWFrZVRleHRMb2dpY2FsT3JkZXJDYWNoZUlmTmVlZGVkKHRleHRCb3gtPnJlbmRlcmVy
KCkpKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKGNhY2hlLT5pbmRleCA8IGNhY2hlLT5i
b3hlcy5zaXplKCkgJiYgY2FjaGUtPmJveGVzW2NhY2hlLT5pbmRleF0gPT0gdGV4dEJveCkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgY2FjaGUtPmluZGV4ID0gY2FjaGUtPmJveGVzLmZpbmQodGV4
dEJveCk7CisKKyAgICBpZiAoY2FjaGUtPmluZGV4ID09IG5vdEZvdW5kKSB7CisgICAgICAgIGNh
Y2hlID0geyB9OworICAgICAgICBtYWtlVGV4dExvZ2ljYWxPcmRlckNhY2hlSWZOZWVkZWQodGV4
dEJveC0+cmVuZGVyZXIoKSk7CisgICAgfQorfQorCitzdGQ6OnBhaXI8VGV4dEJveEl0ZXJhdG9y
LCBUZXh0TG9naWNhbE9yZGVyQ2FjaGU+IGZpcnN0VGV4dEJveEluTG9naWNhbE9yZGVyRm9yKGNv
bnN0IFJlbmRlclRleHQmIHRleHQpCit7CisgICAgaWYgKGF1dG8gY2FjaGUgPSBtYWtlVGV4dExv
Z2ljYWxPcmRlckNhY2hlSWZOZWVkZWQodGV4dCkpCisgICAgICAgIHJldHVybiB7IGNhY2hlLT5i
b3hlcy5maXJzdCgpLCBXVEZNb3ZlKGNhY2hlKSB9OworCisgICAgcmV0dXJuIHsgZmlyc3RUZXh0
Qm94Rm9yKHRleHQpLCBudWxscHRyIH07Cit9CisKK1RleHRCb3hJdGVyYXRvciBuZXh0VGV4dEJv
eEluTG9naWNhbE9yZGVyKGNvbnN0IFRleHRCb3hJdGVyYXRvciYgdGV4dEJveCwgVGV4dExvZ2lj
YWxPcmRlckNhY2hlJiBjYWNoZSkKK3sKKyAgICB1cGRhdGVUZXh0TG9naWNhbE9yZGVyQ2FjaGVJ
Zk5lZWRlZCh0ZXh0Qm94LCBjYWNoZSk7CisKKyAgICBpZiAoIWNhY2hlKQorICAgICAgICByZXR1
cm4gdGV4dEJveC0+bmV4dFRleHRCb3goKTsKKworICAgIGNhY2hlLT5pbmRleCsrOworCisgICAg
aWYgKGNhY2hlLT5pbmRleCA8IGNhY2hlLT5ib3hlcy5zaXplKCkpCisgICAgICAgIHJldHVybiBj
YWNoZS0+Ym94ZXNbY2FjaGUtPmluZGV4XTsKKworICAgIHJldHVybiB7IH07Cit9CisKK3N0YXRp
YyBMaW5lTG9naWNhbE9yZGVyQ2FjaGUgbWFrZUxpbmVMb2dpY2FsT3JkZXJDYWNoZUlmTmVlZGVk
KGNvbnN0IExpbmVJdGVyYXRvciYgbGluZSkKK3sKKyAgICBpZiAobGluZS0+Y29udGFpbmluZ0Js
b2NrKCkuc3R5bGUoKS5ydGxPcmRlcmluZygpID09IE9yZGVyOjpWaXN1YWwpCisgICAgICAgIHJl
dHVybiB7IH07CisKKyAgICB1bnNpZ25lZCBjaGFyIG1pbkxldmVsID0gMTI4OworICAgIHVuc2ln
bmVkIGNoYXIgbWF4TGV2ZWwgPSAwOworCisgICAgZm9yIChhdXRvIGJveCA9IGxpbmUtPmZpcnN0
UnVuKCk7IGJveDsgYm94ID0gYm94LnRyYXZlcnNlTmV4dE9uTGluZSgpKSB7CisgICAgICAgIG1p
bkxldmVsID0gc3RkOjptaW4obWluTGV2ZWwsIGJveC0+YmlkaUxldmVsKCkpOworICAgICAgICBt
YXhMZXZlbCA9IHN0ZDo6bWF4KG1heExldmVsLCBib3gtPmJpZGlMZXZlbCgpKTsKKyAgICB9CisK
KyAgICBpZiAoIW1heExldmVsKQorICAgICAgICByZXR1cm4geyB9OworCisgICAgYXV0byBjYWNo
ZSA9IFdURjo6bWFrZVVuaXF1ZTxMaW5lTG9naWNhbE9yZGVyQ2FjaGVEYXRhPigpOworCisgICAg
YXV0byYgYm94ZXMgPSBjYWNoZS0+Ym94ZXM7CisgICAgZm9yIChhdXRvIGJveCA9IGxpbmUtPmZp
cnN0UnVuKCk7IGJveDsgYm94ID0gYm94LnRyYXZlcnNlTmV4dE9uTGluZSgpKQorICAgICAgICBi
b3hlcy5hcHBlbmQoYm94KTsKKworICAgIC8vIFJldmVyc2Ugb2YgcmVvcmRlcmluZyBvZiB0aGUg
bGluZSAoTDIgYWNjb3JkaW5nIHRvIEJpZGkgc3BlYyk6CisgICAgLy8gTDIuIEZyb20gdGhlIGhp
Z2hlc3QgbGV2ZWwgZm91bmQgaW4gdGhlIHRleHQgdG8gdGhlIGxvd2VzdCBvZGQgbGV2ZWwgb24g
ZWFjaCBsaW5lLAorICAgIC8vIHJldmVyc2UgYW55IGNvbnRpZ3VvdXMgc2VxdWVuY2Ugb2YgY2hh
cmFjdGVycyB0aGF0IGFyZSBhdCB0aGF0IGxldmVsIG9yIGhpZ2hlci4KKworICAgIC8vIFJldmVy
c2luZyB0aGUgcmVvcmRlcmluZyBvZiB0aGUgbGluZSBpcyBvbmx5IGRvbmUgdXAgdG8gdGhlIGxv
d2VzdCBvZGQgbGV2ZWwuCisgICAgaWYgKCEobWluTGV2ZWwgJSAyKSkKKyAgICAgICAgKyttaW5M
ZXZlbDsKKworICAgIGF1dG8gZW5kID0gYm94ZXMuZW5kKCk7CisgICAgZm9yICg7IG1pbkxldmVs
IDw9IG1heExldmVsOyArK21pbkxldmVsKSB7CisgICAgICAgIGF1dG8gYm94ID0gYm94ZXMuYmVn
aW4oKTsKKyAgICAgICAgd2hpbGUgKGJveCA8IGVuZCkgeworICAgICAgICAgICAgd2hpbGUgKGJv
eCA8IGVuZCAmJiAoKmJveCktPmJpZGlMZXZlbCgpIDwgbWluTGV2ZWwpCisgICAgICAgICAgICAg
ICAgKytib3g7CisKKyAgICAgICAgICAgIGF1dG8gZmlyc3QgPSBib3g7CisgICAgICAgICAgICB3
aGlsZSAoYm94IDwgZW5kICYmICgqYm94KS0+YmlkaUxldmVsKCkgPj0gbWluTGV2ZWwpCisgICAg
ICAgICAgICAgICAgKytib3g7CisKKyAgICAgICAgICAgIGF1dG8gbGFzdCA9IGJveDsKKyAgICAg
ICAgICAgIHN0ZDo6cmV2ZXJzZShmaXJzdCwgbGFzdCk7CisgICAgICAgIH0KKyAgICB9CisKKyAg
ICByZXR1cm4gY2FjaGU7Cit9CisKK3N0YXRpYyB2b2lkIHVwZGF0ZUxpbmVMb2dpY2FsT3JkZXJD
YWNoZUlmTmVlZGVkKGNvbnN0IExlYWZCb3hJdGVyYXRvciYgYm94LCBMaW5lTG9naWNhbE9yZGVy
Q2FjaGUmIGNhY2hlKQoreworICAgIGF1dG8gbGluZSA9IGJveC0+bGluZSgpOworICAgIGlmICgh
Y2FjaGUgJiYgIShjYWNoZSA9IG1ha2VMaW5lTG9naWNhbE9yZGVyQ2FjaGVJZk5lZWRlZChsaW5l
KSkpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChjYWNoZS0+aW5kZXggPCBjYWNoZS0+Ym94
ZXMuc2l6ZSgpICYmIGNhY2hlLT5ib3hlc1tjYWNoZS0+aW5kZXhdID09IGJveCkKKyAgICAgICAg
cmV0dXJuOworCisgICAgY2FjaGUtPmluZGV4ID0gY2FjaGUtPmJveGVzLmZpbmQoYm94KTsKKwor
ICAgIGlmIChjYWNoZS0+aW5kZXggPT0gbm90Rm91bmQpIHsKKyAgICAgICAgY2FjaGUgPSB7IH07
CisgICAgICAgIHVwZGF0ZUxpbmVMb2dpY2FsT3JkZXJDYWNoZUlmTmVlZGVkKGJveCwgY2FjaGUp
OworICAgIH0KK30KKworTGVhZkJveEl0ZXJhdG9yIGZpcnN0TGVhZk9uTGluZUluTG9naWNhbE9y
ZGVyKGNvbnN0IExpbmVJdGVyYXRvciYgbGluZSwgTGluZUxvZ2ljYWxPcmRlckNhY2hlJiBjYWNo
ZSkKK3sKKyAgICBpZiAoKGNhY2hlID0gbWFrZUxpbmVMb2dpY2FsT3JkZXJDYWNoZUlmTmVlZGVk
KGxpbmUpKSkKKyAgICAgICAgcmV0dXJuIGNhY2hlLT5ib3hlcy5maXJzdCgpOworCisgICAgcmV0
dXJuIGxpbmUtPmZpcnN0UnVuKCk7Cit9CisKK0xlYWZCb3hJdGVyYXRvciBsYXN0TGVhZk9uTGlu
ZUluTG9naWNhbE9yZGVyKGNvbnN0IExpbmVJdGVyYXRvciYgbGluZSwgTGluZUxvZ2ljYWxPcmRl
ckNhY2hlJiBjYWNoZSkKK3sKKyAgICBpZiAoKGNhY2hlID0gbWFrZUxpbmVMb2dpY2FsT3JkZXJD
YWNoZUlmTmVlZGVkKGxpbmUpKSkKKyAgICAgICAgcmV0dXJuIGNhY2hlLT5ib3hlcy5sYXN0KCk7
CisKKyAgICByZXR1cm4gbGluZS0+bGFzdFJ1bigpOworfQorCitMZWFmQm94SXRlcmF0b3IgbmV4
dExlYWZPbkxpbmVJbkxvZ2ljYWxPcmRlcihjb25zdCBMZWFmQm94SXRlcmF0b3ImIGJveCwgTGlu
ZUxvZ2ljYWxPcmRlckNhY2hlJiBjYWNoZSkKK3sKKyAgICB1cGRhdGVMaW5lTG9naWNhbE9yZGVy
Q2FjaGVJZk5lZWRlZChib3gsIGNhY2hlKTsKKworICAgIGlmICghY2FjaGUpCisgICAgICAgIHJl
dHVybiBib3gtPm5leHRPbkxpbmUoKTsKKworICAgIGNhY2hlLT5pbmRleCsrOworCisgICAgaWYg
KGNhY2hlLT5pbmRleCA8IGNhY2hlLT5ib3hlcy5zaXplKCkpCisgICAgICAgIHJldHVybiBjYWNo
ZS0+Ym94ZXNbY2FjaGUtPmluZGV4XTsKKworICAgIHJldHVybiB7IH07Cit9CisKK0xlYWZCb3hJ
dGVyYXRvciBwcmV2aW91c0xlYWZPbkxpbmVJbkxvZ2ljYWxPcmRlcihjb25zdCBMZWFmQm94SXRl
cmF0b3ImIGJveCwgTGluZUxvZ2ljYWxPcmRlckNhY2hlJiBjYWNoZSkKK3sKKyAgICB1cGRhdGVM
aW5lTG9naWNhbE9yZGVyQ2FjaGVJZk5lZWRlZChib3gsIGNhY2hlKTsKKworICAgIGlmICghY2Fj
aGUpCisgICAgICAgIHJldHVybiBib3gtPnByZXZpb3VzT25MaW5lKCk7CisKKyAgICBpZiAoIWNh
Y2hlLT5pbmRleCkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIGNhY2hlLT5pbmRleC0tOwor
CisgICAgcmV0dXJuIGNhY2hlLT5ib3hlc1tjYWNoZS0+aW5kZXhdOworfQorCitMZWFmQm94SXRl
cmF0b3IgZmlyc3RMZWFmT25MaW5lSW5Mb2dpY2FsT3JkZXJXaXRoTm9kZShjb25zdCBMaW5lSXRl
cmF0b3ImIGxpbmUsIExpbmVMb2dpY2FsT3JkZXJDYWNoZSYgY2FjaGUpCit7CisgICAgYXV0byBi
b3ggPSBmaXJzdExlYWZPbkxpbmVJbkxvZ2ljYWxPcmRlcihsaW5lLCBjYWNoZSk7CisgICAgd2hp
bGUgKCFib3gtPnJlbmRlcmVyKCkubm9kZSgpKQorICAgICAgICBib3ggPSBuZXh0TGVhZk9uTGlu
ZUluTG9naWNhbE9yZGVyKGJveCwgY2FjaGUpOworICAgIHJldHVybiBib3g7Cit9CisKK0xlYWZC
b3hJdGVyYXRvciBsYXN0TGVhZk9uTGluZUluTG9naWNhbE9yZGVyV2l0aE5vZGUoY29uc3QgTGlu
ZUl0ZXJhdG9yJiBsaW5lLCBMaW5lTG9naWNhbE9yZGVyQ2FjaGUmIGNhY2hlKQoreworICAgIGF1
dG8gYm94ID0gbGFzdExlYWZPbkxpbmVJbkxvZ2ljYWxPcmRlcihsaW5lLCBjYWNoZSk7CisgICAg
d2hpbGUgKCFib3gtPnJlbmRlcmVyKCkubm9kZSgpKQorICAgICAgICBib3ggPSBwcmV2aW91c0xl
YWZPbkxpbmVJbkxvZ2ljYWxPcmRlcihib3gsIGNhY2hlKTsKKyAgICByZXR1cm4gYm94OworfQor
Cit9Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vSW5s
aW5lSXRlcmF0b3JMb2dpY2FsT3JkZXJUcmF2ZXJzYWwuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9pbnRlZ3JhdGlvbi9JbmxpbmVJdGVyYXRvckxvZ2ljYWxPcmRlclRyYXZlcnNhbC5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmFiZjNmNjYyOThhNzE3NTk1ZTk0M2YyZjYzY2Q0NGJkM2JiYzFmNTcKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vSW5saW5lSXRlcmF0
b3JMb2dpY2FsT3JkZXJUcmF2ZXJzYWwuaApAQCAtMCwwICsxLDYzIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJJbmxpbmVJdGVyYXRvclRleHRCb3guaCIKKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworbmFtZXNwYWNlIElubGluZUl0ZXJhdG9yIHsKKworY2xhc3MgTGlu
ZUl0ZXJhdG9yOworCitzdHJ1Y3QgVGV4dExvZ2ljYWxPcmRlckNhY2hlRGF0YSB7CisgICAgV1RG
X01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOworCisgICAgVmVjdG9yPFRleHRCb3hJdGVyYXRv
cj4gYm94ZXM7CisgICAgc2l6ZV90IGluZGV4IHsgMCB9OworfTsKK3VzaW5nIFRleHRMb2dpY2Fs
T3JkZXJDYWNoZSA9IHN0ZDo6dW5pcXVlX3B0cjxUZXh0TG9naWNhbE9yZGVyQ2FjaGVEYXRhPjsK
Kworc3RkOjpwYWlyPFRleHRCb3hJdGVyYXRvciwgVGV4dExvZ2ljYWxPcmRlckNhY2hlPiBmaXJz
dFRleHRCb3hJbkxvZ2ljYWxPcmRlckZvcihjb25zdCBSZW5kZXJUZXh0Jik7CitUZXh0Qm94SXRl
cmF0b3IgbmV4dFRleHRCb3hJbkxvZ2ljYWxPcmRlcihjb25zdCBUZXh0Qm94SXRlcmF0b3ImLCBU
ZXh0TG9naWNhbE9yZGVyQ2FjaGUmKTsKKworc3RydWN0IExpbmVMb2dpY2FsT3JkZXJDYWNoZURh
dGEgeworICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKKworICAgIFZlY3RvcjxM
ZWFmQm94SXRlcmF0b3I+IGJveGVzOworICAgIHNpemVfdCBpbmRleCB7IDAgfTsKK307Cit1c2lu
ZyBMaW5lTG9naWNhbE9yZGVyQ2FjaGUgPSBzdGQ6OnVuaXF1ZV9wdHI8TGluZUxvZ2ljYWxPcmRl
ckNhY2hlRGF0YT47CisKK0xlYWZCb3hJdGVyYXRvciBmaXJzdExlYWZPbkxpbmVJbkxvZ2ljYWxP
cmRlcihjb25zdCBMaW5lSXRlcmF0b3ImLCBMaW5lTG9naWNhbE9yZGVyQ2FjaGUmKTsKK0xlYWZC
b3hJdGVyYXRvciBsYXN0TGVhZk9uTGluZUluTG9naWNhbE9yZGVyKGNvbnN0IExpbmVJdGVyYXRv
ciYsIExpbmVMb2dpY2FsT3JkZXJDYWNoZSYpOworTGVhZkJveEl0ZXJhdG9yIG5leHRMZWFmT25M
aW5lSW5Mb2dpY2FsT3JkZXIoY29uc3QgTGVhZkJveEl0ZXJhdG9yJiwgTGluZUxvZ2ljYWxPcmRl
ckNhY2hlJik7CitMZWFmQm94SXRlcmF0b3IgcHJldmlvdXNMZWFmT25MaW5lSW5Mb2dpY2FsT3Jk
ZXIoY29uc3QgTGVhZkJveEl0ZXJhdG9yJiwgTGluZUxvZ2ljYWxPcmRlckNhY2hlJik7CisKK0xl
YWZCb3hJdGVyYXRvciBmaXJzdExlYWZPbkxpbmVJbkxvZ2ljYWxPcmRlcldpdGhOb2RlKGNvbnN0
IExpbmVJdGVyYXRvciYsIExpbmVMb2dpY2FsT3JkZXJDYWNoZSYpOworTGVhZkJveEl0ZXJhdG9y
IGxhc3RMZWFmT25MaW5lSW5Mb2dpY2FsT3JkZXJXaXRoTm9kZShjb25zdCBMaW5lSXRlcmF0b3Im
LCBMaW5lTG9naWNhbE9yZGVyQ2FjaGUmKTsKKworfQorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0lubGluZUl0ZXJhdG9yVGV4dEJveC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vSW5saW5lSXRlcmF0b3JUZXh0Qm94LmNwcApp
bmRleCAyMTU2OGRmMzQ4ODJhZmQ1NjJiODU4YTU0NTUyMGE1ZWE5OGJmNGI5Li5kMjkxY2YyNjM0
Nzg4NDAzZTExOGU4YWUyZDFjZmVjNzMxZDI5MzYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvaW50ZWdyYXRpb24vSW5saW5lSXRlcmF0b3JUZXh0Qm94LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vSW5saW5lSXRlcmF0b3JUZXh0Qm94LmNwcApA
QCAtOTksNDMgKzk5LDYgQEAgVGV4dEJveEl0ZXJhdG9yIGZpcnN0VGV4dEJveEZvcihjb25zdCBS
ZW5kZXJUZXh0JiB0ZXh0KQogICAgIHJldHVybiB7IEJveExlZ2FjeVBhdGggeyB0ZXh0LmZpcnN0
VGV4dEJveCgpIH0gfTsKIH0KIAotc3RkOjpwYWlyPFRleHRCb3hJdGVyYXRvciwgTG9naWNhbE9y
ZGVyQ2FjaGU+IGZpcnN0VGV4dEJveEluTG9naWNhbE9yZGVyRm9yKGNvbnN0IFJlbmRlclRleHQm
IHRleHQpCi17Ci0gICAgaWYgKCF0ZXh0LmNvbnRhaW5zUmV2ZXJzZWRUZXh0KCkpCi0gICAgICAg
IHJldHVybiB7IGZpcnN0VGV4dEJveEZvcih0ZXh0KSwgbnVsbHB0ciB9OwotCi0gICAgYXV0byBj
YWNoZSA9IFdURjo6bWFrZVVuaXF1ZTxMb2dpY2FsT3JkZXJDYWNoZURhdGE+KCk7Ci0gICAgZm9y
IChhdXRvIHRleHRCb3ggOiB0ZXh0Qm94ZXNGb3IodGV4dCkpCi0gICAgICAgIGNhY2hlLT5ib3hl
cy5hcHBlbmQodGV4dEJveCk7Ci0KLSAgICBpZiAoY2FjaGUtPmJveGVzLmlzRW1wdHkoKSkKLSAg
ICAgICAgcmV0dXJuIHsgVGV4dEJveEl0ZXJhdG9yIHsgfSwgbnVsbHB0ciB9OwotCi0gICAgc3Rk
Ojpzb3J0KGNhY2hlLT5ib3hlcy5iZWdpbigpLCBjYWNoZS0+Ym94ZXMuZW5kKCksIFsmXShhdXRv
JiBhLCBhdXRvJiBiKSB7Ci0gICAgICAgIHJldHVybiBhLT5zdGFydCgpIDwgYi0+c3RhcnQoKTsK
LSAgICB9KTsKLQotICAgIHJldHVybiB7IGNhY2hlLT5ib3hlc1swXSwgV1RGTW92ZShjYWNoZSkg
fTsKLX0KLQotVGV4dEJveEl0ZXJhdG9yIG5leHRUZXh0Qm94SW5Mb2dpY2FsT3JkZXIoY29uc3Qg
VGV4dEJveEl0ZXJhdG9yJiB0ZXh0Qm94LCBMb2dpY2FsT3JkZXJDYWNoZSYgY2FjaGUpCi17Ci0g
ICAgaWYgKCFjYWNoZSkKLSAgICAgICAgcmV0dXJuIHRleHRCb3gtPm5leHRUZXh0Qm94KCk7Ci0K
LSAgICBpZiAoY2FjaGUtPmluZGV4ID09IGNhY2hlLT5ib3hlcy5zaXplKCkgfHwgY2FjaGUtPmJv
eGVzW2NhY2hlLT5pbmRleF0gIT0gdGV4dEJveCkgewotICAgICAgICBjYWNoZS0+aW5kZXggPSBj
YWNoZS0+Ym94ZXMuZmluZCh0ZXh0Qm94KTsKLSAgICAgICAgQVNTRVJUKGNhY2hlLT5pbmRleCAh
PSBub3RGb3VuZCk7Ci0gICAgfQotCi0gICAgY2FjaGUtPmluZGV4Kys7Ci0KLSAgICBpZiAoY2Fj
aGUtPmluZGV4IDwgY2FjaGUtPmJveGVzLnNpemUoKSkKLSAgICAgICAgcmV0dXJuIGNhY2hlLT5i
b3hlc1tjYWNoZS0+aW5kZXhdOwotCi0gICAgcmV0dXJuIHsgfTsKLX0KLQogVGV4dEJveEl0ZXJh
dG9yIHRleHRCb3hGb3IoY29uc3QgTGVnYWN5SW5saW5lVGV4dEJveCogbGVnYWN5SW5saW5lVGV4
dEJveCkKIHsKICAgICByZXR1cm4geyBCb3hMZWdhY3lQYXRoIHsgbGVnYWN5SW5saW5lVGV4dEJv
eCB9IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vSW5s
aW5lSXRlcmF0b3JUZXh0Qm94LmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24v
SW5saW5lSXRlcmF0b3JUZXh0Qm94LmgKaW5kZXggNDJiNDdlMzQ5OTdmMzNiMmE4N2RiNWUwYjdh
NWIxYWEwZGUyODNiOC4uZTkzMmMwNjg3NzI1MjVlNjJlMDhmZjQ3NjA1MmE2MTY3OTU1ZDVmYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0lubGluZUl0ZXJh
dG9yVGV4dEJveC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9Jbmxp
bmVJdGVyYXRvclRleHRCb3guaApAQCAtMzIsOSArMzIsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIG5hbWVzcGFjZSBJbmxpbmVJdGVyYXRvciB7CiAKLXN0cnVjdCBMb2dpY2FsT3JkZXJDYWNo
ZURhdGE7Ci11c2luZyBMb2dpY2FsT3JkZXJDYWNoZSA9IHN0ZDo6dW5pcXVlX3B0cjxMb2dpY2Fs
T3JkZXJDYWNoZURhdGE+OwotCiBjbGFzcyBUZXh0Qm94IDogcHVibGljIEJveCB7CiBwdWJsaWM6
CiAgICAgVGV4dEJveChQYXRoVmFyaWFudCYmKTsKQEAgLTYzLDYgKzYwLDcgQEAgcHVibGljOgog
ICAgIGNvbnN0IExlZ2FjeUlubGluZVRleHRCb3gqIGxlZ2FjeUlubGluZUJveCgpIGNvbnN0IHsg
cmV0dXJuIGRvd25jYXN0PExlZ2FjeUlubGluZVRleHRCb3g+KEJveDo6bGVnYWN5SW5saW5lQm94
KCkpOyB9CiAKICAgICBUZXh0Qm94SXRlcmF0b3IgbmV4dFRleHRCb3goKSBjb25zdDsKKyAgICBU
ZXh0Qm94SXRlcmF0b3IgcHJldmlvdXNUZXh0Qm94KCkgY29uc3Q7CiB9OwogCiBjbGFzcyBUZXh0
Qm94SXRlcmF0b3IgOiBwdWJsaWMgTGVhZkJveEl0ZXJhdG9yIHsKQEAgLTgzLDggKzgxLDYgQEAg
cHJpdmF0ZToKICAgICBCb3hJdGVyYXRvciYgdHJhdmVyc2VQcmV2aW91c09uTGluZSgpID0gZGVs
ZXRlOwogICAgIEJveEl0ZXJhdG9yJiB0cmF2ZXJzZU5leHRPbkxpbmVJZ25vcmluZ0xpbmVCcmVh
aygpID0gZGVsZXRlOwogICAgIEJveEl0ZXJhdG9yJiB0cmF2ZXJzZVByZXZpb3VzT25MaW5lSWdu
b3JpbmdMaW5lQnJlYWsoKSA9IGRlbGV0ZTsKLSAgICBCb3hJdGVyYXRvciYgdHJhdmVyc2VOZXh0
T25MaW5lSW5Mb2dpY2FsT3JkZXIoKSA9IGRlbGV0ZTsKLSAgICBCb3hJdGVyYXRvciYgdHJhdmVy
c2VQcmV2aW91c09uTGluZUluTG9naWNhbE9yZGVyKCkgPSBkZWxldGU7CiAKICAgICBjb25zdCBU
ZXh0Qm94JiBnZXQoKSBjb25zdCB7IHJldHVybiBkb3duY2FzdDxUZXh0Qm94PihtX2JveCk7IH0K
IH07CkBAIC0xMTEsMTUgKzEwNyw2IEBAIFRleHRCb3hJdGVyYXRvciB0ZXh0Qm94Rm9yKGNvbnN0
IExheW91dEludGVncmF0aW9uOjpJbmxpbmVDb250ZW50Jiwgc2l6ZV90IGJveEluCiAjZW5kaWYK
IFRleHRCb3hSYW5nZSB0ZXh0Qm94ZXNGb3IoY29uc3QgUmVuZGVyVGV4dCYpOwogCi1zdHJ1Y3Qg
TG9naWNhbE9yZGVyQ2FjaGVEYXRhIHsKLSAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FU
RUQ7Ci0gICAgCi0gICAgVmVjdG9yPFRleHRCb3hJdGVyYXRvcj4gYm94ZXM7Ci0gICAgc2l6ZV90
IGluZGV4IHsgMCB9OwotfTsKLXN0ZDo6cGFpcjxUZXh0Qm94SXRlcmF0b3IsIExvZ2ljYWxPcmRl
ckNhY2hlPiBmaXJzdFRleHRCb3hJbkxvZ2ljYWxPcmRlckZvcihjb25zdCBSZW5kZXJUZXh0Jik7
Ci1UZXh0Qm94SXRlcmF0b3IgbmV4dFRleHRCb3hJbkxvZ2ljYWxPcmRlcihjb25zdCBUZXh0Qm94
SXRlcmF0b3ImLCBMb2dpY2FsT3JkZXJDYWNoZSYpOwotCiBpbmxpbmUgYm9vbCBUZXh0Qm94Ojpo
YXNIeXBoZW4oKSBjb25zdAogewogICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKG1fcGF0aFZhcmlh
bnQsIFtdKGF1dG8mIHBhdGgpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCbG9ja0Zsb3cuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJs
b2NrRmxvdy5jcHAKaW5kZXggMTE4Y2MyMGE3YjJlYTU5MTM1OWM3MjUyNTYzNDFkZDdiZjE3ZGZj
MC4uZjJjNjI4ZjY3MWJiZmU1Y2I4OGU1ODVjY2FkZmEyZjJjZTc1MTZmZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHAKQEAgLTM2LDYgKzM2LDcgQEAK
ICNpbmNsdWRlICJIaXRUZXN0TG9jYXRpb24uaCIKICNpbmNsdWRlICJJbmxpbmVJdGVyYXRvckJv
eC5oIgogI2luY2x1ZGUgIklubGluZUl0ZXJhdG9yTGluZS5oIgorI2luY2x1ZGUgIklubGluZUl0
ZXJhdG9yTG9naWNhbE9yZGVyVHJhdmVyc2FsLmgiCiAjaW5jbHVkZSAiSW5saW5lSXRlcmF0b3JU
ZXh0Qm94LmgiCiAjaW5jbHVkZSAiSW5saW5lV2Fsa2VyLmgiCiAjaW5jbHVkZSAiTGF5b3V0SW50
ZWdyYXRpb25MaW5lTGF5b3V0LmgiCkBAIC0zNjE5LDcgKzM2MjAsOCBAQCBWaXNpYmxlUG9zaXRp
b24gUmVuZGVyQmxvY2tGbG93Ojpwb3NpdGlvbkZvclBvaW50V2l0aElubGluZUNoaWxkcmVuKGNv
bnN0IExheW91dAogICAgIGlmIChsYXN0TGluZVdpdGhDaGlsZHJlbikgewogICAgICAgICAvLyBX
ZSBoaXQgdGhpcyBjYXNlIGZvciBNYWMgYmVoYXZpb3Igd2hlbiB0aGUgWSBjb29yZGluYXRlIGlz
IGJlbG93IHRoZSBsYXN0IGJveC4KICAgICAgICAgQVNTRVJUKG1vdmVDYXJldFRvQm91bmRhcnkp
OwotICAgICAgICBpZiAoYXV0byBsb2dpY2FsbHlMYXN0UnVuID0gbGFzdExpbmVXaXRoQ2hpbGRy
ZW4tPmxvZ2ljYWxFbmRSdW5XaXRoTm9kZSgpKQorICAgICAgICBJbmxpbmVJdGVyYXRvcjo6TGlu
ZUxvZ2ljYWxPcmRlckNhY2hlIG9yZGVyQ2FjaGU7CisgICAgICAgIGlmIChhdXRvIGxvZ2ljYWxs
eUxhc3RSdW4gPSBJbmxpbmVJdGVyYXRvcjo6bGFzdExlYWZPbkxpbmVJbkxvZ2ljYWxPcmRlcldp
dGhOb2RlKGxhc3RMaW5lV2l0aENoaWxkcmVuLCBvcmRlckNhY2hlKSkKICAgICAgICAgICAgIHJl
dHVybiBwb3NpdGlvbkZvclJ1bigqdGhpcywgbG9naWNhbGx5TGFzdFJ1biwgZmFsc2UpOwogICAg
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwCmluZGV4IDU3ZGYxNDFl
ZjQ3Njc3ZDYyYWMxYjEzZjRhZTI5NTdjMjI1ZTg4NGYuLjI4MTY3MzA4NzczM2RiOWQzZGY2OTZj
NDQ2Mzk5MGQyZjI2ZGE2ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5j
cHAKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlICJIVE1MUGFyc2VySWRpb21zLmgiCiAjaW5j
bHVkZSAiSHlwaGVuYXRpb24uaCIKICNpbmNsdWRlICJJbmxpbmVJdGVyYXRvckxpbmUuaCIKKyNp
bmNsdWRlICJJbmxpbmVJdGVyYXRvckxvZ2ljYWxPcmRlclRyYXZlcnNhbC5oIgogI2luY2x1ZGUg
IklubGluZUl0ZXJhdG9yVGV4dEJveC5oIgogI2luY2x1ZGUgIklubGluZVJ1bkFuZE9mZnNldC5o
IgogI2luY2x1ZGUgIkxheW91dEludGVncmF0aW9uTGluZUxheW91dC5oIgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>441361</attachid>
            <date>2021-10-15 03:35:41 -0700</date>
            <delta_ts>2021-10-15 05:27:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-231800-20211015133540.patch</filename>
            <type>text/plain</type>
            <size>52063</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg0MjM2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODUwN2I1YjhiMjkzNjZj
N2M0ZDI3Mzk5ZWE0ZjQ1YzgxNTczZjU2OS4uMzU5ZGJjMWNmNDk2Y2U3ZmRhNDBlYzA0MWEyYzQ3
ZjQ3N2E4ZWRiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg4IEBACisyMDIxLTEwLTE1ICBBbnR0
aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBbTEZDXVtJbnRlZ3JhdGlv
bl0gRmFjdG9yIGxpbmUgbG9naWNhbCBvcmRlciB0cmF2ZXJzYWwgb3V0IG9mIGl0ZXJhdG9yCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzE4MDAKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTaW1pbGFyIHRv
IHRleHQgbG9naWNhbCBvcmRlciB0cmF2ZXJzYWwsIHVzZSBzdGFuZGFsb25lIHRyYXZlcnNhbCBm
dW5jdGlvbnMgd2l0aCBvcmRlciBjYWNoZQorICAgICAgICBvd25lZCBieSB0aGUgY2FsbGVyLgor
CisgICAgICAgIE1ha2UgdGhlIGNvZGUgZ2VuZXJpYyBzbyBpdCB3aWxsIHdvcmsgd2l0aCBJRkMg
QmlEaS4KKworICAgICAgICBGYWN0b3IgYWxsIHRyYXZlcnNhbCBmdW5jdGlvbnMgdG8gYSBmaWxl
IG9mIHRoZWlyIG93biwgSW5saW5lSXRlcmF0b3JMb2dpY2FsT3JkZXJUcmF2ZXJzYWwuaC9jcHAu
CisKKyAgICAgICAgKiBIZWFkZXJzLmNtYWtlOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAg
ICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBkb20v
UG9zaXRpb24uY3BwOgorICAgICAgICAqIGVkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuY3Bw
OgorICAgICAgICAqIGVkaXRpbmcvVGV4dEl0ZXJhdG9yLmg6CisgICAgICAgICogZWRpdGluZy9W
aXNpYmxlUG9zaXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VmlzaWJsZVBvc2l0aW9uOjps
ZWZ0VmlzdWFsbHlEaXN0aW5jdENhbmRpZGF0ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpW
aXNpYmxlUG9zaXRpb246OnJpZ2h0VmlzdWFsbHlEaXN0aW5jdENhbmRpZGF0ZSBjb25zdCk6Cisg
ICAgICAgICogZWRpdGluZy9WaXNpYmxlVW5pdHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cHJl
dmlvdXNUZXh0T3JMaW5lQnJlYWtSdW4pOgorICAgICAgICAoV2ViQ29yZTo6bmV4dFRleHRPckxp
bmVCcmVha1J1bik6CisgICAgICAgIChXZWJDb3JlOjpzdGFydFRleHRPckxpbmVCcmVha1J1bik6
CisgICAgICAgIChXZWJDb3JlOjplbmRUZXh0T3JMaW5lQnJlYWtSdW4pOgorICAgICAgICAoV2Vi
Q29yZTo6bG9naWNhbGx5UHJldmlvdXNSdW4pOgorICAgICAgICAoV2ViQ29yZTo6bG9naWNhbGx5
TmV4dFJ1bik6CisgICAgICAgIChXZWJDb3JlOjp3b3JkQnJlYWtJdGVyYXRvckZvck1pbk9mZnNl
dEJvdW5kYXJ5KToKKyAgICAgICAgKFdlYkNvcmU6OndvcmRCcmVha0l0ZXJhdG9yRm9yTWF4T2Zm
c2V0Qm91bmRhcnkpOgorICAgICAgICAoV2ViQ29yZTo6c3RhcnRQb3NpdGlvbkZvckxpbmUpOgor
ICAgICAgICAoV2ViQ29yZTo6ZW5kUG9zaXRpb25Gb3JMaW5lKToKKyAgICAgICAgKiBsYXlvdXQv
aW50ZWdyYXRpb24vSW5saW5lSXRlcmF0b3JCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5s
aW5lSXRlcmF0b3I6OkxlYWZCb3hJdGVyYXRvcjo6dHJhdmVyc2VQcmV2aW91c09uTGluZUlnbm9y
aW5nTGluZUJyZWFrKToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpMZWFmQm94
SXRlcmF0b3I6OnRyYXZlcnNlTmV4dE9uTGluZUluTG9naWNhbE9yZGVyKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpMZWFmQm94SXRlcmF0b3I6OnRyYXZlcnNl
UHJldmlvdXNPbkxpbmVJbkxvZ2ljYWxPcmRlcik6IERlbGV0ZWQuCisgICAgICAgICogbGF5b3V0
L2ludGVncmF0aW9uL0lubGluZUl0ZXJhdG9yQm94Lmg6CisgICAgICAgIChXZWJDb3JlOjpJbmxp
bmVJdGVyYXRvcjo6Qm94SXRlcmF0b3I6OkJveEl0ZXJhdG9yKToKKyAgICAgICAgKiBsYXlvdXQv
aW50ZWdyYXRpb24vSW5saW5lSXRlcmF0b3JCb3hMZWdhY3lQYXRoLmg6CisgICAgICAgIChXZWJD
b3JlOjpJbmxpbmVJdGVyYXRvcjo6Qm94TGVnYWN5UGF0aDo6Qm94TGVnYWN5UGF0aCk6CisgICAg
ICAgIChXZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6Qm94TGVnYWN5UGF0aDo6dHJhdmVyc2VOZXh0
T25MaW5lSW5Mb2dpY2FsT3JkZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW5saW5l
SXRlcmF0b3I6OkJveExlZ2FjeVBhdGg6OnRyYXZlcnNlUHJldmlvdXNPbkxpbmVJbkxvZ2ljYWxP
cmRlcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6Qm94TGVn
YWN5UGF0aDo6aW5pdGlhbGl6ZUxvZ2ljYWxPcmRlckNhY2hlRm9yTGluZSk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6Qm94TGVnYWN5UGF0aDo6dHJhdmVyc2VO
ZXh0SW5saW5lQm94SW5DYWNoZU9yZGVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Oklu
bGluZUl0ZXJhdG9yOjpCb3hMZWdhY3lQYXRoOjp0cmF2ZXJzZVByZXZpb3VzSW5saW5lQm94SW5D
YWNoZU9yZGVyKTogRGVsZXRlZC4KKyAgICAgICAgKiBsYXlvdXQvaW50ZWdyYXRpb24vSW5saW5l
SXRlcmF0b3JCb3hNb2Rlcm5QYXRoLmg6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVyYXRv
cjo6Qm94TW9kZXJuUGF0aDo6dHJhdmVyc2VOZXh0T25MaW5lSW5Mb2dpY2FsT3JkZXIpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRlcmF0b3I6OkJveE1vZGVyblBhdGg6OnRy
YXZlcnNlUHJldmlvdXNPbkxpbmVJbkxvZ2ljYWxPcmRlcik6IERlbGV0ZWQuCisgICAgICAgICog
bGF5b3V0L2ludGVncmF0aW9uL0lubGluZUl0ZXJhdG9yTGluZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJbmxpbmVJdGVyYXRvcjo6TGluZTo6bG9naWNhbFN0YXJ0UnVuIGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpMaW5lOjpsb2dpY2FsRW5kUnVu
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpMaW5l
Ojpsb2dpY2FsU3RhcnRSdW5XaXRoTm9kZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpJbmxpbmVJdGVyYXRvcjo6TGluZTo6bG9naWNhbEVuZFJ1bldpdGhOb2RlIGNvbnN0KTog
RGVsZXRlZC4KKyAgICAgICAgKiBsYXlvdXQvaW50ZWdyYXRpb24vSW5saW5lSXRlcmF0b3JMaW5l
Lmg6CisgICAgICAgICogbGF5b3V0L2ludGVncmF0aW9uL0lubGluZUl0ZXJhdG9yTGluZUxlZ2Fj
eVBhdGguaDoKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpMaW5lSXRlcmF0b3JM
ZWdhY3lQYXRoOjpsb2dpY2FsU3RhcnRSdW4gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6SW5saW5lSXRlcmF0b3I6OkxpbmVJdGVyYXRvckxlZ2FjeVBhdGg6OmxvZ2ljYWxFbmRS
dW4gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIGxheW91dC9pbnRlZ3JhdGlvbi9JbmxpbmVJ
dGVyYXRvckxpbmVNb2Rlcm5QYXRoLmg6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVyYXRv
cjo6TGluZUl0ZXJhdG9yTW9kZXJuUGF0aDo6bG9naWNhbFN0YXJ0UnVuIGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpMaW5lSXRlcmF0b3JNb2Rlcm5Q
YXRoOjpsb2dpY2FsRW5kUnVuIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBsYXlvdXQvaW50
ZWdyYXRpb24vSW5saW5lSXRlcmF0b3JMb2dpY2FsT3JkZXJUcmF2ZXJzYWwuY3BwOiBBZGRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjptYWtlVGV4dExvZ2ljYWxPcmRlckNh
Y2hlSWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRlcmF0b3I6OnVwZGF0ZVRl
eHRMb2dpY2FsT3JkZXJDYWNoZUlmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0
ZXJhdG9yOjpmaXJzdFRleHRCb3hJbkxvZ2ljYWxPcmRlckZvcik6CisgICAgICAgIChXZWJDb3Jl
OjpJbmxpbmVJdGVyYXRvcjo6bmV4dFRleHRCb3hJbkxvZ2ljYWxPcmRlcik6CisgICAgICAgIChX
ZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6bWFrZUxpbmVMb2dpY2FsT3JkZXJDYWNoZUlmTmVlZGVk
KToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjp1cGRhdGVMaW5lTG9naWNhbE9y
ZGVyQ2FjaGVJZk5lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6Zmly
c3RMZWFmT25MaW5lSW5Mb2dpY2FsT3JkZXIpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRl
cmF0b3I6Omxhc3RMZWFmT25MaW5lSW5Mb2dpY2FsT3JkZXIpOgorICAgICAgICAoV2ViQ29yZTo6
SW5saW5lSXRlcmF0b3I6Om5leHRMZWFmT25MaW5lSW5Mb2dpY2FsT3JkZXIpOgorICAgICAgICAo
V2ViQ29yZTo6SW5saW5lSXRlcmF0b3I6OnByZXZpb3VzTGVhZk9uTGluZUluTG9naWNhbE9yZGVy
KToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpmaXJzdExlYWZPbkxpbmVJbkxv
Z2ljYWxPcmRlcldpdGhOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjps
YXN0TGVhZk9uTGluZUluTG9naWNhbE9yZGVyV2l0aE5vZGUpOgorICAgICAgICAqIGxheW91dC9p
bnRlZ3JhdGlvbi9JbmxpbmVJdGVyYXRvckxvZ2ljYWxPcmRlclRyYXZlcnNhbC5oOiBBZGRlZC4K
KyAgICAgICAgKiBsYXlvdXQvaW50ZWdyYXRpb24vSW5saW5lSXRlcmF0b3JUZXh0Qm94LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpmaXJzdFRleHRCb3hJbkxvZ2ljYWxP
cmRlckZvcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6bmV4
dFRleHRCb3hJbkxvZ2ljYWxPcmRlcik6IERlbGV0ZWQuCisgICAgICAgICogbGF5b3V0L2ludGVn
cmF0aW9uL0lubGluZUl0ZXJhdG9yVGV4dEJveC5oOgorICAgICAgICAoKTogRGVsZXRlZC4KKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckJsb2NrRmxvdzo6cG9zaXRpb25Gb3JQb2ludFdpdGhJbmxpbmVDaGlsZHJlbik6Cisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwOgorCiAyMDIxLTEwLTE0ICBZb3Vlbm4g
RmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBNZWRpYUNhcGFiaWxpdGllcyBz
aG91bGQgZW5xdWV1ZSBhIHRhc2sgdG8gcmVzb2x2ZSBwcm9taXNlcwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UK
aW5kZXggYjA2NTdlMWNjOWRlNTliMDkyOTg1OWQ0OTE3MmVmMTljZmQ4ZTYzMS4uNGNlNTUxY2Nk
MDM1ZDFiNTcwNjNlZjQxMjRmM2JjZWNkMmI3MjFlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvSGVhZGVycy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCkBAIC04
MDcsNiArODA3LDcgQEAgc2V0KFdlYkNvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogICAg
IGxheW91dC9pbnRlZ3JhdGlvbi9JbmxpbmVJdGVyYXRvckxpbmUuaAogICAgIGxheW91dC9pbnRl
Z3JhdGlvbi9JbmxpbmVJdGVyYXRvckxpbmVMZWdhY3lQYXRoLmgKICAgICBsYXlvdXQvaW50ZWdy
YXRpb24vSW5saW5lSXRlcmF0b3JMaW5lTW9kZXJuUGF0aC5oCisgICAgbGF5b3V0L2ludGVncmF0
aW9uL0lubGluZUl0ZXJhdG9yTG9naWNhbE9yZGVyVHJhdmVyc2FsLmgKICAgICBsYXlvdXQvaW50
ZWdyYXRpb24vSW5saW5lSXRlcmF0b3JUZXh0Qm94LmgKICAgICBsYXlvdXQvaW50ZWdyYXRpb24v
TGF5b3V0SW50ZWdyYXRpb25JbmxpbmVDb250ZW50LmgKICAgICBsYXlvdXQvaW50ZWdyYXRpb24v
TGF5b3V0SW50ZWdyYXRpb25MaW5lLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJj
ZXMudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXggMjU3MjYxOTBjOTFhZTM4
N2RlM2Q0MWVjYjBhOTY5NjlmZGU2YWUxZS4uYzNlMjU4N2U2Y2NmYzEyYzBlOTMzMzE2ZjNlMmQ0
NDUyOGUxNjZmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIv
U291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKQEAgLTE1MjIsNiArMTUyMiw3IEBAIGxheW91dC9m
b3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL3RleHQvVGV4dFV0aWwuY3BwCiBsYXlvdXQvaW50ZWdy
YXRpb24vSW5saW5lSXRlcmF0b3JCb3guY3BwCiBsYXlvdXQvaW50ZWdyYXRpb24vSW5saW5lSXRl
cmF0b3JJbmxpbmVCb3guY3BwCiBsYXlvdXQvaW50ZWdyYXRpb24vSW5saW5lSXRlcmF0b3JMaW5l
LmNwcAorbGF5b3V0L2ludGVncmF0aW9uL0lubGluZUl0ZXJhdG9yTG9naWNhbE9yZGVyVHJhdmVy
c2FsLmNwcAogbGF5b3V0L2ludGVncmF0aW9uL0lubGluZUl0ZXJhdG9yVGV4dEJveC5jcHAKIGxh
eW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbkJveFRyZWUuY3BwCiBsYXlvdXQvaW50
ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25Db3ZlcmFnZS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBhMTIzNmVmZWI3MzA4
ZDUzOTBlNWY4Y2UwZDI3Njk0ZGE0MTJkMTllLi44NzMzNmIzYTFkMjEzNWU4NGQ5ZGQ5NjkwYTY3
YTQwMzAwZDdlNDExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCkBAIC01MjUyLDYgKzUyNTIsNyBAQAogCQlFNDE1RUIxMzI3MEMzNTEz
MDBFOERBMUIgLyogSW5saW5lSXRlcmF0b3JJbmxpbmVCb3guaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0MTVFQjExMjcwQzM1MTIwMEU4REExQiAvKiBJ
bmxpbmVJdGVyYXRvcklubGluZUJveC5oICovOyB9OwogCQlFNDE4MDI1NTIzRDQ1NDlCMDBGRkIw
NzEgLyogTGF5b3V0SW50ZWdyYXRpb25Cb3hUcmVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNDE4MDI1MzIzRDQ1NDlBMDBGRkIwNzEgLyogTGF5b3V0
SW50ZWdyYXRpb25Cb3hUcmVlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJRTQxOTA0MUYxQ0M2NDg2QjAwQzM1RjVEIC8qIEZvbnRTZWxlY3RvckNs
aWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTQx
OTA0MUUxQ0M2NDg2QjAwQzM1RjVEIC8qIEZvbnRTZWxlY3RvckNsaWVudC5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUU0MUFDQzE2MjcxNzM0MDIw
MDNFOTE1NyAvKiBJbmxpbmVJdGVyYXRvckxvZ2ljYWxPcmRlclRyYXZlcnNhbC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTQxQUNDMTUyNzE3MzQwMjAw
M0U5MTU3IC8qIElubGluZUl0ZXJhdG9yTG9naWNhbE9yZGVyVHJhdmVyc2FsLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTQyMDUwMTcyMTQxOTAx
QjAwNjZFRjNCIC8qIFByb2Nlc3NXYXJtaW5nLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBFNDIwNTAxNDIxNDE5MDFBMDA2NkVGM0IgLyogUHJvY2Vzc1dh
cm1pbmcuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQlFNDI0QTM5RTEzMzBERjAxMDBDRjZEQzkgLyogTGVnYWN5VGlsZUdyaWRUaWxlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNDI0QTM5RDEzMzBERjAx
MDBDRjZEQzkgLyogTGVnYWN5VGlsZUdyaWRUaWxlLmggKi87IH07CiAJCUU0MjVBNDlBMTgyOTJC
ODQwMDIwQ0ZDRiAvKiBDb2xsZWN0aW9uSW5kZXhDYWNoZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTQyNUE0OTkxODI5MkI4NDAwMjBDRkNGIC8qIENv
bGxlY3Rpb25JbmRleENhY2hlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKQEAgLTE2NTM0LDYgKzE2NTM1LDggQEAKIAkJRTQxODAyNTMyM0Q0NTQ5QTAw
RkZCMDcxIC8qIExheW91dEludGVncmF0aW9uQm94VHJlZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBMYXlvdXRJbnRlZ3JhdGlvbkJveFRyZWUuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJRTQxODAyNTYyM0Q0NTRCNTAwRkZCMDcxIC8qIExheW91dEludGVncmF0
aW9uQm94VHJlZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBMYXlvdXRJbnRlZ3JhdGlvbkJveFRy
ZWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFNDE5MDQxRTFDQzY0ODZCMDBD
MzVGNUQgLyogRm9udFNlbGVjdG9yQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEZvbnRTZWxlY3RvckNsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlFNDFBQ0MxMjI3MTczM0YzMDAzRTkxNTcgLyogSW5saW5lSXRlcmF0b3JMb2dpY2FsT3JkZXJU
cmF2ZXJzYWwuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5saW5l
SXRlcmF0b3JMb2dpY2FsT3JkZXJUcmF2ZXJzYWwuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlFNDFBQ0MxNTI3MTczNDAyMDAzRTkxNTcgLyogSW5saW5lSXRlcmF0b3JMb2dpY2Fs
T3JkZXJUcmF2ZXJzYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5saW5l
SXRlcmF0b3JMb2dpY2FsT3JkZXJUcmF2ZXJzYWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJRTQxRUEwMzgxMTk4MzZEQjAwNzEwQkM1IC8qIENTU1Byb3BlcnR5TmFtZXMuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gQ1NTUHJvcGVydHlOYW1lcy5jcHA7
IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJDb3JlL0NTU1Byb3BlcnR5TmFtZXMuY3BwOyBzb3Vy
Y2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQlFNDFFQTAzOTExOTgzNzQ5MDA3MTBC
QzUgLyogQ1NTVmFsdWVLZXl3b3Jkcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IG5hbWUgPSBDU1NWYWx1ZUtleXdvcmRzLmNwcDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYkNv
cmUvQ1NTVmFsdWVLZXl3b3Jkcy5jcHA7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7
IH07CiAJCUU0MjA1MDE0MjE0MTkwMUEwMDY2RUYzQiAvKiBQcm9jZXNzV2FybWluZy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQcm9jZXNzV2FybWluZy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtMjk3MDcsNiArMjk3MTAsOCBAQAogCQkJCUU0RDMzRjNGMjUy
QzRCODIwMDgzN0QwNSAvKiBJbmxpbmVJdGVyYXRvckxpbmUuaCAqLywKIAkJCQlFNEQzM0Y0MzI1
MkM1MEUyMDA4MzdEMDUgLyogSW5saW5lSXRlcmF0b3JMaW5lTGVnYWN5UGF0aC5oICovLAogCQkJ
CUU0RDMzRjQ1MjUyQzUwRkIwMDgzN0QwNSAvKiBJbmxpbmVJdGVyYXRvckxpbmVNb2Rlcm5QYXRo
LmggKi8sCisJCQkJRTQxQUNDMTIyNzE3MzNGMzAwM0U5MTU3IC8qIElubGluZUl0ZXJhdG9yTG9n
aWNhbE9yZGVyVHJhdmVyc2FsLmNwcCAqLywKKwkJCQlFNDFBQ0MxNTI3MTczNDAyMDAzRTkxNTcg
LyogSW5saW5lSXRlcmF0b3JMb2dpY2FsT3JkZXJUcmF2ZXJzYWwuaCAqLywKIAkJCQlFNDdDRUJE
RTI3MDk5MTY0MDBCOEQ4RjUgLyogSW5saW5lSXRlcmF0b3JUZXh0Qm94LmNwcCAqLywKIAkJCQlF
NDdDRUJFMDI3MDk5MTZEMDBCOEQ4RjUgLyogSW5saW5lSXRlcmF0b3JUZXh0Qm94LmggKi8sCiAJ
CQkJRTQxODAyNTYyM0Q0NTRCNTAwRkZCMDcxIC8qIExheW91dEludGVncmF0aW9uQm94VHJlZS5j
cHAgKi8sCkBAIC0zMzI0OCw2ICszMzI1Myw3IEBACiAJCQkJRTREMzNGNDEyNTJDNEI4MzAwODM3
RDA1IC8qIElubGluZUl0ZXJhdG9yTGluZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTREMzNGNDQy
NTJDNTBFMjAwODM3RDA1IC8qIElubGluZUl0ZXJhdG9yTGluZUxlZ2FjeVBhdGguaCBpbiBIZWFk
ZXJzICovLAogCQkJCUU0RDMzRjQ2MjUyQzUwRkMwMDgzN0QwNSAvKiBJbmxpbmVJdGVyYXRvckxp
bmVNb2Rlcm5QYXRoLmggaW4gSGVhZGVycyAqLywKKwkJCQlFNDFBQ0MxNjI3MTczNDAyMDAzRTkx
NTcgLyogSW5saW5lSXRlcmF0b3JMb2dpY2FsT3JkZXJUcmF2ZXJzYWwuaCBpbiBIZWFkZXJzICov
LAogCQkJCUU0N0NFQkUxMjcwOTkxNkQwMEI4RDhGNSAvKiBJbmxpbmVJdGVyYXRvclRleHRCb3gu
aCBpbiBIZWFkZXJzICovLAogCQkJCTZGQUFFNzEzMjZBMjgxNEIwMEUwNzUwMiAvKiBJbmxpbmVM
ZXZlbEJveC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNkYwQ0Q2OTUyMjlFRDMyNzAwQzU5OTRFIC8q
IElubGluZUxpbmUuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL1Bvc2l0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Qb3NpdGlvbi5jcHAKaW5kZXgg
MzI2NTYzZDUwODVjY2UwNDM0Yjc3NTU4NjI0OGE0YzUzYmZmYmMyYS4uMmMzMGRjMzI2N2YzZGY3
NzI5NTE0MjQ2MzllYzMzNWVlNjZhZGY1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L1Bvc2l0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUG9zaXRpb24uY3BwCkBAIC0z
Nyw2ICszNyw3IEBACiAjaW5jbHVkZSAiSFRNTFBhcnNlcklkaW9tcy5oIgogI2luY2x1ZGUgIkhU
TUxUYWJsZUVsZW1lbnQuaCIKICNpbmNsdWRlICJJbmxpbmVJdGVyYXRvckxpbmUuaCIKKyNpbmNs
dWRlICJJbmxpbmVJdGVyYXRvckxvZ2ljYWxPcmRlclRyYXZlcnNhbC5oIgogI2luY2x1ZGUgIklu
bGluZUl0ZXJhdG9yVGV4dEJveC5oIgogI2luY2x1ZGUgIklubGluZVJ1bkFuZE9mZnNldC5oIgog
I2luY2x1ZGUgIkxlZ2FjeUlubGluZVRleHRCb3guaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHAKaW5kZXggYzVlODViMTg4ZDhkOGE2N2FkYjM1
ZjM4NGE5YmJiYzExMTA2ZTEyNC4uOWRiYTIxODJhZjQ5MmEzODVmMzY5OWUwZDhmM2M2OTBlNDM2
NjdiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29t
bWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFu
ZC5jcHAKQEAgLTQ4LDYgKzQ4LDcgQEAKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRl
ICJIVE1MU3BhbkVsZW1lbnQuaCIKICNpbmNsdWRlICJJbmxpbmVJdGVyYXRvckJveC5oIgorI2lu
Y2x1ZGUgIklubGluZUl0ZXJhdG9yTG9naWNhbE9yZGVyVHJhdmVyc2FsLmgiCiAjaW5jbHVkZSAi
SW5zZXJ0SW50b1RleHROb2RlQ29tbWFuZC5oIgogI2luY2x1ZGUgIkluc2VydExpbmVCcmVha0Nv
bW1hbmQuaCIKICNpbmNsdWRlICJJbnNlcnROb2RlQmVmb3JlQ29tbWFuZC5oIgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuaCBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmgKaW5kZXggZWYyM2FkZTBhYzE2MGIwNjdhYjk1NzdjNDJm
ZGJhOGNkMjZhOTFjNi4uYWI3N2Y0MjA2ZWJhMDQzNTJmMGQ1MGZlMTIyYjE3ZWUxZTRiOGMxYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5oCkBAIC0yNyw2ICsyNyw3IEBACiAK
ICNpbmNsdWRlICJDaGFyYWN0ZXJSYW5nZS5oIgogI2luY2x1ZGUgIkZpbmRPcHRpb25zLmgiCisj
aW5jbHVkZSAiSW5saW5lSXRlcmF0b3JMb2dpY2FsT3JkZXJUcmF2ZXJzYWwuaCIKICNpbmNsdWRl
ICJJbmxpbmVJdGVyYXRvclRleHRCb3guaCIKICNpbmNsdWRlICJTaW1wbGVSYW5nZS5oIgogI2lu
Y2x1ZGUgIlRleHRJdGVyYXRvckJlaGF2aW9yLmgiCkBAIC0xNTEsMTEgKzE1MiwxMSBAQCBwcml2
YXRlOgogICAgIC8vIFVzZWQgd2hlbiB0aGVyZSBpcyBzdGlsbCBzb21lIHBlbmRpbmcgdGV4dCBm
cm9tIHRoZSBjdXJyZW50IG5vZGU7IHdoZW4gdGhlc2UgYXJlIGZhbHNlIGFuZCBudWxsLCB3ZSBn
byBiYWNrIHRvIG5vcm1hbCBpdGVyYXRpbmcuCiAgICAgTm9kZSogbV9ub2RlRm9yQWRkaXRpb25h
bE5ld2xpbmUgeyBudWxscHRyIH07CiAgICAgSW5saW5lSXRlcmF0b3I6OlRleHRCb3hJdGVyYXRv
ciBtX3RleHRSdW47Ci0gICAgSW5saW5lSXRlcmF0b3I6OkxvZ2ljYWxPcmRlckNhY2hlIG1fdGV4
dFJ1bkxvZ2ljYWxPcmRlckNhY2hlOworICAgIElubGluZUl0ZXJhdG9yOjpUZXh0TG9naWNhbE9y
ZGVyQ2FjaGUgbV90ZXh0UnVuTG9naWNhbE9yZGVyQ2FjaGU7CiAKICAgICAvLyBVc2VkIHdoZW4g
aXRlcmF0aW5nIG92ZXIgOmZpcnN0LWxldHRlciB0ZXh0IHRvIHNhdmUgcG9pbnRlciB0byByZW1h
aW5pbmcgdGV4dCBib3guCiAgICAgSW5saW5lSXRlcmF0b3I6OlRleHRCb3hJdGVyYXRvciBtX3Jl
bWFpbmluZ1RleHRSdW47Ci0gICAgSW5saW5lSXRlcmF0b3I6OkxvZ2ljYWxPcmRlckNhY2hlIG1f
cmVtYWluaW5nVGV4dFJ1bkxvZ2ljYWxPcmRlckNhY2hlOworICAgIElubGluZUl0ZXJhdG9yOjpU
ZXh0TG9naWNhbE9yZGVyQ2FjaGUgbV9yZW1haW5pbmdUZXh0UnVuTG9naWNhbE9yZGVyQ2FjaGU7
CiAKICAgICAvLyBVc2VkIHRvIHBvaW50IHRvIFJlbmRlclRleHQgb2JqZWN0IGZvciA6Zmlyc3Qt
bGV0dGVyLgogICAgIFJlbmRlclRleHQqIG1fZmlyc3RMZXR0ZXJUZXh0IHsgbnVsbHB0ciB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlUG9zaXRpb24uY3BwIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlUG9zaXRpb24uY3BwCmluZGV4IDI0ZGE1NWIz
YjQxNjFlOTNlZWZlNTIyNmUzN2U2ODkxMDI4NWZiMDkuLjJjM2UwNzhhMzJhMmZlZjIxZGE0ZmVj
ZjlkZGFkYjcxNDJhZWYzMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlz
aWJsZVBvc2l0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVQb3Np
dGlvbi5jcHAKQEAgLTEyMiw2ICsxMjIsOCBAQCBQb3NpdGlvbiBWaXNpYmxlUG9zaXRpb246Omxl
ZnRWaXN1YWxseURpc3RpbmN0Q2FuZGlkYXRlKCkgY29uc3QKICAgICBQb3NpdGlvbiBkb3duc3Ry
ZWFtU3RhcnQgPSBwLmRvd25zdHJlYW0oKTsKICAgICBUZXh0RGlyZWN0aW9uIHByaW1hcnlEaXJl
Y3Rpb24gPSBwLnByaW1hcnlEaXJlY3Rpb24oKTsKIAorICAgIElubGluZUl0ZXJhdG9yOjpMaW5l
TG9naWNhbE9yZGVyQ2FjaGUgb3JkZXJDYWNoZTsKKwogICAgIHdoaWxlICh0cnVlKSB7CiAgICAg
ICAgIGF1dG8gW3J1biwgb2Zmc2V0XSA9IHAuaW5saW5lUnVuQW5kT2Zmc2V0KG1fYWZmaW5pdHks
IHByaW1hcnlEaXJlY3Rpb24pOwogICAgICAgICBpZiAoIXJ1bikKQEAgLTE3NCw3ICsxNzYsOSBA
QCBQb3NpdGlvbiBWaXNpYmxlUG9zaXRpb246OmxlZnRWaXN1YWxseURpc3RpbmN0Q2FuZGlkYXRl
KCkgY29uc3QKIAogICAgICAgICAgICAgaWYgKHJ1bi0+ZGlyZWN0aW9uKCkgPT0gcHJpbWFyeURp
cmVjdGlvbikgewogICAgICAgICAgICAgICAgIGlmICghcHJldmlvdXNSdW4pIHsKLSAgICAgICAg
ICAgICAgICAgICAgYXV0byBsb2dpY2FsU3RhcnQgPSAocHJpbWFyeURpcmVjdGlvbiA9PSBUZXh0
RGlyZWN0aW9uOjpMVFIpID8gcnVuLT5saW5lKCktPmxvZ2ljYWxTdGFydFJ1bldpdGhOb2RlKCkg
OiBydW4tPmxpbmUoKS0+bG9naWNhbEVuZFJ1bldpdGhOb2RlKCk7CisgICAgICAgICAgICAgICAg
ICAgIGF1dG8gbG9naWNhbFN0YXJ0ID0gcHJpbWFyeURpcmVjdGlvbiA9PSBUZXh0RGlyZWN0aW9u
OjpMVFIKKyAgICAgICAgICAgICAgICAgICAgICAgID8gSW5saW5lSXRlcmF0b3I6OmZpcnN0TGVh
Zk9uTGluZUluTG9naWNhbE9yZGVyV2l0aE5vZGUocnVuLT5saW5lKCksIG9yZGVyQ2FjaGUpCisg
ICAgICAgICAgICAgICAgICAgICAgICA6IElubGluZUl0ZXJhdG9yOjpsYXN0TGVhZk9uTGluZUlu
TG9naWNhbE9yZGVyV2l0aE5vZGUocnVuLT5saW5lKCksIG9yZGVyQ2FjaGUpOwogICAgICAgICAg
ICAgICAgICAgICBpZiAobG9naWNhbFN0YXJ0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBy
dW4gPSBsb2dpY2FsU3RhcnQ7CiAgICAgICAgICAgICAgICAgICAgICAgICByZW5kZXJlciA9ICZy
dW4tPnJlbmRlcmVyKCk7CkBAIC0yODQsNiArMjg4LDggQEAgUG9zaXRpb24gVmlzaWJsZVBvc2l0
aW9uOjpyaWdodFZpc3VhbGx5RGlzdGluY3RDYW5kaWRhdGUoKSBjb25zdAogICAgIFBvc2l0aW9u
IGRvd25zdHJlYW1TdGFydCA9IHAuZG93bnN0cmVhbSgpOwogICAgIFRleHREaXJlY3Rpb24gcHJp
bWFyeURpcmVjdGlvbiA9IHAucHJpbWFyeURpcmVjdGlvbigpOwogCisgICAgSW5saW5lSXRlcmF0
b3I6OkxpbmVMb2dpY2FsT3JkZXJDYWNoZSBvcmRlckNhY2hlOworCiAgICAgd2hpbGUgKHRydWUp
IHsKICAgICAgICAgYXV0byBbcnVuLCBvZmZzZXRdID0gcC5pbmxpbmVSdW5BbmRPZmZzZXQobV9h
ZmZpbml0eSwgcHJpbWFyeURpcmVjdGlvbik7CiAgICAgICAgIGlmICghcnVuKQpAQCAtMzM2LDcg
KzM0MiwxMCBAQCBQb3NpdGlvbiBWaXNpYmxlUG9zaXRpb246OnJpZ2h0VmlzdWFsbHlEaXN0aW5j
dENhbmRpZGF0ZSgpIGNvbnN0CiAKICAgICAgICAgICAgIGlmIChydW4tPmRpcmVjdGlvbigpID09
IHByaW1hcnlEaXJlY3Rpb24pIHsKICAgICAgICAgICAgICAgICBpZiAoIW5leHRSdW4pIHsKLSAg
ICAgICAgICAgICAgICAgICAgYXV0byBsb2dpY2FsRW5kID0gcHJpbWFyeURpcmVjdGlvbiA9PSBU
ZXh0RGlyZWN0aW9uOjpMVFIgPyBydW4tPmxpbmUoKS0+bG9naWNhbEVuZFJ1bldpdGhOb2RlKCkg
OiBydW4tPmxpbmUoKS0+bG9naWNhbFN0YXJ0UnVuV2l0aE5vZGUoKTsKKyAgICAgICAgICAgICAg
ICAgICAgYXV0byBsb2dpY2FsRW5kID0gcHJpbWFyeURpcmVjdGlvbiA9PSBUZXh0RGlyZWN0aW9u
OjpMVFIKKyAgICAgICAgICAgICAgICAgICAgICAgID8gSW5saW5lSXRlcmF0b3I6Omxhc3RMZWFm
T25MaW5lSW5Mb2dpY2FsT3JkZXJXaXRoTm9kZShydW4tPmxpbmUoKSwgb3JkZXJDYWNoZSkKKyAg
ICAgICAgICAgICAgICAgICAgICAgIDogSW5saW5lSXRlcmF0b3I6OmZpcnN0TGVhZk9uTGluZUlu
TG9naWNhbE9yZGVyV2l0aE5vZGUocnVuLT5saW5lKCksIG9yZGVyQ2FjaGUpOworCiAgICAgICAg
ICAgICAgICAgICAgIGlmIChsb2dpY2FsRW5kKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBy
dW4gPSBsb2dpY2FsRW5kOwogICAgICAgICAgICAgICAgICAgICAgICAgcmVuZGVyZXIgPSAmcnVu
LT5yZW5kZXJlcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxl
VW5pdHMuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlVW5pdHMuY3BwCmluZGV4
IDkzODc4ODgzY2U4ZDVmNzA3YjczYjAyZDg3NjA0Yzg1Y2VkY2ZhZWIuLjZjMDI0YmUzNTQ4NTlm
MGNjNzcwZjExOWVmOWU3MWJiYTVkNGFkNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvVmlzaWJsZVVuaXRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2li
bGVVbml0cy5jcHAKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNp
bmNsdWRlICJJbmxpbmVJdGVyYXRvckJveC5oIgogI2luY2x1ZGUgIklubGluZUl0ZXJhdG9yTGlu
ZS5oIgorI2luY2x1ZGUgIklubGluZUl0ZXJhdG9yTG9naWNhbE9yZGVyVHJhdmVyc2FsLmgiCiAj
aW5jbHVkZSAiSW5saW5lUnVuQW5kT2Zmc2V0LmgiCiAjaW5jbHVkZSAiTm9kZVRyYXZlcnNhbC5o
IgogI2luY2x1ZGUgIlJhbmdlLmgiCkBAIC0xMjksNTAgKzEzMCw1MCBAQCBzdGF0aWMgYm9vbCBp
c1RleHRPckxpbmVCcmVha1J1bihJbmxpbmVJdGVyYXRvcjo6TGVhZkJveEl0ZXJhdG9yIHJ1bikK
ICAgICByZXR1cm4gcnVuICYmIChydW4tPmlzVGV4dCgpIHx8IHJ1bi0+cmVuZGVyZXIoKS5pc0JS
KCkpOwogfQogCi1zdGF0aWMgSW5saW5lSXRlcmF0b3I6OkxlYWZCb3hJdGVyYXRvciBwcmV2aW91
c1RleHRPckxpbmVCcmVha1J1bihJbmxpbmVJdGVyYXRvcjo6TGVhZkJveEl0ZXJhdG9yIHJ1bikK
K3N0YXRpYyBJbmxpbmVJdGVyYXRvcjo6TGVhZkJveEl0ZXJhdG9yIHByZXZpb3VzVGV4dE9yTGlu
ZUJyZWFrUnVuKElubGluZUl0ZXJhdG9yOjpMZWFmQm94SXRlcmF0b3IgcnVuLCBJbmxpbmVJdGVy
YXRvcjo6TGluZUxvZ2ljYWxPcmRlckNhY2hlJiBvcmRlckNhY2hlKQogewogICAgIHdoaWxlIChy
dW4pIHsKLSAgICAgICAgcnVuLnRyYXZlcnNlUHJldmlvdXNPbkxpbmVJbkxvZ2ljYWxPcmRlcigp
OworICAgICAgICBydW4gPSBJbmxpbmVJdGVyYXRvcjo6cHJldmlvdXNMZWFmT25MaW5lSW5Mb2dp
Y2FsT3JkZXIocnVuLCBvcmRlckNhY2hlKTsKICAgICAgICAgaWYgKGlzVGV4dE9yTGluZUJyZWFr
UnVuKHJ1bikpCiAgICAgICAgICAgICByZXR1cm4gcnVuOwogICAgIH0KICAgICByZXR1cm4geyB9
OwogfQogCi1zdGF0aWMgSW5saW5lSXRlcmF0b3I6OkxlYWZCb3hJdGVyYXRvciBuZXh0VGV4dE9y
TGluZUJyZWFrUnVuKElubGluZUl0ZXJhdG9yOjpMZWFmQm94SXRlcmF0b3IgcnVuKQorc3RhdGlj
IElubGluZUl0ZXJhdG9yOjpMZWFmQm94SXRlcmF0b3IgbmV4dFRleHRPckxpbmVCcmVha1J1bihJ
bmxpbmVJdGVyYXRvcjo6TGVhZkJveEl0ZXJhdG9yIHJ1biwgSW5saW5lSXRlcmF0b3I6OkxpbmVM
b2dpY2FsT3JkZXJDYWNoZSYgb3JkZXJDYWNoZSkKIHsKICAgICB3aGlsZSAocnVuKSB7Ci0gICAg
ICAgIHJ1bi50cmF2ZXJzZU5leHRPbkxpbmVJbkxvZ2ljYWxPcmRlcigpOworICAgICAgICBydW4g
PSBJbmxpbmVJdGVyYXRvcjo6bmV4dExlYWZPbkxpbmVJbkxvZ2ljYWxPcmRlcihydW4sIG9yZGVy
Q2FjaGUpOwogICAgICAgICBpZiAoaXNUZXh0T3JMaW5lQnJlYWtSdW4ocnVuKSkKICAgICAgICAg
ICAgIHJldHVybiBydW47CiAgICAgfQogICAgIHJldHVybiB7IH07CiB9CiAKLXN0YXRpYyBJbmxp
bmVJdGVyYXRvcjo6TGVhZkJveEl0ZXJhdG9yIHN0YXJ0VGV4dE9yTGluZUJyZWFrUnVuKElubGlu
ZUl0ZXJhdG9yOjpMaW5lSXRlcmF0b3IgbGluZSkKK3N0YXRpYyBJbmxpbmVJdGVyYXRvcjo6TGVh
ZkJveEl0ZXJhdG9yIHN0YXJ0VGV4dE9yTGluZUJyZWFrUnVuKElubGluZUl0ZXJhdG9yOjpMaW5l
SXRlcmF0b3IgbGluZSwgSW5saW5lSXRlcmF0b3I6OkxpbmVMb2dpY2FsT3JkZXJDYWNoZSYgb3Jk
ZXJDYWNoZSkKIHsKLSAgICBhdXRvIHJ1biA9IGxpbmUtPmxvZ2ljYWxTdGFydFJ1bigpOworICAg
IGF1dG8gcnVuID0gSW5saW5lSXRlcmF0b3I6OmZpcnN0TGVhZk9uTGluZUluTG9naWNhbE9yZGVy
KGxpbmUsIG9yZGVyQ2FjaGUpOwogICAgIGlmIChpc1RleHRPckxpbmVCcmVha1J1bihydW4pKQog
ICAgICAgICByZXR1cm4gcnVuOwotICAgIHJldHVybiBuZXh0VGV4dE9yTGluZUJyZWFrUnVuKHJ1
bik7CisgICAgcmV0dXJuIG5leHRUZXh0T3JMaW5lQnJlYWtSdW4ocnVuLCBvcmRlckNhY2hlKTsK
IH0KIAotc3RhdGljIElubGluZUl0ZXJhdG9yOjpMZWFmQm94SXRlcmF0b3IgZW5kVGV4dE9yTGlu
ZUJyZWFrUnVuKElubGluZUl0ZXJhdG9yOjpMaW5lSXRlcmF0b3IgbGluZSkKK3N0YXRpYyBJbmxp
bmVJdGVyYXRvcjo6TGVhZkJveEl0ZXJhdG9yIGVuZFRleHRPckxpbmVCcmVha1J1bihJbmxpbmVJ
dGVyYXRvcjo6TGluZUl0ZXJhdG9yIGxpbmUsIElubGluZUl0ZXJhdG9yOjpMaW5lTG9naWNhbE9y
ZGVyQ2FjaGUmIG9yZGVyQ2FjaGUpCiB7Ci0gICAgYXV0byBydW4gPSBsaW5lLT5sb2dpY2FsRW5k
UnVuKCk7CisgICAgYXV0byBydW4gPSBJbmxpbmVJdGVyYXRvcjo6bGFzdExlYWZPbkxpbmVJbkxv
Z2ljYWxPcmRlcihsaW5lLCBvcmRlckNhY2hlKTsKICAgICBpZiAoaXNUZXh0T3JMaW5lQnJlYWtS
dW4ocnVuKSkKICAgICAgICAgcmV0dXJuIHJ1bjsKLSAgICByZXR1cm4gcHJldmlvdXNUZXh0T3JM
aW5lQnJlYWtSdW4ocnVuKTsKKyAgICByZXR1cm4gcHJldmlvdXNUZXh0T3JMaW5lQnJlYWtSdW4o
cnVuLCBvcmRlckNhY2hlKTsKIH0KIAotc3RhdGljIGNvbnN0IElubGluZUl0ZXJhdG9yOjpMZWFm
Qm94SXRlcmF0b3IgbG9naWNhbGx5UHJldmlvdXNSdW4oY29uc3QgVmlzaWJsZVBvc2l0aW9uJiB2
aXNpYmxlUG9zaXRpb24sIElubGluZUl0ZXJhdG9yOjpMZWFmQm94SXRlcmF0b3Igc3RhcnRSdW4s
IGJvb2wmIHByZXZpb3VzQm94SW5EaWZmZXJlbnRMaW5lKQorc3RhdGljIGNvbnN0IElubGluZUl0
ZXJhdG9yOjpMZWFmQm94SXRlcmF0b3IgbG9naWNhbGx5UHJldmlvdXNSdW4oY29uc3QgVmlzaWJs
ZVBvc2l0aW9uJiB2aXNpYmxlUG9zaXRpb24sIElubGluZUl0ZXJhdG9yOjpMZWFmQm94SXRlcmF0
b3Igc3RhcnRSdW4sIElubGluZUl0ZXJhdG9yOjpMaW5lTG9naWNhbE9yZGVyQ2FjaGUmIG9yZGVy
Q2FjaGUsIGJvb2wmIHByZXZpb3VzQm94SW5EaWZmZXJlbnRMaW5lKQogewotICAgIGlmIChhdXRv
IHByZXZpb3VzUnVuID0gcHJldmlvdXNUZXh0T3JMaW5lQnJlYWtSdW4oc3RhcnRSdW4pKQorICAg
IGlmIChhdXRvIHByZXZpb3VzUnVuID0gcHJldmlvdXNUZXh0T3JMaW5lQnJlYWtSdW4oc3RhcnRS
dW4sIG9yZGVyQ2FjaGUpKQogICAgICAgICByZXR1cm4gcHJldmlvdXNSdW47CiAKICAgICBpZiAo
YXV0byBwcmV2aW91c0xpbmUgPSBzdGFydFJ1bi0+bGluZSgpLT5wcmV2aW91cygpKSB7CiAgICAg
ICAgIC8vIEZJWE1FOiBXaHkgaXNuJ3QgcHJldmlvdXNCb3hJbkRpZmZlcmVudExpbmUgc2V0IGhl
cmU/Ci0gICAgICAgIGlmIChhdXRvIHByZXZpb3VzUnVuID0gZW5kVGV4dE9yTGluZUJyZWFrUnVu
KHByZXZpb3VzTGluZSkpCisgICAgICAgIGlmIChhdXRvIHByZXZpb3VzUnVuID0gZW5kVGV4dE9y
TGluZUJyZWFrUnVuKHByZXZpb3VzTGluZSwgb3JkZXJDYWNoZSkpCiAgICAgICAgICAgICByZXR1
cm4gcHJldmlvdXNSdW47CiAgICAgfQogCkBAIC0xOTEsMjYgKzE5MiwyNiBAQCBzdGF0aWMgY29u
c3QgSW5saW5lSXRlcmF0b3I6OkxlYWZCb3hJdGVyYXRvciBsb2dpY2FsbHlQcmV2aW91c1J1bihj
b25zdCBWaXNpYmxlUAogICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgaWYgKHByZXZpb3Vz
TGluZSAhPSBzdGFydFJ1bi0+bGluZSgpKSB7Ci0gICAgICAgICAgICBpZiAoYXV0byBwcmV2aW91
c1J1biA9IGVuZFRleHRPckxpbmVCcmVha1J1bihwcmV2aW91c0xpbmUpKSB7CisgICAgICAgICAg
ICBpZiAoYXV0byBwcmV2aW91c1J1biA9IGVuZFRleHRPckxpbmVCcmVha1J1bihwcmV2aW91c0xp
bmUsIG9yZGVyQ2FjaGUpKSB7CiAgICAgICAgICAgICAgICAgcHJldmlvdXNCb3hJbkRpZmZlcmVu
dExpbmUgPSB0cnVlOwogICAgICAgICAgICAgICAgIHJldHVybiBwcmV2aW91c1J1bjsKICAgICAg
ICAgICAgIH0KICAgICAgICAgfQogCi0gICAgICAgIHN0YXJ0UnVuID0gcHJldmlvdXNMaW5lLT5s
b2dpY2FsU3RhcnRSdW4oKTsKKyAgICAgICAgc3RhcnRSdW4gPSBJbmxpbmVJdGVyYXRvcjo6Zmly
c3RMZWFmT25MaW5lSW5Mb2dpY2FsT3JkZXIocHJldmlvdXNMaW5lLCBvcmRlckNhY2hlKTsKICAg
ICB9CiAgICAgcmV0dXJuIHsgfTsKIH0KIAogCi1zdGF0aWMgY29uc3QgSW5saW5lSXRlcmF0b3I6
OkxlYWZCb3hJdGVyYXRvciBsb2dpY2FsbHlOZXh0UnVuKGNvbnN0IFZpc2libGVQb3NpdGlvbiYg
dmlzaWJsZVBvc2l0aW9uLCBJbmxpbmVJdGVyYXRvcjo6TGVhZkJveEl0ZXJhdG9yIHN0YXJ0UnVu
LCBib29sJiBuZXh0Qm94SW5EaWZmZXJlbnRMaW5lKQorc3RhdGljIGNvbnN0IElubGluZUl0ZXJh
dG9yOjpMZWFmQm94SXRlcmF0b3IgbG9naWNhbGx5TmV4dFJ1bihjb25zdCBWaXNpYmxlUG9zaXRp
b24mIHZpc2libGVQb3NpdGlvbiwgSW5saW5lSXRlcmF0b3I6OkxlYWZCb3hJdGVyYXRvciBzdGFy
dFJ1biwgSW5saW5lSXRlcmF0b3I6OkxpbmVMb2dpY2FsT3JkZXJDYWNoZSYgb3JkZXJDYWNoZSwg
Ym9vbCYgbmV4dEJveEluRGlmZmVyZW50TGluZSkKIHsKLSAgICBpZiAoYXV0byBuZXh0UnVuID0g
bmV4dFRleHRPckxpbmVCcmVha1J1bihzdGFydFJ1bikpCisgICAgaWYgKGF1dG8gbmV4dFJ1biA9
IG5leHRUZXh0T3JMaW5lQnJlYWtSdW4oc3RhcnRSdW4sIG9yZGVyQ2FjaGUpKQogICAgICAgICBy
ZXR1cm4gbmV4dFJ1bjsKIAogICAgIGlmIChhdXRvIG5leHRMaW5lID0gc3RhcnRSdW4tPmxpbmUo
KS0+bmV4dCgpKSB7CiAgICAgICAgIC8vIEZJWE1FOiBXaHkgaXNuJ3QgcHJldmlvdXNCb3hJbkRp
ZmZlcmVudExpbmUgc2V0IGhlcmU/Ci0gICAgICAgIGlmIChhdXRvIG5leHRSdW4gPSBzdGFydFRl
eHRPckxpbmVCcmVha1J1bihuZXh0TGluZSkpCisgICAgICAgIGlmIChhdXRvIG5leHRSdW4gPSBz
dGFydFRleHRPckxpbmVCcmVha1J1bihuZXh0TGluZSwgb3JkZXJDYWNoZSkpCiAgICAgICAgICAg
ICByZXR1cm4gbmV4dFJ1bjsKICAgICB9CiAKQEAgLTIyOSwxMyArMjMwLDEzIEBAIHN0YXRpYyBj
b25zdCBJbmxpbmVJdGVyYXRvcjo6TGVhZkJveEl0ZXJhdG9yIGxvZ2ljYWxseU5leHRSdW4oY29u
c3QgVmlzaWJsZVBvc2l0CiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBpZiAobmV4dExp
bmUgIT0gc3RhcnRSdW4tPmxpbmUoKSkgewotICAgICAgICAgICAgaWYgKGF1dG8gbmV4dFJ1biA9
IHN0YXJ0VGV4dE9yTGluZUJyZWFrUnVuKG5leHRMaW5lKSkgeworICAgICAgICAgICAgaWYgKGF1
dG8gbmV4dFJ1biA9IHN0YXJ0VGV4dE9yTGluZUJyZWFrUnVuKG5leHRMaW5lLCBvcmRlckNhY2hl
KSkgewogICAgICAgICAgICAgICAgIG5leHRCb3hJbkRpZmZlcmVudExpbmUgPSB0cnVlOwogICAg
ICAgICAgICAgICAgIHJldHVybiBuZXh0UnVuOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAK
LSAgICAgICAgc3RhcnRSdW4gPSBuZXh0TGluZS0+bG9naWNhbEVuZFJ1bigpOworICAgICAgICBz
dGFydFJ1biA9IElubGluZUl0ZXJhdG9yOjpsYXN0TGVhZk9uTGluZUluTG9naWNhbE9yZGVyV2l0
aE5vZGUobmV4dExpbmUsIG9yZGVyQ2FjaGUpOwogICAgIH0KICAgICByZXR1cm4geyB9OwogfQpA
QCAtMjQ1LDExICsyNDYsMTIgQEAgc3RhdGljIFVCcmVha0l0ZXJhdG9yKiB3b3JkQnJlYWtJdGVy
YXRvckZvck1pbk9mZnNldEJvdW5kYXJ5KGNvbnN0IFZpc2libGVQb3NpdGkKIHsKICAgICBwcmV2
aW91c1J1bkluRGlmZmVyZW50TGluZSA9IGZhbHNlOwogCi0gICAgYXV0byBwcmV2aW91c1J1biA9
IGxvZ2ljYWxseVByZXZpb3VzUnVuKHZpc2libGVQb3NpdGlvbiwgdGV4dFJ1biwgcHJldmlvdXNS
dW5JbkRpZmZlcmVudExpbmUpOworICAgIElubGluZUl0ZXJhdG9yOjpMaW5lTG9naWNhbE9yZGVy
Q2FjaGUgb3JkZXJDYWNoZTsKKyAgICBhdXRvIHByZXZpb3VzUnVuID0gbG9naWNhbGx5UHJldmlv
dXNSdW4odmlzaWJsZVBvc2l0aW9uLCB0ZXh0UnVuLCBvcmRlckNhY2hlLCBwcmV2aW91c1J1bklu
RGlmZmVyZW50TGluZSk7CiAgICAgd2hpbGUgKHByZXZpb3VzUnVuICYmICFwcmV2aW91c1J1bi0+
aXNUZXh0KCkpIHsKICAgICAgICAgQVNTRVJUKHByZXZpb3VzUnVuLT5yZW5kZXJlcigpLmlzQlIo
KSk7CiAgICAgICAgIHByZXZpb3VzUnVuSW5EaWZmZXJlbnRMaW5lID0gdHJ1ZTsKLSAgICAgICAg
cHJldmlvdXNSdW4gPSBsb2dpY2FsbHlQcmV2aW91c1J1bih2aXNpYmxlUG9zaXRpb24sIHByZXZp
b3VzUnVuLCBwcmV2aW91c1J1bkluRGlmZmVyZW50TGluZSk7CisgICAgICAgIHByZXZpb3VzUnVu
ID0gbG9naWNhbGx5UHJldmlvdXNSdW4odmlzaWJsZVBvc2l0aW9uLCBwcmV2aW91c1J1biwgb3Jk
ZXJDYWNoZSwgcHJldmlvdXNSdW5JbkRpZmZlcmVudExpbmUpOwogICAgIH0KIAogICAgIHN0cmlu
Zy5jbGVhcigpOwpAQCAtMjY5LDExICsyNzEsMTIgQEAgc3RhdGljIFVCcmVha0l0ZXJhdG9yKiB3
b3JkQnJlYWtJdGVyYXRvckZvck1heE9mZnNldEJvdW5kYXJ5KGNvbnN0IFZpc2libGVQb3NpdGkK
IHsKICAgICBuZXh0UnVuSW5EaWZmZXJlbnRMaW5lID0gZmFsc2U7CiAKLSAgICBhdXRvIG5leHRS
dW4gPSBsb2dpY2FsbHlOZXh0UnVuKHZpc2libGVQb3NpdGlvbiwgdGV4dFJ1biwgbmV4dFJ1bklu
RGlmZmVyZW50TGluZSk7CisgICAgSW5saW5lSXRlcmF0b3I6OkxpbmVMb2dpY2FsT3JkZXJDYWNo
ZSBvcmRlckNhY2hlOworICAgIGF1dG8gbmV4dFJ1biA9IGxvZ2ljYWxseU5leHRSdW4odmlzaWJs
ZVBvc2l0aW9uLCB0ZXh0UnVuLCBvcmRlckNhY2hlLCBuZXh0UnVuSW5EaWZmZXJlbnRMaW5lKTsK
ICAgICB3aGlsZSAobmV4dFJ1biAmJiAhbmV4dFJ1bi0+aXNUZXh0KCkpIHsKICAgICAgICAgQVNT
RVJUKG5leHRSdW4tPnJlbmRlcmVyKCkuaXNCUigpKTsKICAgICAgICAgbmV4dFJ1bkluRGlmZmVy
ZW50TGluZSA9IHRydWU7Ci0gICAgICAgIG5leHRSdW4gPSBsb2dpY2FsbHlOZXh0UnVuKHZpc2li
bGVQb3NpdGlvbiwgbmV4dFJ1biwgbmV4dFJ1bkluRGlmZmVyZW50TGluZSk7CisgICAgICAgIG5l
eHRSdW4gPSBsb2dpY2FsbHlOZXh0UnVuKHZpc2libGVQb3NpdGlvbiwgbmV4dFJ1biwgb3JkZXJD
YWNoZSwgbmV4dFJ1bkluRGlmZmVyZW50TGluZSk7CiAgICAgfQogCiAgICAgc3RyaW5nLmNsZWFy
KCk7CkBAIC03NDYsOCArNzQ5LDEwIEBAIHN0YXRpYyBWaXNpYmxlUG9zaXRpb24gc3RhcnRQb3Np
dGlvbkZvckxpbmUoY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBjLCBMaW5lRW5kcG9pCiAgICAgICAg
IHJldHVybiBWaXNpYmxlUG9zaXRpb24oKTsKICAgICB9CiAKKyAgICBJbmxpbmVJdGVyYXRvcjo6
TGluZUxvZ2ljYWxPcmRlckNhY2hlIG9yZGVyQ2FjaGU7CisKICAgICBOb2RlKiBzdGFydE5vZGUg
PSBudWxscHRyOwotICAgIGF1dG8gc3RhcnRSdW4gPSBtb2RlID09IFVzZUxvZ2ljYWxPcmRlcmlu
ZyA/IGxpbmUtPmxvZ2ljYWxTdGFydFJ1bldpdGhOb2RlKCkgOiBsaW5lLT5maXJzdFJ1bigpOwor
ICAgIGF1dG8gc3RhcnRSdW4gPSBtb2RlID09IFVzZUxvZ2ljYWxPcmRlcmluZyA/IElubGluZUl0
ZXJhdG9yOjpmaXJzdExlYWZPbkxpbmVJbkxvZ2ljYWxPcmRlcldpdGhOb2RlKGxpbmUsIG9yZGVy
Q2FjaGUpIDogbGluZS0+Zmlyc3RSdW4oKTsKICAgICAvLyBHZW5lcmF0ZWQgY29udGVudCAoZS5n
LiBsaXN0IG1hcmtlcnMgYW5kIENTUyA6YmVmb3JlIGFuZCA6YWZ0ZXIgcHNldWRvZWxlbWVudHMp
IGhhdmUgbm8gY29ycmVzcG9uZGluZyBET00gZWxlbWVudCwKICAgICAvLyBhbmQgc28gY2Fubm90
IGJlIHJlcHJlc2VudGVkIGJ5IGEgVmlzaWJsZVBvc2l0aW9uLiBVc2Ugd2hhdGV2ZXIgZm9sbG93
cyBpbnN0ZWFkLgogICAgIHdoaWxlICh0cnVlKSB7CkBAIC03NTksNyArNzY0LDcgQEAgc3RhdGlj
IFZpc2libGVQb3NpdGlvbiBzdGFydFBvc2l0aW9uRm9yTGluZShjb25zdCBWaXNpYmxlUG9zaXRp
b24mIGMsIExpbmVFbmRwb2kKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGlmIChtb2Rl
ID09IFVzZUxvZ2ljYWxPcmRlcmluZykKLSAgICAgICAgICAgIHN0YXJ0UnVuLnRyYXZlcnNlTmV4
dE9uTGluZUluTG9naWNhbE9yZGVyKCk7CisgICAgICAgICAgICBzdGFydFJ1biA9IElubGluZUl0
ZXJhdG9yOjpuZXh0TGVhZk9uTGluZUluTG9naWNhbE9yZGVyKHN0YXJ0UnVuLCBvcmRlckNhY2hl
KTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgc3RhcnRSdW4udHJhdmVyc2VOZXh0T25MaW5l
KCk7CiAgICAgfQpAQCAtODE2LDggKzgyMSwxMCBAQCBzdGF0aWMgVmlzaWJsZVBvc2l0aW9uIGVu
ZFBvc2l0aW9uRm9yTGluZShjb25zdCBWaXNpYmxlUG9zaXRpb24mIGMsIExpbmVFbmRwb2ludAog
ICAgICAgICByZXR1cm4gVmlzaWJsZVBvc2l0aW9uKCk7CiAgICAgfQogCisgICAgSW5saW5lSXRl
cmF0b3I6OkxpbmVMb2dpY2FsT3JkZXJDYWNoZSBvcmRlckNhY2hlOworCiAgICAgTm9kZSogZW5k
Tm9kZSA9IG51bGxwdHI7Ci0gICAgYXV0byBlbmRSdW4gPSBtb2RlID09IFVzZUxvZ2ljYWxPcmRl
cmluZyA/IGxpbmUtPmxvZ2ljYWxFbmRSdW5XaXRoTm9kZSgpIDogbGluZS0+bGFzdFJ1bigpOwor
ICAgIGF1dG8gZW5kUnVuID0gbW9kZSA9PSBVc2VMb2dpY2FsT3JkZXJpbmcgPyBJbmxpbmVJdGVy
YXRvcjo6bGFzdExlYWZPbkxpbmVJbkxvZ2ljYWxPcmRlcihsaW5lLCBvcmRlckNhY2hlKSA6IGxp
bmUtPmxhc3RSdW4oKTsKICAgICAvLyBHZW5lcmF0ZWQgY29udGVudCAoZS5nLiBsaXN0IG1hcmtl
cnMgYW5kIENTUyA6YmVmb3JlIGFuZCA6YWZ0ZXIgcHNldWRvZWxlbWVudHMpIGhhdmUgbm8gY29y
cmVzcG9uZGluZyBET00gZWxlbWVudCwKICAgICAvLyBhbmQgc28gY2Fubm90IGJlIHJlcHJlc2Vu
dGVkIGJ5IGEgVmlzaWJsZVBvc2l0aW9uLiBVc2Ugd2hhdGV2ZXIgcHJlY2VkZXMgaW5zdGVhZC4K
ICAgICB3aGlsZSAodHJ1ZSkgewpAQCAtODI5LDcgKzgzNiw3IEBAIHN0YXRpYyBWaXNpYmxlUG9z
aXRpb24gZW5kUG9zaXRpb25Gb3JMaW5lKGNvbnN0IFZpc2libGVQb3NpdGlvbiYgYywgTGluZUVu
ZHBvaW50CiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBpZiAobW9kZSA9PSBVc2VMb2dp
Y2FsT3JkZXJpbmcpCi0gICAgICAgICAgICBlbmRSdW4udHJhdmVyc2VQcmV2aW91c09uTGluZUlu
TG9naWNhbE9yZGVyKCk7CisgICAgICAgICAgICBlbmRSdW4gPSBJbmxpbmVJdGVyYXRvcjo6cHJl
dmlvdXNMZWFmT25MaW5lSW5Mb2dpY2FsT3JkZXIoZW5kUnVuLCBvcmRlckNhY2hlKTsKICAgICAg
ICAgZWxzZQogICAgICAgICAgICAgZW5kUnVuLnRyYXZlcnNlUHJldmlvdXNPbkxpbmUoKTsKICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vSW5saW5l
SXRlcmF0b3JCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0lubGlu
ZUl0ZXJhdG9yQm94LmNwcAppbmRleCA5MTYxMjIxZGQ5NTA1ZjAwMjYxYjhiODcxMGY4ZjA1MDU5
NDYyNmUwLi40YTBhNzVkZDYwNzk0MjdhODMzYWI3ZmU1NTc3YTE4YTk0ZmI5MjFhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vSW5saW5lSXRlcmF0b3JCb3gu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9JbmxpbmVJdGVyYXRv
ckJveC5jcHAKQEAgLTE0OCwyMiArMTQ4LDYgQEAgTGVhZkJveEl0ZXJhdG9yJiBMZWFmQm94SXRl
cmF0b3I6OnRyYXZlcnNlUHJldmlvdXNPbkxpbmVJZ25vcmluZ0xpbmVCcmVhaygpCiAgICAgcmV0
dXJuICp0aGlzOwogfQogCi1MZWFmQm94SXRlcmF0b3ImIExlYWZCb3hJdGVyYXRvcjo6dHJhdmVy
c2VOZXh0T25MaW5lSW5Mb2dpY2FsT3JkZXIoKQotewotICAgIFdURjo6c3dpdGNoT24obV9ib3gu
bV9wYXRoVmFyaWFudCwgW10oYXV0byYgcGF0aCkgewotICAgICAgICBwYXRoLnRyYXZlcnNlTmV4
dE9uTGluZUluTG9naWNhbE9yZGVyKCk7Ci0gICAgfSk7Ci0gICAgcmV0dXJuICp0aGlzOwotfQot
Ci1MZWFmQm94SXRlcmF0b3ImIExlYWZCb3hJdGVyYXRvcjo6dHJhdmVyc2VQcmV2aW91c09uTGlu
ZUluTG9naWNhbE9yZGVyKCkKLXsKLSAgICBXVEY6OnN3aXRjaE9uKG1fYm94Lm1fcGF0aFZhcmlh
bnQsIFtdKGF1dG8mIHBhdGgpIHsKLSAgICAgICAgcGF0aC50cmF2ZXJzZVByZXZpb3VzT25MaW5l
SW5Mb2dpY2FsT3JkZXIoKTsKLSAgICB9KTsKLSAgICByZXR1cm4gKnRoaXM7Ci19Ci0KIExlYWZC
b3hJdGVyYXRvciBib3hGb3IoY29uc3QgUmVuZGVyTGluZUJyZWFrJiByZW5kZXJlcikKIHsKICNp
ZiBFTkFCTEUoTEFZT1VUX0ZPUk1BVFRJTkdfQ09OVEVYVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9JbmxpbmVJdGVyYXRvckJveC5oIGIvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0lubGluZUl0ZXJhdG9yQm94LmgKaW5kZXggYjQ1YThl
ZTQyMTdjMGZiYzczZDJjMmZjMjNjNDU4MWJjNWJkYjA1MC4uNDgwYWZiODk5M2JkMjcxMmRiNmVh
ZGM5ZjU1MDlhZTI1MTk2NDYxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lu
dGVncmF0aW9uL0lubGluZUl0ZXJhdG9yQm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2ludGVncmF0aW9uL0lubGluZUl0ZXJhdG9yQm94LmgKQEAgLTEzMSw3ICsxMzEsNyBAQCBwdWJs
aWM6CiAgICAgYm9vbCBhdEVuZCgpIGNvbnN0OwogCiBwcm90ZWN0ZWQ6Ci0gICAgQm94SXRlcmF0
b3IoKSA6IG1fYm94KEJveExlZ2FjeVBhdGggeyBudWxscHRyLCB7IH0gfSkgeyB9OworICAgIEJv
eEl0ZXJhdG9yKCkgOiBtX2JveChCb3hMZWdhY3lQYXRoIHsgbnVsbHB0ciB9KSB7IH07CiAgICAg
Qm94SXRlcmF0b3IoQm94OjpQYXRoVmFyaWFudCYmKTsKICAgICBCb3hJdGVyYXRvcihjb25zdCBC
b3gmKTsKIApAQCAtMTQ4LDggKzE0OCw2IEBAIHB1YmxpYzoKICAgICBMZWFmQm94SXRlcmF0b3Im
IHRyYXZlcnNlUHJldmlvdXNPbkxpbmUoKTsKICAgICBMZWFmQm94SXRlcmF0b3ImIHRyYXZlcnNl
TmV4dE9uTGluZUlnbm9yaW5nTGluZUJyZWFrKCk7CiAgICAgTGVhZkJveEl0ZXJhdG9yJiB0cmF2
ZXJzZVByZXZpb3VzT25MaW5lSWdub3JpbmdMaW5lQnJlYWsoKTsKLSAgICBMZWFmQm94SXRlcmF0
b3ImIHRyYXZlcnNlTmV4dE9uTGluZUluTG9naWNhbE9yZGVyKCk7Ci0gICAgTGVhZkJveEl0ZXJh
dG9yJiB0cmF2ZXJzZVByZXZpb3VzT25MaW5lSW5Mb2dpY2FsT3JkZXIoKTsKIH07CiAKIExlYWZC
b3hJdGVyYXRvciBib3hGb3IoY29uc3QgUmVuZGVyTGluZUJyZWFrJik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vSW5saW5lSXRlcmF0b3JCb3hMZWdhY3lQ
YXRoLmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vSW5saW5lSXRlcmF0b3JC
b3hMZWdhY3lQYXRoLmgKaW5kZXggM2JlNGQzZGNhYzNiOTM5YWVkNjY4YTMzNTMxZmI2N2RmMjM5
OTNmYi4uMTUxYThkYTk0OGYwNDg1N2Q2ODQ2NWYyYWJkMDUyMzQ2ZTg2NTBmOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0lubGluZUl0ZXJhdG9yQm94TGVn
YWN5UGF0aC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9JbmxpbmVJ
dGVyYXRvckJveExlZ2FjeVBhdGguaApAQCAtMzcsMjIgKzM3LDEwIEBAIG5hbWVzcGFjZSBJbmxp
bmVJdGVyYXRvciB7CiAKIGNsYXNzIEJveExlZ2FjeVBhdGggewogcHVibGljOgotICAgIEJveExl
Z2FjeVBhdGgoY29uc3QgTGVnYWN5SW5saW5lQm94KiBpbmxpbmVCb3gsIFZlY3Rvcjxjb25zdCBM
ZWdhY3lJbmxpbmVCb3gqPiYmIHNvcnRlZElubGluZUJveGVzID0geyB9LCBzaXplX3Qgc29ydGVk
SW5saW5lQm94SW5kZXggPSAwKQorICAgIEJveExlZ2FjeVBhdGgoY29uc3QgTGVnYWN5SW5saW5l
Qm94KiBpbmxpbmVCb3gpCiAgICAgICAgIDogbV9pbmxpbmVCb3goaW5saW5lQm94KQotICAgICAg
ICAsIG1fbG9naWNhbE9yZGVyQ2FjaGUoV1RGTW92ZShzb3J0ZWRJbmxpbmVCb3hlcykpCi0gICAg
ICAgICwgbV9sb2dpY2FsT3JkZXJDYWNoZUluZGV4KHNvcnRlZElubGluZUJveEluZGV4KQogICAg
IHsgfQogCi0gICAgZW51bSBjbGFzcyBMb2dpY2FsT3JkZXIgeyBTdGFydCwgRW5kIH07Ci0gICAg
Qm94TGVnYWN5UGF0aChjb25zdCBMZWdhY3lSb290SW5saW5lQm94JiByb290LCBMb2dpY2FsT3Jk
ZXIgb3JkZXIpCi0gICAgICAgIDogbV9sb2dpY2FsT3JkZXJDYWNoZShpbmxpbmVCb3hlc0luTG9n
aWNhbE9yZGVyKHJvb3QpKQotICAgIHsKLSAgICAgICAgaWYgKCFtX2xvZ2ljYWxPcmRlckNhY2hl
LmlzRW1wdHkoKSkgewotICAgICAgICAgICAgbV9sb2dpY2FsT3JkZXJDYWNoZUluZGV4ID0gb3Jk
ZXIgPT0gTG9naWNhbE9yZGVyOjpTdGFydCA/IDAgOiBtX2xvZ2ljYWxPcmRlckNhY2hlLnNpemUo
KSAtIDE7Ci0gICAgICAgICAgICBtX2lubGluZUJveCA9IG1fbG9naWNhbE9yZGVyQ2FjaGVbbV9s
b2dpY2FsT3JkZXJDYWNoZUluZGV4XTsKLSAgICAgICAgfQotICAgIH0KLQogICAgIGJvb2wgaXNU
ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9pbmxpbmVCb3gtPmlzSW5saW5lVGV4dEJveCgpOyB9CiAg
ICAgYm9vbCBpc0lubGluZUJveCgpIGNvbnN0IHsgcmV0dXJuIG1faW5saW5lQm94LT5pc0lubGlu
ZUZsb3dCb3goKTsgfQogICAgIGJvb2wgaXNSb290SW5saW5lQm94KCkgY29uc3QgeyByZXR1cm4g
bV9pbmxpbmVCb3gtPmlzUm9vdElubGluZUJveCgpOyB9CkBAIC05OCwxOCArODYsNiBAQCBwdWJs
aWM6CiAgICAgICAgIG1faW5saW5lQm94ID0gbV9pbmxpbmVCb3gtPnByZXZpb3VzTGVhZk9uTGlu
ZSgpOwogICAgIH0KIAotICAgIHZvaWQgdHJhdmVyc2VOZXh0T25MaW5lSW5Mb2dpY2FsT3JkZXIo
KQotICAgIHsKLSAgICAgICAgaW5pdGlhbGl6ZUxvZ2ljYWxPcmRlckNhY2hlRm9yTGluZSgpOwot
ICAgICAgICB0cmF2ZXJzZU5leHRJbmxpbmVCb3hJbkNhY2hlT3JkZXIoKTsKLSAgICB9Ci0KLSAg
ICB2b2lkIHRyYXZlcnNlUHJldmlvdXNPbkxpbmVJbkxvZ2ljYWxPcmRlcigpCi0gICAgewotICAg
ICAgICBpbml0aWFsaXplTG9naWNhbE9yZGVyQ2FjaGVGb3JMaW5lKCk7Ci0gICAgICAgIHRyYXZl
cnNlUHJldmlvdXNJbmxpbmVCb3hJbkNhY2hlT3JkZXIoKTsKLSAgICB9Ci0KICAgICB2b2lkIHRy
YXZlcnNlTmV4dElubGluZUJveCgpCiAgICAgewogICAgICAgICBtX2lubGluZUJveCA9IGlubGlu
ZUZsb3dCb3goKS0+bmV4dExpbmVCb3goKTsKQEAgLTEzMSw0OSArMTA3LDggQEAgcHJpdmF0ZToK
ICAgICBjb25zdCBMZWdhY3lJbmxpbmVUZXh0Qm94KiBpbmxpbmVUZXh0Qm94KCkgY29uc3QgeyBy
ZXR1cm4gZG93bmNhc3Q8TGVnYWN5SW5saW5lVGV4dEJveD4obV9pbmxpbmVCb3gpOyB9CiAgICAg
Y29uc3QgTGVnYWN5SW5saW5lRmxvd0JveCogaW5saW5lRmxvd0JveCgpIGNvbnN0IHsgcmV0dXJu
IGRvd25jYXN0PExlZ2FjeUlubGluZUZsb3dCb3g+KG1faW5saW5lQm94KTsgfQogCi0gICAgc3Rh
dGljIFZlY3Rvcjxjb25zdCBMZWdhY3lJbmxpbmVCb3gqPiBpbmxpbmVCb3hlc0luTG9naWNhbE9y
ZGVyKGNvbnN0IExlZ2FjeVJvb3RJbmxpbmVCb3gmIHJvb3QpCi0gICAgewotICAgICAgICBWZWN0
b3I8TGVnYWN5SW5saW5lQm94Kj4gaW5saW5lQm94ZXM7Ci0gICAgICAgIHJvb3QuY29sbGVjdExl
YWZCb3hlc0luTG9naWNhbE9yZGVyKGlubGluZUJveGVzKTsKLSAgICAgICAgcmV0dXJuIHJlaW50
ZXJwcmV0X2Nhc3Q8VmVjdG9yPGNvbnN0IExlZ2FjeUlubGluZUJveCo+Jj4oaW5saW5lQm94ZXMp
OwotICAgIH0KLSAgICB2b2lkIGluaXRpYWxpemVMb2dpY2FsT3JkZXJDYWNoZUZvckxpbmUoKQot
ICAgIHsKLSAgICAgICAgaWYgKCFtX2lubGluZUJveCB8fCAhbV9sb2dpY2FsT3JkZXJDYWNoZS5p
c0VtcHR5KCkpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIG1fbG9naWNhbE9yZGVyQ2Fj
aGUgPSBpbmxpbmVCb3hlc0luTG9naWNhbE9yZGVyKG1faW5saW5lQm94LT5yb290KCkpOwotICAg
ICAgICBmb3IgKG1fbG9naWNhbE9yZGVyQ2FjaGVJbmRleCA9IDA7IG1fbG9naWNhbE9yZGVyQ2Fj
aGVJbmRleCA8IG1fbG9naWNhbE9yZGVyQ2FjaGUuc2l6ZSgpOyArK21fbG9naWNhbE9yZGVyQ2Fj
aGVJbmRleCkgewotICAgICAgICAgICAgaWYgKG1fbG9naWNhbE9yZGVyQ2FjaGVbbV9sb2dpY2Fs
T3JkZXJDYWNoZUluZGV4XSA9PSBtX2lubGluZUJveCkKLSAgICAgICAgICAgICAgICByZXR1cm47
Ci0gICAgICAgIH0KLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgfQotCi0gICAg
dm9pZCB0cmF2ZXJzZU5leHRJbmxpbmVCb3hJbkNhY2hlT3JkZXIoKTsKLSAgICB2b2lkIHRyYXZl
cnNlUHJldmlvdXNJbmxpbmVCb3hJbkNhY2hlT3JkZXIoKTsKLQogICAgIGNvbnN0IExlZ2FjeUlu
bGluZUJveCogbV9pbmxpbmVCb3ggeyBudWxscHRyIH07Ci0gICAgUmVmQ291bnRlZEFycmF5PGNv
bnN0IExlZ2FjeUlubGluZUJveCo+IG1fbG9naWNhbE9yZGVyQ2FjaGU7Ci0gICAgc2l6ZV90IG1f
bG9naWNhbE9yZGVyQ2FjaGVJbmRleCB7IDAgfTsKIH07CiAKLQotaW5saW5lIHZvaWQgQm94TGVn
YWN5UGF0aDo6dHJhdmVyc2VOZXh0SW5saW5lQm94SW5DYWNoZU9yZGVyKCkKLXsKLSAgICBBU1NF
UlQoIW1fbG9naWNhbE9yZGVyQ2FjaGUuaXNFbXB0eSgpKTsKLSAgICArK21fbG9naWNhbE9yZGVy
Q2FjaGVJbmRleDsKLSAgICBtX2lubGluZUJveCA9IG1fbG9naWNhbE9yZGVyQ2FjaGVJbmRleCA8
IG1fbG9naWNhbE9yZGVyQ2FjaGUuc2l6ZSgpID8gbV9sb2dpY2FsT3JkZXJDYWNoZVttX2xvZ2lj
YWxPcmRlckNhY2hlSW5kZXhdIDogbnVsbHB0cjsKLX0KLQotaW5saW5lIHZvaWQgQm94TGVnYWN5
UGF0aDo6dHJhdmVyc2VQcmV2aW91c0lubGluZUJveEluQ2FjaGVPcmRlcigpCi17Ci0gICAgQVNT
RVJUKCFtX2xvZ2ljYWxPcmRlckNhY2hlLmlzRW1wdHkoKSk7Ci0gICAgaWYgKCFtX2xvZ2ljYWxP
cmRlckNhY2hlSW5kZXgpIHsKLSAgICAgICAgbV9pbmxpbmVCb3ggPSBudWxscHRyOwotICAgICAg
ICByZXR1cm47Ci0gICAgfQotICAgIG1faW5saW5lQm94ID0gbV9sb2dpY2FsT3JkZXJDYWNoZVst
LW1fbG9naWNhbE9yZGVyQ2FjaGVJbmRleF07Ci19Ci0KIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9JbmxpbmVJdGVyYXRvckJveE1vZGVyblBhdGgu
aCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9JbmxpbmVJdGVyYXRvckJveE1v
ZGVyblBhdGguaAppbmRleCA2MTU0M2IwY2Y0YzQ4YjBhYmQ5ZDJjNDI1ZTk0ZTE3YWRmZjQ2MDUy
Li5kN2RjOTRjYzg2ODdkZjNmMmMwNjQ2MzhjZWVmNTJlZWMxOWVlYTRiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vSW5saW5lSXRlcmF0b3JCb3hNb2Rlcm5Q
YXRoLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0lubGluZUl0ZXJh
dG9yQm94TW9kZXJuUGF0aC5oCkBAIC0xNjAsMTYgKzE2MCw2IEBAIHB1YmxpYzoKICAgICAgICAg
ICAgIHNldEF0RW5kKCk7CiAgICAgfQogCi0gICAgdm9pZCB0cmF2ZXJzZU5leHRPbkxpbmVJbkxv
Z2ljYWxPcmRlcigpCi0gICAgewotICAgICAgICB0cmF2ZXJzZU5leHRPbkxpbmUoKTsKLSAgICB9
Ci0KLSAgICB2b2lkIHRyYXZlcnNlUHJldmlvdXNPbkxpbmVJbkxvZ2ljYWxPcmRlcigpCi0gICAg
ewotICAgICAgICB0cmF2ZXJzZVByZXZpb3VzT25MaW5lKCk7Ci0gICAgfQotCiAgICAgdm9pZCB0
cmF2ZXJzZU5leHRJbmxpbmVCb3goKQogICAgIHsKICAgICAgICAgQVNTRVJUKGJveCgpLmlzSW5s
aW5lQm94KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9u
L0lubGluZUl0ZXJhdG9yTGluZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRp
b24vSW5saW5lSXRlcmF0b3JMaW5lLmNwcAppbmRleCBmNGViNmE2OGZkM2RiYjgxNTczMjAzZjli
NjA3ZjRkMWY0NThhYzU2Li44ZmM2NDU0ZjM2MTIwYmNlZmJmMTM4NTkzMzhmNmE5YjM0YTZhN2Iw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vSW5saW5lSXRl
cmF0b3JMaW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vSW5s
aW5lSXRlcmF0b3JMaW5lLmNwcApAQCAtMTE1LDM4ICsxMTUsNiBAQCBMZWFmQm94SXRlcmF0b3Ig
TGluZTo6bGFzdFJ1bigpIGNvbnN0CiAgICAgfSk7CiB9CiAKLUxlYWZCb3hJdGVyYXRvciBMaW5l
Ojpsb2dpY2FsU3RhcnRSdW4oKSBjb25zdAotewotICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKG1f
cGF0aFZhcmlhbnQsIFtdKGF1dG8mIHBhdGgpIC0+IExlYWZCb3hJdGVyYXRvciB7Ci0gICAgICAg
IHJldHVybiB7IHBhdGgubG9naWNhbFN0YXJ0UnVuKCkgfTsKLSAgICB9KTsKLX0KLQotTGVhZkJv
eEl0ZXJhdG9yIExpbmU6OmxvZ2ljYWxFbmRSdW4oKSBjb25zdAotewotICAgIHJldHVybiBXVEY6
OnN3aXRjaE9uKG1fcGF0aFZhcmlhbnQsIFtdKGF1dG8mIHBhdGgpIC0+IExlYWZCb3hJdGVyYXRv
ciB7Ci0gICAgICAgIHJldHVybiB7IHBhdGgubG9naWNhbEVuZFJ1bigpIH07Ci0gICAgfSk7Ci19
Ci0KLUxlYWZCb3hJdGVyYXRvciBMaW5lOjpsb2dpY2FsU3RhcnRSdW5XaXRoTm9kZSgpIGNvbnN0
Ci17Ci0gICAgZm9yIChhdXRvIHJ1biA9IGxvZ2ljYWxTdGFydFJ1bigpOyBydW47IHJ1bi50cmF2
ZXJzZU5leHRPbkxpbmVJbkxvZ2ljYWxPcmRlcigpKSB7Ci0gICAgICAgIGlmIChydW4tPnJlbmRl
cmVyKCkubm9kZSgpKQotICAgICAgICAgICAgcmV0dXJuIHJ1bjsKLSAgICB9Ci0gICAgcmV0dXJu
IHsgfTsKLX0KLQotTGVhZkJveEl0ZXJhdG9yIExpbmU6OmxvZ2ljYWxFbmRSdW5XaXRoTm9kZSgp
IGNvbnN0Ci17Ci0gICAgZm9yIChhdXRvIHJ1biA9IGxvZ2ljYWxFbmRSdW4oKTsgcnVuOyBydW4u
dHJhdmVyc2VQcmV2aW91c09uTGluZUluTG9naWNhbE9yZGVyKCkpIHsKLSAgICAgICAgaWYgKHJ1
bi0+cmVuZGVyZXIoKS5ub2RlKCkpCi0gICAgICAgICAgICByZXR1cm4gcnVuOwotICAgIH0KLSAg
ICByZXR1cm4geyB9OwotfQotCiBMZWFmQm94SXRlcmF0b3IgTGluZTo6Y2xvc2VzdFJ1bkZvclBv
aW50KGNvbnN0IEludFBvaW50JiBwb2ludEluQ29udGVudHMsIGJvb2wgZWRpdGFibGVPbmx5KSBj
b25zdAogewogICAgIHJldHVybiBjbG9zZXN0UnVuRm9yTG9naWNhbExlZnRQb3NpdGlvbihpc0hv
cml6b250YWwoKSA/IHBvaW50SW5Db250ZW50cy54KCkgOiBwb2ludEluQ29udGVudHMueSgpLCBl
ZGl0YWJsZU9ubHkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0
aW9uL0lubGluZUl0ZXJhdG9yTGluZS5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0
aW9uL0lubGluZUl0ZXJhdG9yTGluZS5oCmluZGV4IDJkMzI4OTNlNzVkN2I3YmIxNmY3ZDRkYWFh
NDQ5ZTBmNTk5ZjEwNDAuLjY3ZDYzNWEzNmIwZWQyYWMyYzlmOWEwNWFkOTY1MTU2ODg1MDYxMTMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9JbmxpbmVJdGVy
YXRvckxpbmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vSW5saW5l
SXRlcmF0b3JMaW5lLmgKQEAgLTg5LDExICs4OSw2IEBAIHB1YmxpYzoKIAogICAgIExlYWZCb3hJ
dGVyYXRvciBjbG9zZXN0UnVuRm9yUG9pbnQoY29uc3QgSW50UG9pbnQmIHBvaW50SW5Db250ZW50
cywgYm9vbCBlZGl0YWJsZU9ubHkpIGNvbnN0OwogICAgIExlYWZCb3hJdGVyYXRvciBjbG9zZXN0
UnVuRm9yTG9naWNhbExlZnRQb3NpdGlvbihpbnQgcG9zaXRpb24sIGJvb2wgZWRpdGFibGVPbmx5
ID0gZmFsc2UpIGNvbnN0OwotCi0gICAgTGVhZkJveEl0ZXJhdG9yIGxvZ2ljYWxTdGFydFJ1bigp
IGNvbnN0OwotICAgIExlYWZCb3hJdGVyYXRvciBsb2dpY2FsRW5kUnVuKCkgY29uc3Q7Ci0gICAg
TGVhZkJveEl0ZXJhdG9yIGxvZ2ljYWxTdGFydFJ1bldpdGhOb2RlKCkgY29uc3Q7Ci0gICAgTGVh
ZkJveEl0ZXJhdG9yIGxvZ2ljYWxFbmRSdW5XaXRoTm9kZSgpIGNvbnN0OwogICAgIAogICAgIExl
YWZCb3hJdGVyYXRvciBmaXJzdFNlbGVjdGVkQm94KCkgY29uc3Q7CiAgICAgTGVhZkJveEl0ZXJh
dG9yIGxhc3RTZWxlY3RlZEJveCgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2ludGVncmF0aW9uL0lubGluZUl0ZXJhdG9yTGluZUxlZ2FjeVBhdGguaCBiL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9JbmxpbmVJdGVyYXRvckxpbmVMZWdhY3lQYXRo
LmgKaW5kZXggZmFjM2EyMmU3NDk0ZDRlNDMxMjE4ZmNlODllNzliNDMyNGE5M2QwOS4uYjc0YzZk
OWEwMDFlMjU0MjI1ZmY3ZmNhYWRiYWZlMzQ2ZGMwNzAxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0lubGluZUl0ZXJhdG9yTGluZUxlZ2FjeVBhdGguaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vSW5saW5lSXRlcmF0b3JMaW5l
TGVnYWN5UGF0aC5oCkBAIC04NSwxNyArODUsNiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiB7
IG1fcm9vdElubGluZUJveC0+bGFzdExlYWZEZXNjZW5kYW50KCkgfTsKICAgICB9CiAKLQotICAg
IEJveExlZ2FjeVBhdGggbG9naWNhbFN0YXJ0UnVuKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJl
dHVybiB7ICptX3Jvb3RJbmxpbmVCb3gsIEJveExlZ2FjeVBhdGg6OkxvZ2ljYWxPcmRlcjo6U3Rh
cnQgfTsKLSAgICB9Ci0KLSAgICBCb3hMZWdhY3lQYXRoIGxvZ2ljYWxFbmRSdW4oKSBjb25zdAot
ICAgIHsKLSAgICAgICAgcmV0dXJuIHsgKm1fcm9vdElubGluZUJveCwgQm94TGVnYWN5UGF0aDo6
TG9naWNhbE9yZGVyOjpFbmQgfTsKLSAgICB9Ci0KIHByaXZhdGU6CiAgICAgY29uc3QgTGVnYWN5
Um9vdElubGluZUJveCogbV9yb290SW5saW5lQm94OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9JbmxpbmVJdGVyYXRvckxpbmVNb2Rlcm5QYXRoLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vSW5saW5lSXRlcmF0b3JMaW5lTW9k
ZXJuUGF0aC5oCmluZGV4IGNhZjgyNmY4NTFlNDdmZmU3ZDVhMGRhYzU5NWZlOWRmMzNjNDVkZTMu
LmI5MWNmY2Y2NDUwZDM5OTVjNWI0NGVlNmY1MDA0ZDA5YTI3ODNkODUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9JbmxpbmVJdGVyYXRvckxpbmVNb2Rlcm5Q
YXRoLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0lubGluZUl0ZXJh
dG9yTGluZU1vZGVyblBhdGguaApAQCAtMTE2LDE2ICsxMTYsNiBAQCBwdWJsaWM6CiAgICAgICAg
IHJldHVybiBydW5JdGVyYXRvcjsKICAgICB9CiAKLSAgICBCb3hNb2Rlcm5QYXRoIGxvZ2ljYWxT
dGFydFJ1bigpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gZmlyc3RSdW4oKTsKLSAgICB9
Ci0KLSAgICBCb3hNb2Rlcm5QYXRoIGxvZ2ljYWxFbmRSdW4oKSBjb25zdAotICAgIHsKLSAgICAg
ICAgcmV0dXJuIGxhc3RSdW4oKTsKLSAgICB9Ci0KIHByaXZhdGU6CiAgICAgdm9pZCBzZXRBdEVu
ZCgpIHsgbV9saW5lSW5kZXggPSBsaW5lcygpLnNpemUoKTsgfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vSW5saW5lSXRlcmF0b3JMb2dpY2FsT3JkZXJU
cmF2ZXJzYWwuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0lubGluZUl0
ZXJhdG9yTG9naWNhbE9yZGVyVHJhdmVyc2FsLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yN2RlMjkxM2NmYWU0
OWY4ZGJjM2Q5OTFiZjM5NGIyNjRmOTE0ZDFhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0lubGluZUl0ZXJhdG9yTG9naWNhbE9yZGVyVHJhdmVy
c2FsLmNwcApAQCAtMCwwICsxLDIyNCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJJbmxpbmVJdGVyYXRvckxvZ2ljYWxPcmRlclRyYXZlcnNhbC5oIgorCisj
aW5jbHVkZSAiSW5saW5lSXRlcmF0b3JMaW5lLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK25h
bWVzcGFjZSBJbmxpbmVJdGVyYXRvciB7CisKK3N0YXRpYyBUZXh0TG9naWNhbE9yZGVyQ2FjaGUg
bWFrZVRleHRMb2dpY2FsT3JkZXJDYWNoZUlmTmVlZGVkKGNvbnN0IFJlbmRlclRleHQmIHRleHQp
Cit7CisgICAgaWYgKCF0ZXh0LmNvbnRhaW5zUmV2ZXJzZWRUZXh0KCkpCisgICAgICAgIHJldHVy
biB7IH07CisKKyAgICBhdXRvIGNhY2hlID0gV1RGOjptYWtlVW5pcXVlPFRleHRMb2dpY2FsT3Jk
ZXJDYWNoZURhdGE+KCk7CisgICAgZm9yIChhdXRvIHRleHRCb3ggOiB0ZXh0Qm94ZXNGb3IodGV4
dCkpCisgICAgICAgIGNhY2hlLT5ib3hlcy5hcHBlbmQodGV4dEJveCk7CisKKyAgICBpZiAoY2Fj
aGUtPmJveGVzLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBzdGQ6
OnNvcnQoY2FjaGUtPmJveGVzLmJlZ2luKCksIGNhY2hlLT5ib3hlcy5lbmQoKSwgWyZdKGF1dG8m
IGEsIGF1dG8mIGIpIHsKKyAgICAgICAgcmV0dXJuIGEtPnN0YXJ0KCkgPCBiLT5zdGFydCgpOwor
ICAgIH0pOworCisgICAgcmV0dXJuIGNhY2hlOworfQorCitzdGF0aWMgdm9pZCB1cGRhdGVUZXh0
TG9naWNhbE9yZGVyQ2FjaGVJZk5lZWRlZChjb25zdCBUZXh0Qm94SXRlcmF0b3ImIHRleHRCb3gs
IFRleHRMb2dpY2FsT3JkZXJDYWNoZSYgY2FjaGUpCit7CisgICAgaWYgKCFjYWNoZSAmJiAhKGNh
Y2hlID0gbWFrZVRleHRMb2dpY2FsT3JkZXJDYWNoZUlmTmVlZGVkKHRleHRCb3gtPnJlbmRlcmVy
KCkpKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKGNhY2hlLT5pbmRleCA8IGNhY2hlLT5i
b3hlcy5zaXplKCkgJiYgY2FjaGUtPmJveGVzW2NhY2hlLT5pbmRleF0gPT0gdGV4dEJveCkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgY2FjaGUtPmluZGV4ID0gY2FjaGUtPmJveGVzLmZpbmQodGV4
dEJveCk7CisKKyAgICBpZiAoY2FjaGUtPmluZGV4ID09IG5vdEZvdW5kKSB7CisgICAgICAgIGNh
Y2hlID0geyB9OworICAgICAgICB1cGRhdGVUZXh0TG9naWNhbE9yZGVyQ2FjaGVJZk5lZWRlZCh0
ZXh0Qm94LCBjYWNoZSk7CisgICAgfQorfQorCitzdGQ6OnBhaXI8VGV4dEJveEl0ZXJhdG9yLCBU
ZXh0TG9naWNhbE9yZGVyQ2FjaGU+IGZpcnN0VGV4dEJveEluTG9naWNhbE9yZGVyRm9yKGNvbnN0
IFJlbmRlclRleHQmIHRleHQpCit7CisgICAgaWYgKGF1dG8gY2FjaGUgPSBtYWtlVGV4dExvZ2lj
YWxPcmRlckNhY2hlSWZOZWVkZWQodGV4dCkpCisgICAgICAgIHJldHVybiB7IGNhY2hlLT5ib3hl
cy5maXJzdCgpLCBXVEZNb3ZlKGNhY2hlKSB9OworCisgICAgcmV0dXJuIHsgZmlyc3RUZXh0Qm94
Rm9yKHRleHQpLCBudWxscHRyIH07Cit9CisKK1RleHRCb3hJdGVyYXRvciBuZXh0VGV4dEJveElu
TG9naWNhbE9yZGVyKGNvbnN0IFRleHRCb3hJdGVyYXRvciYgdGV4dEJveCwgVGV4dExvZ2ljYWxP
cmRlckNhY2hlJiBjYWNoZSkKK3sKKyAgICB1cGRhdGVUZXh0TG9naWNhbE9yZGVyQ2FjaGVJZk5l
ZWRlZCh0ZXh0Qm94LCBjYWNoZSk7CisKKyAgICBpZiAoIWNhY2hlKQorICAgICAgICByZXR1cm4g
dGV4dEJveC0+bmV4dFRleHRCb3goKTsKKworICAgIGNhY2hlLT5pbmRleCsrOworCisgICAgaWYg
KGNhY2hlLT5pbmRleCA8IGNhY2hlLT5ib3hlcy5zaXplKCkpCisgICAgICAgIHJldHVybiBjYWNo
ZS0+Ym94ZXNbY2FjaGUtPmluZGV4XTsKKworICAgIHJldHVybiB7IH07Cit9CisKK3N0YXRpYyBM
aW5lTG9naWNhbE9yZGVyQ2FjaGUgbWFrZUxpbmVMb2dpY2FsT3JkZXJDYWNoZShjb25zdCBMaW5l
SXRlcmF0b3ImIGxpbmUpCit7CisgICAgYXV0byBjYWNoZSA9IFdURjo6bWFrZVVuaXF1ZTxMaW5l
TG9naWNhbE9yZGVyQ2FjaGVEYXRhPigpOworICAgIGNhY2hlLT5saW5lID0gbGluZTsKKworICAg
IGF1dG8mIGJveGVzID0gY2FjaGUtPmJveGVzOworCisgICAgdW5zaWduZWQgY2hhciBtaW5MZXZl
bCA9IDEyODsKKyAgICB1bnNpZ25lZCBjaGFyIG1heExldmVsID0gMDsKKworICAgIGZvciAoYXV0
byBib3ggPSBsaW5lLT5maXJzdFJ1bigpOyBib3g7IGJveCA9IGJveC50cmF2ZXJzZU5leHRPbkxp
bmUoKSkgeworICAgICAgICBtaW5MZXZlbCA9IHN0ZDo6bWluKG1pbkxldmVsLCBib3gtPmJpZGlM
ZXZlbCgpKTsKKyAgICAgICAgbWF4TGV2ZWwgPSBzdGQ6Om1heChtYXhMZXZlbCwgYm94LT5iaWRp
TGV2ZWwoKSk7CisgICAgICAgIGJveGVzLmFwcGVuZChib3gpOworICAgIH0KKworICAgIGlmICgh
bWF4TGV2ZWwpCisgICAgICAgIHJldHVybiBjYWNoZTsKKworICAgIGlmIChsaW5lLT5jb250YWlu
aW5nQmxvY2soKS5zdHlsZSgpLnJ0bE9yZGVyaW5nKCkgPT0gT3JkZXI6OlZpc3VhbCkKKyAgICAg
ICAgcmV0dXJuIGNhY2hlOworCisgICAgLy8gUmV2ZXJzZSBvZiByZW9yZGVyaW5nIG9mIHRoZSBs
aW5lIChMMiBhY2NvcmRpbmcgdG8gQmlkaSBzcGVjKToKKyAgICAvLyBMMi4gRnJvbSB0aGUgaGln
aGVzdCBsZXZlbCBmb3VuZCBpbiB0aGUgdGV4dCB0byB0aGUgbG93ZXN0IG9kZCBsZXZlbCBvbiBl
YWNoIGxpbmUsCisgICAgLy8gcmV2ZXJzZSBhbnkgY29udGlndW91cyBzZXF1ZW5jZSBvZiBjaGFy
YWN0ZXJzIHRoYXQgYXJlIGF0IHRoYXQgbGV2ZWwgb3IgaGlnaGVyLgorCisgICAgLy8gUmV2ZXJz
aW5nIHRoZSByZW9yZGVyaW5nIG9mIHRoZSBsaW5lIGlzIG9ubHkgZG9uZSB1cCB0byB0aGUgbG93
ZXN0IG9kZCBsZXZlbC4KKyAgICBpZiAoIShtaW5MZXZlbCAlIDIpKQorICAgICAgICArK21pbkxl
dmVsOworCisgICAgYXV0byBlbmQgPSBib3hlcy5lbmQoKTsKKyAgICBmb3IgKDsgbWluTGV2ZWwg
PD0gbWF4TGV2ZWw7ICsrbWluTGV2ZWwpIHsKKyAgICAgICAgYXV0byBib3ggPSBib3hlcy5iZWdp
bigpOworICAgICAgICB3aGlsZSAoYm94IDwgZW5kKSB7CisgICAgICAgICAgICB3aGlsZSAoYm94
IDwgZW5kICYmICgqYm94KS0+YmlkaUxldmVsKCkgPCBtaW5MZXZlbCkKKyAgICAgICAgICAgICAg
ICArK2JveDsKKworICAgICAgICAgICAgYXV0byBmaXJzdCA9IGJveDsKKyAgICAgICAgICAgIHdo
aWxlIChib3ggPCBlbmQgJiYgKCpib3gpLT5iaWRpTGV2ZWwoKSA+PSBtaW5MZXZlbCkKKyAgICAg
ICAgICAgICAgICArK2JveDsKKworICAgICAgICAgICAgYXV0byBsYXN0ID0gYm94OworICAgICAg
ICAgICAgc3RkOjpyZXZlcnNlKGZpcnN0LCBsYXN0KTsKKyAgICAgICAgfQorICAgIH0KKworICAg
IHJldHVybiBjYWNoZTsKK30KKworc3RhdGljIHZvaWQgdXBkYXRlTGluZUxvZ2ljYWxPcmRlckNh
Y2hlSWZOZWVkZWQoY29uc3QgTGVhZkJveEl0ZXJhdG9yJiBib3gsIExpbmVMb2dpY2FsT3JkZXJD
YWNoZSYgY2FjaGUpCit7CisgICAgYXV0byBsaW5lID0gYm94LT5saW5lKCk7CisgICAgaWYgKCFj
YWNoZSB8fCBjYWNoZS0+bGluZSAhPSBsaW5lKQorICAgICAgICBjYWNoZSA9IG1ha2VMaW5lTG9n
aWNhbE9yZGVyQ2FjaGUobGluZSk7CisKKyAgICBpZiAoY2FjaGUtPmluZGV4IDwgY2FjaGUtPmJv
eGVzLnNpemUoKSAmJiBjYWNoZS0+Ym94ZXNbY2FjaGUtPmluZGV4XSA9PSBib3gpCisgICAgICAg
IHJldHVybjsKKworICAgIGNhY2hlLT5pbmRleCA9IGNhY2hlLT5ib3hlcy5maW5kKGJveCk7CisK
KyAgICBBU1NFUlQoY2FjaGUtPmluZGV4ICE9IG5vdEZvdW5kKTsKK30KKworTGVhZkJveEl0ZXJh
dG9yIGZpcnN0TGVhZk9uTGluZUluTG9naWNhbE9yZGVyKGNvbnN0IExpbmVJdGVyYXRvciYgbGlu
ZSwgTGluZUxvZ2ljYWxPcmRlckNhY2hlJiBjYWNoZSkKK3sKKyAgICBjYWNoZSA9IG1ha2VMaW5l
TG9naWNhbE9yZGVyQ2FjaGUobGluZSk7CisKKyAgICBpZiAoY2FjaGUtPmJveGVzLmlzRW1wdHko
KSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIGNhY2hlLT5pbmRleCA9IDA7CisgICAgcmV0
dXJuIGNhY2hlLT5ib3hlcy5maXJzdCgpOworfQorCitMZWFmQm94SXRlcmF0b3IgbGFzdExlYWZP
bkxpbmVJbkxvZ2ljYWxPcmRlcihjb25zdCBMaW5lSXRlcmF0b3ImIGxpbmUsIExpbmVMb2dpY2Fs
T3JkZXJDYWNoZSYgY2FjaGUpCit7CisgICAgY2FjaGUgPSBtYWtlTGluZUxvZ2ljYWxPcmRlckNh
Y2hlKGxpbmUpOworCisgICAgaWYgKGNhY2hlLT5ib3hlcy5pc0VtcHR5KCkpCisgICAgICAgIHJl
dHVybiB7IH07CisKKyAgICBjYWNoZS0+aW5kZXggPSBjYWNoZS0+Ym94ZXMuc2l6ZSgpIC0gMTsK
KyAgICByZXR1cm4gY2FjaGUtPmJveGVzLmxhc3QoKTsKK30KKworTGVhZkJveEl0ZXJhdG9yIG5l
eHRMZWFmT25MaW5lSW5Mb2dpY2FsT3JkZXIoY29uc3QgTGVhZkJveEl0ZXJhdG9yJiBib3gsIExp
bmVMb2dpY2FsT3JkZXJDYWNoZSYgY2FjaGUpCit7CisgICAgdXBkYXRlTGluZUxvZ2ljYWxPcmRl
ckNhY2hlSWZOZWVkZWQoYm94LCBjYWNoZSk7CisKKyAgICBpZiAoIWNhY2hlKQorICAgICAgICBy
ZXR1cm4gYm94LT5uZXh0T25MaW5lKCk7CisKKyAgICBjYWNoZS0+aW5kZXgrKzsKKworICAgIGlm
IChjYWNoZS0+aW5kZXggPCBjYWNoZS0+Ym94ZXMuc2l6ZSgpKQorICAgICAgICByZXR1cm4gY2Fj
aGUtPmJveGVzW2NhY2hlLT5pbmRleF07CisKKyAgICByZXR1cm4geyB9OworfQorCitMZWFmQm94
SXRlcmF0b3IgcHJldmlvdXNMZWFmT25MaW5lSW5Mb2dpY2FsT3JkZXIoY29uc3QgTGVhZkJveEl0
ZXJhdG9yJiBib3gsIExpbmVMb2dpY2FsT3JkZXJDYWNoZSYgY2FjaGUpCit7CisgICAgdXBkYXRl
TGluZUxvZ2ljYWxPcmRlckNhY2hlSWZOZWVkZWQoYm94LCBjYWNoZSk7CisKKyAgICBpZiAoIWNh
Y2hlKQorICAgICAgICByZXR1cm4gYm94LT5wcmV2aW91c09uTGluZSgpOworCisgICAgaWYgKCFj
YWNoZS0+aW5kZXgpCisgICAgICAgIHJldHVybiB7IH07CisKKyAgICBjYWNoZS0+aW5kZXgtLTsK
KworICAgIHJldHVybiBjYWNoZS0+Ym94ZXNbY2FjaGUtPmluZGV4XTsKK30KKworTGVhZkJveEl0
ZXJhdG9yIGZpcnN0TGVhZk9uTGluZUluTG9naWNhbE9yZGVyV2l0aE5vZGUoY29uc3QgTGluZUl0
ZXJhdG9yJiBsaW5lLCBMaW5lTG9naWNhbE9yZGVyQ2FjaGUmIGNhY2hlKQoreworICAgIGF1dG8g
Ym94ID0gZmlyc3RMZWFmT25MaW5lSW5Mb2dpY2FsT3JkZXIobGluZSwgY2FjaGUpOworICAgIHdo
aWxlICghYm94LT5yZW5kZXJlcigpLm5vZGUoKSkKKyAgICAgICAgYm94ID0gbmV4dExlYWZPbkxp
bmVJbkxvZ2ljYWxPcmRlcihib3gsIGNhY2hlKTsKKyAgICByZXR1cm4gYm94OworfQorCitMZWFm
Qm94SXRlcmF0b3IgbGFzdExlYWZPbkxpbmVJbkxvZ2ljYWxPcmRlcldpdGhOb2RlKGNvbnN0IExp
bmVJdGVyYXRvciYgbGluZSwgTGluZUxvZ2ljYWxPcmRlckNhY2hlJiBjYWNoZSkKK3sKKyAgICBh
dXRvIGJveCA9IGxhc3RMZWFmT25MaW5lSW5Mb2dpY2FsT3JkZXIobGluZSwgY2FjaGUpOworICAg
IHdoaWxlICghYm94LT5yZW5kZXJlcigpLm5vZGUoKSkKKyAgICAgICAgYm94ID0gcHJldmlvdXNM
ZWFmT25MaW5lSW5Mb2dpY2FsT3JkZXIoYm94LCBjYWNoZSk7CisgICAgcmV0dXJuIGJveDsKK30K
KworfQorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0lu
bGluZUl0ZXJhdG9yTG9naWNhbE9yZGVyVHJhdmVyc2FsLmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvaW50ZWdyYXRpb24vSW5saW5lSXRlcmF0b3JMb2dpY2FsT3JkZXJUcmF2ZXJzYWwuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4xY2Y1ODk0Yzk4MDgyZDQ5MjE0ZmYwNjdiZTc2MDhjZTVhYzdjODkyCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0lubGluZUl0ZXJh
dG9yTG9naWNhbE9yZGVyVHJhdmVyc2FsLmgKQEAgLTAsMCArMSw2MyBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiSW5saW5lSXRlcmF0b3JMaW5lLmgiCisjaW5jbHVk
ZSAiSW5saW5lSXRlcmF0b3JUZXh0Qm94LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK25hbWVz
cGFjZSBJbmxpbmVJdGVyYXRvciB7CisKK3N0cnVjdCBUZXh0TG9naWNhbE9yZGVyQ2FjaGVEYXRh
IHsKKyAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CisKKyAgICBWZWN0b3I8VGV4
dEJveEl0ZXJhdG9yPiBib3hlczsKKyAgICBzaXplX3QgaW5kZXggeyAwIH07Cit9OwordXNpbmcg
VGV4dExvZ2ljYWxPcmRlckNhY2hlID0gc3RkOjp1bmlxdWVfcHRyPFRleHRMb2dpY2FsT3JkZXJD
YWNoZURhdGE+OworCitzdGQ6OnBhaXI8VGV4dEJveEl0ZXJhdG9yLCBUZXh0TG9naWNhbE9yZGVy
Q2FjaGU+IGZpcnN0VGV4dEJveEluTG9naWNhbE9yZGVyRm9yKGNvbnN0IFJlbmRlclRleHQmKTsK
K1RleHRCb3hJdGVyYXRvciBuZXh0VGV4dEJveEluTG9naWNhbE9yZGVyKGNvbnN0IFRleHRCb3hJ
dGVyYXRvciYsIFRleHRMb2dpY2FsT3JkZXJDYWNoZSYpOworCitzdHJ1Y3QgTGluZUxvZ2ljYWxP
cmRlckNhY2hlRGF0YSB7CisgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOworCisg
ICAgTGluZUl0ZXJhdG9yIGxpbmU7CisgICAgVmVjdG9yPExlYWZCb3hJdGVyYXRvcj4gYm94ZXM7
CisgICAgc2l6ZV90IGluZGV4IHsgMCB9OworfTsKK3VzaW5nIExpbmVMb2dpY2FsT3JkZXJDYWNo
ZSA9IHN0ZDo6dW5pcXVlX3B0cjxMaW5lTG9naWNhbE9yZGVyQ2FjaGVEYXRhPjsKKworTGVhZkJv
eEl0ZXJhdG9yIGZpcnN0TGVhZk9uTGluZUluTG9naWNhbE9yZGVyKGNvbnN0IExpbmVJdGVyYXRv
ciYsIExpbmVMb2dpY2FsT3JkZXJDYWNoZSYpOworTGVhZkJveEl0ZXJhdG9yIGxhc3RMZWFmT25M
aW5lSW5Mb2dpY2FsT3JkZXIoY29uc3QgTGluZUl0ZXJhdG9yJiwgTGluZUxvZ2ljYWxPcmRlckNh
Y2hlJik7CitMZWFmQm94SXRlcmF0b3IgbmV4dExlYWZPbkxpbmVJbkxvZ2ljYWxPcmRlcihjb25z
dCBMZWFmQm94SXRlcmF0b3ImLCBMaW5lTG9naWNhbE9yZGVyQ2FjaGUmKTsKK0xlYWZCb3hJdGVy
YXRvciBwcmV2aW91c0xlYWZPbkxpbmVJbkxvZ2ljYWxPcmRlcihjb25zdCBMZWFmQm94SXRlcmF0
b3ImLCBMaW5lTG9naWNhbE9yZGVyQ2FjaGUmKTsKKworTGVhZkJveEl0ZXJhdG9yIGZpcnN0TGVh
Zk9uTGluZUluTG9naWNhbE9yZGVyV2l0aE5vZGUoY29uc3QgTGluZUl0ZXJhdG9yJiwgTGluZUxv
Z2ljYWxPcmRlckNhY2hlJik7CitMZWFmQm94SXRlcmF0b3IgbGFzdExlYWZPbkxpbmVJbkxvZ2lj
YWxPcmRlcldpdGhOb2RlKGNvbnN0IExpbmVJdGVyYXRvciYsIExpbmVMb2dpY2FsT3JkZXJDYWNo
ZSYpOworCit9Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRp
b24vSW5saW5lSXRlcmF0b3JUZXh0Qm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRl
Z3JhdGlvbi9JbmxpbmVJdGVyYXRvclRleHRCb3guY3BwCmluZGV4IDIxNTY4ZGYzNDg4MmFmZDU2
MmI4NThhNTQ1NTIwYTVlYTk4YmY0YjkuLmQyOTFjZjI2MzQ3ODg0MDNlMTE4ZThhZTJkMWNmZWM3
MzFkMjkzNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9J
bmxpbmVJdGVyYXRvclRleHRCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRl
Z3JhdGlvbi9JbmxpbmVJdGVyYXRvclRleHRCb3guY3BwCkBAIC05OSw0MyArOTksNiBAQCBUZXh0
Qm94SXRlcmF0b3IgZmlyc3RUZXh0Qm94Rm9yKGNvbnN0IFJlbmRlclRleHQmIHRleHQpCiAgICAg
cmV0dXJuIHsgQm94TGVnYWN5UGF0aCB7IHRleHQuZmlyc3RUZXh0Qm94KCkgfSB9OwogfQogCi1z
dGQ6OnBhaXI8VGV4dEJveEl0ZXJhdG9yLCBMb2dpY2FsT3JkZXJDYWNoZT4gZmlyc3RUZXh0Qm94
SW5Mb2dpY2FsT3JkZXJGb3IoY29uc3QgUmVuZGVyVGV4dCYgdGV4dCkKLXsKLSAgICBpZiAoIXRl
eHQuY29udGFpbnNSZXZlcnNlZFRleHQoKSkKLSAgICAgICAgcmV0dXJuIHsgZmlyc3RUZXh0Qm94
Rm9yKHRleHQpLCBudWxscHRyIH07Ci0KLSAgICBhdXRvIGNhY2hlID0gV1RGOjptYWtlVW5pcXVl
PExvZ2ljYWxPcmRlckNhY2hlRGF0YT4oKTsKLSAgICBmb3IgKGF1dG8gdGV4dEJveCA6IHRleHRC
b3hlc0Zvcih0ZXh0KSkKLSAgICAgICAgY2FjaGUtPmJveGVzLmFwcGVuZCh0ZXh0Qm94KTsKLQot
ICAgIGlmIChjYWNoZS0+Ym94ZXMuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4geyBUZXh0Qm94
SXRlcmF0b3IgeyB9LCBudWxscHRyIH07Ci0KLSAgICBzdGQ6OnNvcnQoY2FjaGUtPmJveGVzLmJl
Z2luKCksIGNhY2hlLT5ib3hlcy5lbmQoKSwgWyZdKGF1dG8mIGEsIGF1dG8mIGIpIHsKLSAgICAg
ICAgcmV0dXJuIGEtPnN0YXJ0KCkgPCBiLT5zdGFydCgpOwotICAgIH0pOwotCi0gICAgcmV0dXJu
IHsgY2FjaGUtPmJveGVzWzBdLCBXVEZNb3ZlKGNhY2hlKSB9OwotfQotCi1UZXh0Qm94SXRlcmF0
b3IgbmV4dFRleHRCb3hJbkxvZ2ljYWxPcmRlcihjb25zdCBUZXh0Qm94SXRlcmF0b3ImIHRleHRC
b3gsIExvZ2ljYWxPcmRlckNhY2hlJiBjYWNoZSkKLXsKLSAgICBpZiAoIWNhY2hlKQotICAgICAg
ICByZXR1cm4gdGV4dEJveC0+bmV4dFRleHRCb3goKTsKLQotICAgIGlmIChjYWNoZS0+aW5kZXgg
PT0gY2FjaGUtPmJveGVzLnNpemUoKSB8fCBjYWNoZS0+Ym94ZXNbY2FjaGUtPmluZGV4XSAhPSB0
ZXh0Qm94KSB7Ci0gICAgICAgIGNhY2hlLT5pbmRleCA9IGNhY2hlLT5ib3hlcy5maW5kKHRleHRC
b3gpOwotICAgICAgICBBU1NFUlQoY2FjaGUtPmluZGV4ICE9IG5vdEZvdW5kKTsKLSAgICB9Ci0K
LSAgICBjYWNoZS0+aW5kZXgrKzsKLQotICAgIGlmIChjYWNoZS0+aW5kZXggPCBjYWNoZS0+Ym94
ZXMuc2l6ZSgpKQotICAgICAgICByZXR1cm4gY2FjaGUtPmJveGVzW2NhY2hlLT5pbmRleF07Ci0K
LSAgICByZXR1cm4geyB9OwotfQotCiBUZXh0Qm94SXRlcmF0b3IgdGV4dEJveEZvcihjb25zdCBM
ZWdhY3lJbmxpbmVUZXh0Qm94KiBsZWdhY3lJbmxpbmVUZXh0Qm94KQogewogICAgIHJldHVybiB7
IEJveExlZ2FjeVBhdGggeyBsZWdhY3lJbmxpbmVUZXh0Qm94IH0gfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9JbmxpbmVJdGVyYXRvclRleHRCb3guaCBi
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9JbmxpbmVJdGVyYXRvclRleHRCb3gu
aAppbmRleCA0MmI0N2UzNDk5N2YzM2IyYTg3ZGI1ZTBiN2E1YjFhYTBkZTI4M2I4Li5lOTMyYzA2
ODc3MjUyNWU2MmUwOGZmNDc2MDUyYTYxNjc5NTVkNWZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvaW50ZWdyYXRpb24vSW5saW5lSXRlcmF0b3JUZXh0Qm94LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0lubGluZUl0ZXJhdG9yVGV4dEJveC5oCkBA
IC0zMiw5ICszMiw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogbmFtZXNwYWNlIElubGluZUl0
ZXJhdG9yIHsKIAotc3RydWN0IExvZ2ljYWxPcmRlckNhY2hlRGF0YTsKLXVzaW5nIExvZ2ljYWxP
cmRlckNhY2hlID0gc3RkOjp1bmlxdWVfcHRyPExvZ2ljYWxPcmRlckNhY2hlRGF0YT47Ci0KIGNs
YXNzIFRleHRCb3ggOiBwdWJsaWMgQm94IHsKIHB1YmxpYzoKICAgICBUZXh0Qm94KFBhdGhWYXJp
YW50JiYpOwpAQCAtNjMsNiArNjAsNyBAQCBwdWJsaWM6CiAgICAgY29uc3QgTGVnYWN5SW5saW5l
VGV4dEJveCogbGVnYWN5SW5saW5lQm94KCkgY29uc3QgeyByZXR1cm4gZG93bmNhc3Q8TGVnYWN5
SW5saW5lVGV4dEJveD4oQm94OjpsZWdhY3lJbmxpbmVCb3goKSk7IH0KIAogICAgIFRleHRCb3hJ
dGVyYXRvciBuZXh0VGV4dEJveCgpIGNvbnN0OworICAgIFRleHRCb3hJdGVyYXRvciBwcmV2aW91
c1RleHRCb3goKSBjb25zdDsKIH07CiAKIGNsYXNzIFRleHRCb3hJdGVyYXRvciA6IHB1YmxpYyBM
ZWFmQm94SXRlcmF0b3IgewpAQCAtODMsOCArODEsNiBAQCBwcml2YXRlOgogICAgIEJveEl0ZXJh
dG9yJiB0cmF2ZXJzZVByZXZpb3VzT25MaW5lKCkgPSBkZWxldGU7CiAgICAgQm94SXRlcmF0b3Im
IHRyYXZlcnNlTmV4dE9uTGluZUlnbm9yaW5nTGluZUJyZWFrKCkgPSBkZWxldGU7CiAgICAgQm94
SXRlcmF0b3ImIHRyYXZlcnNlUHJldmlvdXNPbkxpbmVJZ25vcmluZ0xpbmVCcmVhaygpID0gZGVs
ZXRlOwotICAgIEJveEl0ZXJhdG9yJiB0cmF2ZXJzZU5leHRPbkxpbmVJbkxvZ2ljYWxPcmRlcigp
ID0gZGVsZXRlOwotICAgIEJveEl0ZXJhdG9yJiB0cmF2ZXJzZVByZXZpb3VzT25MaW5lSW5Mb2dp
Y2FsT3JkZXIoKSA9IGRlbGV0ZTsKIAogICAgIGNvbnN0IFRleHRCb3gmIGdldCgpIGNvbnN0IHsg
cmV0dXJuIGRvd25jYXN0PFRleHRCb3g+KG1fYm94KTsgfQogfTsKQEAgLTExMSwxNSArMTA3LDYg
QEAgVGV4dEJveEl0ZXJhdG9yIHRleHRCb3hGb3IoY29uc3QgTGF5b3V0SW50ZWdyYXRpb246Oklu
bGluZUNvbnRlbnQmLCBzaXplX3QgYm94SW4KICNlbmRpZgogVGV4dEJveFJhbmdlIHRleHRCb3hl
c0Zvcihjb25zdCBSZW5kZXJUZXh0Jik7CiAKLXN0cnVjdCBMb2dpY2FsT3JkZXJDYWNoZURhdGEg
ewotICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKLSAgICAKLSAgICBWZWN0b3I8
VGV4dEJveEl0ZXJhdG9yPiBib3hlczsKLSAgICBzaXplX3QgaW5kZXggeyAwIH07Ci19Owotc3Rk
OjpwYWlyPFRleHRCb3hJdGVyYXRvciwgTG9naWNhbE9yZGVyQ2FjaGU+IGZpcnN0VGV4dEJveElu
TG9naWNhbE9yZGVyRm9yKGNvbnN0IFJlbmRlclRleHQmKTsKLVRleHRCb3hJdGVyYXRvciBuZXh0
VGV4dEJveEluTG9naWNhbE9yZGVyKGNvbnN0IFRleHRCb3hJdGVyYXRvciYsIExvZ2ljYWxPcmRl
ckNhY2hlJik7Ci0KIGlubGluZSBib29sIFRleHRCb3g6Omhhc0h5cGhlbigpIGNvbnN0CiB7CiAg
ICAgcmV0dXJuIFdURjo6c3dpdGNoT24obV9wYXRoVmFyaWFudCwgW10oYXV0byYgcGF0aCkgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNwcAppbmRleCAxMThj
YzIwYTdiMmVhNTkxMzU5YzcyNTI1NjM0MWRkN2JmMTdkZmMwLi5mMmM2MjhmNjcxYmJmZTVjYjg4
ZTU4NWNjYWRmYTJmMmNlNzUxNmZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyQmxvY2tGbG93LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQmxvY2tGbG93LmNwcApAQCAtMzYsNiArMzYsNyBAQAogI2luY2x1ZGUgIkhpdFRlc3RMb2Nh
dGlvbi5oIgogI2luY2x1ZGUgIklubGluZUl0ZXJhdG9yQm94LmgiCiAjaW5jbHVkZSAiSW5saW5l
SXRlcmF0b3JMaW5lLmgiCisjaW5jbHVkZSAiSW5saW5lSXRlcmF0b3JMb2dpY2FsT3JkZXJUcmF2
ZXJzYWwuaCIKICNpbmNsdWRlICJJbmxpbmVJdGVyYXRvclRleHRCb3guaCIKICNpbmNsdWRlICJJ
bmxpbmVXYWxrZXIuaCIKICNpbmNsdWRlICJMYXlvdXRJbnRlZ3JhdGlvbkxpbmVMYXlvdXQuaCIK
QEAgLTM2MTksNyArMzYyMCw4IEBAIFZpc2libGVQb3NpdGlvbiBSZW5kZXJCbG9ja0Zsb3c6OnBv
c2l0aW9uRm9yUG9pbnRXaXRoSW5saW5lQ2hpbGRyZW4oY29uc3QgTGF5b3V0CiAgICAgaWYgKGxh
c3RMaW5lV2l0aENoaWxkcmVuKSB7CiAgICAgICAgIC8vIFdlIGhpdCB0aGlzIGNhc2UgZm9yIE1h
YyBiZWhhdmlvciB3aGVuIHRoZSBZIGNvb3JkaW5hdGUgaXMgYmVsb3cgdGhlIGxhc3QgYm94Lgog
ICAgICAgICBBU1NFUlQobW92ZUNhcmV0VG9Cb3VuZGFyeSk7Ci0gICAgICAgIGlmIChhdXRvIGxv
Z2ljYWxseUxhc3RSdW4gPSBsYXN0TGluZVdpdGhDaGlsZHJlbi0+bG9naWNhbEVuZFJ1bldpdGhO
b2RlKCkpCisgICAgICAgIElubGluZUl0ZXJhdG9yOjpMaW5lTG9naWNhbE9yZGVyQ2FjaGUgb3Jk
ZXJDYWNoZTsKKyAgICAgICAgaWYgKGF1dG8gbG9naWNhbGx5TGFzdFJ1biA9IElubGluZUl0ZXJh
dG9yOjpsYXN0TGVhZk9uTGluZUluTG9naWNhbE9yZGVyV2l0aE5vZGUobGFzdExpbmVXaXRoQ2hp
bGRyZW4sIG9yZGVyQ2FjaGUpKQogICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uRm9yUnVuKCp0
aGlzLCBsb2dpY2FsbHlMYXN0UnVuLCBmYWxzZSk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVGV4dC5jcHAKaW5kZXggNTdkZjE0MWVmNDc2NzdkNjJhYzFiMTNmNGFlMjk1
N2MyMjVlODg0Zi4uMjgxNjczMDg3NzMzZGI5ZDNkZjY5NmM0NDYzOTkwZDJmMjZkYTZlZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmNwcApAQCAtMzcsNiArMzcsNyBAQAog
I2luY2x1ZGUgIkhUTUxQYXJzZXJJZGlvbXMuaCIKICNpbmNsdWRlICJIeXBoZW5hdGlvbi5oIgog
I2luY2x1ZGUgIklubGluZUl0ZXJhdG9yTGluZS5oIgorI2luY2x1ZGUgIklubGluZUl0ZXJhdG9y
TG9naWNhbE9yZGVyVHJhdmVyc2FsLmgiCiAjaW5jbHVkZSAiSW5saW5lSXRlcmF0b3JUZXh0Qm94
LmgiCiAjaW5jbHVkZSAiSW5saW5lUnVuQW5kT2Zmc2V0LmgiCiAjaW5jbHVkZSAiTGF5b3V0SW50
ZWdyYXRpb25MaW5lTGF5b3V0LmgiCg==
</data>
<flag name="commit-queue"
          id="465589"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>441364</attachid>
            <date>2021-10-15 05:13:30 -0700</date>
            <delta_ts>2021-10-15 05:31:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-231800-20211015151329.patch</filename>
            <type>text/plain</type>
            <size>53451</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg0MjM2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODUwN2I1YjhiMjkzNjZj
N2M0ZDI3Mzk5ZWE0ZjQ1YzgxNTczZjU2OS4uMzU5ZGJjMWNmNDk2Y2U3ZmRhNDBlYzA0MWEyYzQ3
ZjQ3N2E4ZWRiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg4IEBACisyMDIxLTEwLTE1ICBBbnR0
aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBbTEZDXVtJbnRlZ3JhdGlv
bl0gRmFjdG9yIGxpbmUgbG9naWNhbCBvcmRlciB0cmF2ZXJzYWwgb3V0IG9mIGl0ZXJhdG9yCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzE4MDAKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTaW1pbGFyIHRv
IHRleHQgbG9naWNhbCBvcmRlciB0cmF2ZXJzYWwsIHVzZSBzdGFuZGFsb25lIHRyYXZlcnNhbCBm
dW5jdGlvbnMgd2l0aCBvcmRlciBjYWNoZQorICAgICAgICBvd25lZCBieSB0aGUgY2FsbGVyLgor
CisgICAgICAgIE1ha2UgdGhlIGNvZGUgZ2VuZXJpYyBzbyBpdCB3aWxsIHdvcmsgd2l0aCBJRkMg
QmlEaS4KKworICAgICAgICBGYWN0b3IgYWxsIHRyYXZlcnNhbCBmdW5jdGlvbnMgdG8gYSBmaWxl
IG9mIHRoZWlyIG93biwgSW5saW5lSXRlcmF0b3JMb2dpY2FsT3JkZXJUcmF2ZXJzYWwuaC9jcHAu
CisKKyAgICAgICAgKiBIZWFkZXJzLmNtYWtlOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAg
ICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBkb20v
UG9zaXRpb24uY3BwOgorICAgICAgICAqIGVkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuY3Bw
OgorICAgICAgICAqIGVkaXRpbmcvVGV4dEl0ZXJhdG9yLmg6CisgICAgICAgICogZWRpdGluZy9W
aXNpYmxlUG9zaXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VmlzaWJsZVBvc2l0aW9uOjps
ZWZ0VmlzdWFsbHlEaXN0aW5jdENhbmRpZGF0ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpW
aXNpYmxlUG9zaXRpb246OnJpZ2h0VmlzdWFsbHlEaXN0aW5jdENhbmRpZGF0ZSBjb25zdCk6Cisg
ICAgICAgICogZWRpdGluZy9WaXNpYmxlVW5pdHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cHJl
dmlvdXNUZXh0T3JMaW5lQnJlYWtSdW4pOgorICAgICAgICAoV2ViQ29yZTo6bmV4dFRleHRPckxp
bmVCcmVha1J1bik6CisgICAgICAgIChXZWJDb3JlOjpzdGFydFRleHRPckxpbmVCcmVha1J1bik6
CisgICAgICAgIChXZWJDb3JlOjplbmRUZXh0T3JMaW5lQnJlYWtSdW4pOgorICAgICAgICAoV2Vi
Q29yZTo6bG9naWNhbGx5UHJldmlvdXNSdW4pOgorICAgICAgICAoV2ViQ29yZTo6bG9naWNhbGx5
TmV4dFJ1bik6CisgICAgICAgIChXZWJDb3JlOjp3b3JkQnJlYWtJdGVyYXRvckZvck1pbk9mZnNl
dEJvdW5kYXJ5KToKKyAgICAgICAgKFdlYkNvcmU6OndvcmRCcmVha0l0ZXJhdG9yRm9yTWF4T2Zm
c2V0Qm91bmRhcnkpOgorICAgICAgICAoV2ViQ29yZTo6c3RhcnRQb3NpdGlvbkZvckxpbmUpOgor
ICAgICAgICAoV2ViQ29yZTo6ZW5kUG9zaXRpb25Gb3JMaW5lKToKKyAgICAgICAgKiBsYXlvdXQv
aW50ZWdyYXRpb24vSW5saW5lSXRlcmF0b3JCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5s
aW5lSXRlcmF0b3I6OkxlYWZCb3hJdGVyYXRvcjo6dHJhdmVyc2VQcmV2aW91c09uTGluZUlnbm9y
aW5nTGluZUJyZWFrKToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpMZWFmQm94
SXRlcmF0b3I6OnRyYXZlcnNlTmV4dE9uTGluZUluTG9naWNhbE9yZGVyKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpMZWFmQm94SXRlcmF0b3I6OnRyYXZlcnNl
UHJldmlvdXNPbkxpbmVJbkxvZ2ljYWxPcmRlcik6IERlbGV0ZWQuCisgICAgICAgICogbGF5b3V0
L2ludGVncmF0aW9uL0lubGluZUl0ZXJhdG9yQm94Lmg6CisgICAgICAgIChXZWJDb3JlOjpJbmxp
bmVJdGVyYXRvcjo6Qm94SXRlcmF0b3I6OkJveEl0ZXJhdG9yKToKKyAgICAgICAgKiBsYXlvdXQv
aW50ZWdyYXRpb24vSW5saW5lSXRlcmF0b3JCb3hMZWdhY3lQYXRoLmg6CisgICAgICAgIChXZWJD
b3JlOjpJbmxpbmVJdGVyYXRvcjo6Qm94TGVnYWN5UGF0aDo6Qm94TGVnYWN5UGF0aCk6CisgICAg
ICAgIChXZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6Qm94TGVnYWN5UGF0aDo6dHJhdmVyc2VOZXh0
T25MaW5lSW5Mb2dpY2FsT3JkZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW5saW5l
SXRlcmF0b3I6OkJveExlZ2FjeVBhdGg6OnRyYXZlcnNlUHJldmlvdXNPbkxpbmVJbkxvZ2ljYWxP
cmRlcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6Qm94TGVn
YWN5UGF0aDo6aW5pdGlhbGl6ZUxvZ2ljYWxPcmRlckNhY2hlRm9yTGluZSk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6Qm94TGVnYWN5UGF0aDo6dHJhdmVyc2VO
ZXh0SW5saW5lQm94SW5DYWNoZU9yZGVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Oklu
bGluZUl0ZXJhdG9yOjpCb3hMZWdhY3lQYXRoOjp0cmF2ZXJzZVByZXZpb3VzSW5saW5lQm94SW5D
YWNoZU9yZGVyKTogRGVsZXRlZC4KKyAgICAgICAgKiBsYXlvdXQvaW50ZWdyYXRpb24vSW5saW5l
SXRlcmF0b3JCb3hNb2Rlcm5QYXRoLmg6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVyYXRv
cjo6Qm94TW9kZXJuUGF0aDo6dHJhdmVyc2VOZXh0T25MaW5lSW5Mb2dpY2FsT3JkZXIpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRlcmF0b3I6OkJveE1vZGVyblBhdGg6OnRy
YXZlcnNlUHJldmlvdXNPbkxpbmVJbkxvZ2ljYWxPcmRlcik6IERlbGV0ZWQuCisgICAgICAgICog
bGF5b3V0L2ludGVncmF0aW9uL0lubGluZUl0ZXJhdG9yTGluZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJbmxpbmVJdGVyYXRvcjo6TGluZTo6bG9naWNhbFN0YXJ0UnVuIGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpMaW5lOjpsb2dpY2FsRW5kUnVu
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpMaW5l
Ojpsb2dpY2FsU3RhcnRSdW5XaXRoTm9kZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpJbmxpbmVJdGVyYXRvcjo6TGluZTo6bG9naWNhbEVuZFJ1bldpdGhOb2RlIGNvbnN0KTog
RGVsZXRlZC4KKyAgICAgICAgKiBsYXlvdXQvaW50ZWdyYXRpb24vSW5saW5lSXRlcmF0b3JMaW5l
Lmg6CisgICAgICAgICogbGF5b3V0L2ludGVncmF0aW9uL0lubGluZUl0ZXJhdG9yTGluZUxlZ2Fj
eVBhdGguaDoKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpMaW5lSXRlcmF0b3JM
ZWdhY3lQYXRoOjpsb2dpY2FsU3RhcnRSdW4gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6SW5saW5lSXRlcmF0b3I6OkxpbmVJdGVyYXRvckxlZ2FjeVBhdGg6OmxvZ2ljYWxFbmRS
dW4gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIGxheW91dC9pbnRlZ3JhdGlvbi9JbmxpbmVJ
dGVyYXRvckxpbmVNb2Rlcm5QYXRoLmg6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVyYXRv
cjo6TGluZUl0ZXJhdG9yTW9kZXJuUGF0aDo6bG9naWNhbFN0YXJ0UnVuIGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpMaW5lSXRlcmF0b3JNb2Rlcm5Q
YXRoOjpsb2dpY2FsRW5kUnVuIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBsYXlvdXQvaW50
ZWdyYXRpb24vSW5saW5lSXRlcmF0b3JMb2dpY2FsT3JkZXJUcmF2ZXJzYWwuY3BwOiBBZGRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjptYWtlVGV4dExvZ2ljYWxPcmRlckNh
Y2hlSWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRlcmF0b3I6OnVwZGF0ZVRl
eHRMb2dpY2FsT3JkZXJDYWNoZUlmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0
ZXJhdG9yOjpmaXJzdFRleHRCb3hJbkxvZ2ljYWxPcmRlckZvcik6CisgICAgICAgIChXZWJDb3Jl
OjpJbmxpbmVJdGVyYXRvcjo6bmV4dFRleHRCb3hJbkxvZ2ljYWxPcmRlcik6CisgICAgICAgIChX
ZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6bWFrZUxpbmVMb2dpY2FsT3JkZXJDYWNoZUlmTmVlZGVk
KToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjp1cGRhdGVMaW5lTG9naWNhbE9y
ZGVyQ2FjaGVJZk5lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6Zmly
c3RMZWFmT25MaW5lSW5Mb2dpY2FsT3JkZXIpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRl
cmF0b3I6Omxhc3RMZWFmT25MaW5lSW5Mb2dpY2FsT3JkZXIpOgorICAgICAgICAoV2ViQ29yZTo6
SW5saW5lSXRlcmF0b3I6Om5leHRMZWFmT25MaW5lSW5Mb2dpY2FsT3JkZXIpOgorICAgICAgICAo
V2ViQ29yZTo6SW5saW5lSXRlcmF0b3I6OnByZXZpb3VzTGVhZk9uTGluZUluTG9naWNhbE9yZGVy
KToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpmaXJzdExlYWZPbkxpbmVJbkxv
Z2ljYWxPcmRlcldpdGhOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjps
YXN0TGVhZk9uTGluZUluTG9naWNhbE9yZGVyV2l0aE5vZGUpOgorICAgICAgICAqIGxheW91dC9p
bnRlZ3JhdGlvbi9JbmxpbmVJdGVyYXRvckxvZ2ljYWxPcmRlclRyYXZlcnNhbC5oOiBBZGRlZC4K
KyAgICAgICAgKiBsYXlvdXQvaW50ZWdyYXRpb24vSW5saW5lSXRlcmF0b3JUZXh0Qm94LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpmaXJzdFRleHRCb3hJbkxvZ2ljYWxP
cmRlckZvcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6bmV4
dFRleHRCb3hJbkxvZ2ljYWxPcmRlcik6IERlbGV0ZWQuCisgICAgICAgICogbGF5b3V0L2ludGVn
cmF0aW9uL0lubGluZUl0ZXJhdG9yVGV4dEJveC5oOgorICAgICAgICAoKTogRGVsZXRlZC4KKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckJsb2NrRmxvdzo6cG9zaXRpb25Gb3JQb2ludFdpdGhJbmxpbmVDaGlsZHJlbik6Cisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwOgorCiAyMDIxLTEwLTE0ICBZb3Vlbm4g
RmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBNZWRpYUNhcGFiaWxpdGllcyBz
aG91bGQgZW5xdWV1ZSBhIHRhc2sgdG8gcmVzb2x2ZSBwcm9taXNlcwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UK
aW5kZXggYjA2NTdlMWNjOWRlNTliMDkyOTg1OWQ0OTE3MmVmMTljZmQ4ZTYzMS4uNGNlNTUxY2Nk
MDM1ZDFiNTcwNjNlZjQxMjRmM2JjZWNkMmI3MjFlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvSGVhZGVycy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCkBAIC04
MDcsNiArODA3LDcgQEAgc2V0KFdlYkNvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogICAg
IGxheW91dC9pbnRlZ3JhdGlvbi9JbmxpbmVJdGVyYXRvckxpbmUuaAogICAgIGxheW91dC9pbnRl
Z3JhdGlvbi9JbmxpbmVJdGVyYXRvckxpbmVMZWdhY3lQYXRoLmgKICAgICBsYXlvdXQvaW50ZWdy
YXRpb24vSW5saW5lSXRlcmF0b3JMaW5lTW9kZXJuUGF0aC5oCisgICAgbGF5b3V0L2ludGVncmF0
aW9uL0lubGluZUl0ZXJhdG9yTG9naWNhbE9yZGVyVHJhdmVyc2FsLmgKICAgICBsYXlvdXQvaW50
ZWdyYXRpb24vSW5saW5lSXRlcmF0b3JUZXh0Qm94LmgKICAgICBsYXlvdXQvaW50ZWdyYXRpb24v
TGF5b3V0SW50ZWdyYXRpb25JbmxpbmVDb250ZW50LmgKICAgICBsYXlvdXQvaW50ZWdyYXRpb24v
TGF5b3V0SW50ZWdyYXRpb25MaW5lLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJj
ZXMudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXggMjU3MjYxOTBjOTFhZTM4
N2RlM2Q0MWVjYjBhOTY5NjlmZGU2YWUxZS4uYzNlMjU4N2U2Y2NmYzEyYzBlOTMzMzE2ZjNlMmQ0
NDUyOGUxNjZmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIv
U291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKQEAgLTE1MjIsNiArMTUyMiw3IEBAIGxheW91dC9m
b3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL3RleHQvVGV4dFV0aWwuY3BwCiBsYXlvdXQvaW50ZWdy
YXRpb24vSW5saW5lSXRlcmF0b3JCb3guY3BwCiBsYXlvdXQvaW50ZWdyYXRpb24vSW5saW5lSXRl
cmF0b3JJbmxpbmVCb3guY3BwCiBsYXlvdXQvaW50ZWdyYXRpb24vSW5saW5lSXRlcmF0b3JMaW5l
LmNwcAorbGF5b3V0L2ludGVncmF0aW9uL0lubGluZUl0ZXJhdG9yTG9naWNhbE9yZGVyVHJhdmVy
c2FsLmNwcAogbGF5b3V0L2ludGVncmF0aW9uL0lubGluZUl0ZXJhdG9yVGV4dEJveC5jcHAKIGxh
eW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbkJveFRyZWUuY3BwCiBsYXlvdXQvaW50
ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25Db3ZlcmFnZS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBhMTIzNmVmZWI3MzA4
ZDUzOTBlNWY4Y2UwZDI3Njk0ZGE0MTJkMTllLi45MGMzNWQ5YzY5ZmRlYTVjZjYwMDQxMzE1MGNm
YTYwYjNlNmMyNDQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCkBAIC01MjUyLDYgKzUyNTIsNyBAQAogCQlFNDE1RUIxMzI3MEMzNTEz
MDBFOERBMUIgLyogSW5saW5lSXRlcmF0b3JJbmxpbmVCb3guaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0MTVFQjExMjcwQzM1MTIwMEU4REExQiAvKiBJ
bmxpbmVJdGVyYXRvcklubGluZUJveC5oICovOyB9OwogCQlFNDE4MDI1NTIzRDQ1NDlCMDBGRkIw
NzEgLyogTGF5b3V0SW50ZWdyYXRpb25Cb3hUcmVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNDE4MDI1MzIzRDQ1NDlBMDBGRkIwNzEgLyogTGF5b3V0
SW50ZWdyYXRpb25Cb3hUcmVlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJRTQxOTA0MUYxQ0M2NDg2QjAwQzM1RjVEIC8qIEZvbnRTZWxlY3RvckNs
aWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTQx
OTA0MUUxQ0M2NDg2QjAwQzM1RjVEIC8qIEZvbnRTZWxlY3RvckNsaWVudC5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUU0MUFDQzE2MjcxNzM0MDIw
MDNFOTE1NyAvKiBJbmxpbmVJdGVyYXRvckxvZ2ljYWxPcmRlclRyYXZlcnNhbC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTQxQUNDMTUyNzE3MzQwMjAw
M0U5MTU3IC8qIElubGluZUl0ZXJhdG9yTG9naWNhbE9yZGVyVHJhdmVyc2FsLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTQyMDUwMTcyMTQxOTAx
QjAwNjZFRjNCIC8qIFByb2Nlc3NXYXJtaW5nLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBFNDIwNTAxNDIxNDE5MDFBMDA2NkVGM0IgLyogUHJvY2Vzc1dh
cm1pbmcuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQlFNDI0QTM5RTEzMzBERjAxMDBDRjZEQzkgLyogTGVnYWN5VGlsZUdyaWRUaWxlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNDI0QTM5RDEzMzBERjAx
MDBDRjZEQzkgLyogTGVnYWN5VGlsZUdyaWRUaWxlLmggKi87IH07CiAJCUU0MjVBNDlBMTgyOTJC
ODQwMDIwQ0ZDRiAvKiBDb2xsZWN0aW9uSW5kZXhDYWNoZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTQyNUE0OTkxODI5MkI4NDAwMjBDRkNGIC8qIENv
bGxlY3Rpb25JbmRleENhY2hlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKQEAgLTUzNTAsNyArNTM1MSw3IEBACiAJCUU0QzkxQTBFMTgwMjM0MzEwMEEx
N0Y2RCAvKiBUZXh0UGFpbnRTdHlsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRTRDOTFBMEQxODAyMzQzMTAwQTE3RjZEIC8qIFRleHRQYWludFN0eWxl
LmggKi87IH07CiAJCUU0QzkxQTE2MTgwOTk5RjEwMEExN0Y2RCAvKiBSZW5kZXJUZXh0TGluZUJv
eGVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNEM5
MUExNTE4MDk5OUYxMDBBMTdGNkQgLyogUmVuZGVyVGV4dExpbmVCb3hlcy5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUU0RDMzRjNCMjUyQUVFQ0Qw
MDgzN0QwNSAvKiBJbmxpbmVSdW5BbmRPZmZzZXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0RDMzRjM5MjUyQUVFQ0MwMDgzN0QwNSAvKiBJbmxpbmVS
dW5BbmRPZmZzZXQuaCAqLzsgfTsKLQkJRTREMzNGNDEyNTJDNEI4MzAwODM3RDA1IC8qIElubGlu
ZUl0ZXJhdG9yTGluZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRTREMzNGM0YyNTJDNEI4MjAwODM3RDA1IC8qIElubGluZUl0ZXJhdG9yTGluZS5oICov
OyB9OworCQlFNEQzM0Y0MTI1MkM0QjgzMDA4MzdEMDUgLyogSW5saW5lSXRlcmF0b3JMaW5lLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNEQzM0YzRjI1
MkM0QjgyMDA4MzdEMDUgLyogSW5saW5lSXRlcmF0b3JMaW5lLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTREMzNGNDQyNTJDNTBFMjAwODM3RDA1
IC8qIElubGluZUl0ZXJhdG9yTGluZUxlZ2FjeVBhdGguaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0RDMzRjQzMjUyQzUwRTIwMDgzN0QwNSAvKiBJbmxp
bmVJdGVyYXRvckxpbmVMZWdhY3lQYXRoLmggKi87IH07CiAJCUU0RDMzRjQ2MjUyQzUwRkMwMDgz
N0QwNSAvKiBJbmxpbmVJdGVyYXRvckxpbmVNb2Rlcm5QYXRoLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNEQzM0Y0NTI1MkM1MEZCMDA4MzdEMDUgLyog
SW5saW5lSXRlcmF0b3JMaW5lTW9kZXJuUGF0aC5oICovOyB9OwogCQlFNEQ1OEVCNTE3QjREQkRD
MDBDQkRDQTggLyogU3R5bGVSZXNvbHZlRm9yRG9jdW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0RDU4RUIzMTdCNERCREMwMENCRENBOCAvKiBT
dHlsZVJlc29sdmVGb3JEb2N1bWVudC5oICovOyB9OwpAQCAtMTY1MzQsNiArMTY1MzUsOCBAQAog
CQlFNDE4MDI1MzIzRDQ1NDlBMDBGRkIwNzEgLyogTGF5b3V0SW50ZWdyYXRpb25Cb3hUcmVlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExheW91dEludGVncmF0aW9uQm94VHJl
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFNDE4MDI1NjIzRDQ1NEI1MDBGRkIw
NzEgLyogTGF5b3V0SW50ZWdyYXRpb25Cb3hUcmVlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IExh
eW91dEludGVncmF0aW9uQm94VHJlZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUU0MTkwNDFFMUNDNjQ4NkIwMEMzNUY1RCAvKiBGb250U2VsZWN0b3JDbGllbnQuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRm9udFNlbGVjdG9yQ2xpZW50Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUU0MUFDQzEyMjcxNzMzRjMwMDNFOTE1NyAvKiBJbmxpbmVJ
dGVyYXRvckxvZ2ljYWxPcmRlclRyYXZlcnNhbC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBJbmxpbmVJdGVyYXRvckxvZ2ljYWxPcmRlclRyYXZlcnNhbC5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUU0MUFDQzE1MjcxNzM0MDIwMDNFOTE1NyAvKiBJ
bmxpbmVJdGVyYXRvckxvZ2ljYWxPcmRlclRyYXZlcnNhbC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBJbmxpbmVJdGVyYXRvckxvZ2ljYWxPcmRlclRyYXZlcnNhbC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFNDFFQTAzODExOTgzNkRCMDA3MTBCQzUgLyogQ1NT
UHJvcGVydHlOYW1lcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBD
U1NQcm9wZXJ0eU5hbWVzLmNwcDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYkNvcmUvQ1NTUHJv
cGVydHlOYW1lcy5jcHA7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCUU0
MUVBMDM5MTE5ODM3NDkwMDcxMEJDNSAvKiBDU1NWYWx1ZUtleXdvcmRzLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IENTU1ZhbHVlS2V5d29yZHMuY3BwOyBwYXRoID0g
RGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9DU1NWYWx1ZUtleXdvcmRzLmNwcDsgc291cmNlVHJlZSA9
IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJRTQyMDUwMTQyMTQxOTAxQTAwNjZFRjNCIC8qIFBy
b2Nlc3NXYXJtaW5nLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFByb2Nlc3NX
YXJtaW5nLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yOTcwNyw2ICsyOTcxMCw4
IEBACiAJCQkJRTREMzNGM0YyNTJDNEI4MjAwODM3RDA1IC8qIElubGluZUl0ZXJhdG9yTGluZS5o
ICovLAogCQkJCUU0RDMzRjQzMjUyQzUwRTIwMDgzN0QwNSAvKiBJbmxpbmVJdGVyYXRvckxpbmVM
ZWdhY3lQYXRoLmggKi8sCiAJCQkJRTREMzNGNDUyNTJDNTBGQjAwODM3RDA1IC8qIElubGluZUl0
ZXJhdG9yTGluZU1vZGVyblBhdGguaCAqLywKKwkJCQlFNDFBQ0MxMjI3MTczM0YzMDAzRTkxNTcg
LyogSW5saW5lSXRlcmF0b3JMb2dpY2FsT3JkZXJUcmF2ZXJzYWwuY3BwICovLAorCQkJCUU0MUFD
QzE1MjcxNzM0MDIwMDNFOTE1NyAvKiBJbmxpbmVJdGVyYXRvckxvZ2ljYWxPcmRlclRyYXZlcnNh
bC5oICovLAogCQkJCUU0N0NFQkRFMjcwOTkxNjQwMEI4RDhGNSAvKiBJbmxpbmVJdGVyYXRvclRl
eHRCb3guY3BwICovLAogCQkJCUU0N0NFQkUwMjcwOTkxNkQwMEI4RDhGNSAvKiBJbmxpbmVJdGVy
YXRvclRleHRCb3guaCAqLywKIAkJCQlFNDE4MDI1NjIzRDQ1NEI1MDBGRkIwNzEgLyogTGF5b3V0
SW50ZWdyYXRpb25Cb3hUcmVlLmNwcCAqLywKQEAgLTMzMjQ4LDYgKzMzMjUzLDcgQEAKIAkJCQlF
NEQzM0Y0MTI1MkM0QjgzMDA4MzdEMDUgLyogSW5saW5lSXRlcmF0b3JMaW5lLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlFNEQzM0Y0NDI1MkM1MEUyMDA4MzdEMDUgLyogSW5saW5lSXRlcmF0b3JMaW5l
TGVnYWN5UGF0aC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTREMzNGNDYyNTJDNTBGQzAwODM3RDA1
IC8qIElubGluZUl0ZXJhdG9yTGluZU1vZGVyblBhdGguaCBpbiBIZWFkZXJzICovLAorCQkJCUU0
MUFDQzE2MjcxNzM0MDIwMDNFOTE1NyAvKiBJbmxpbmVJdGVyYXRvckxvZ2ljYWxPcmRlclRyYXZl
cnNhbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTQ3Q0VCRTEyNzA5OTE2RDAwQjhEOEY1IC8qIElu
bGluZUl0ZXJhdG9yVGV4dEJveC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNkZBQUU3MTMyNkEyODE0
QjAwRTA3NTAyIC8qIElubGluZUxldmVsQm94LmggaW4gSGVhZGVycyAqLywKIAkJCQk2RjBDRDY5
NTIyOUVEMzI3MDBDNTk5NEUgLyogSW5saW5lTGluZS5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vUG9zaXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvZG9t
L1Bvc2l0aW9uLmNwcAppbmRleCAzMjY1NjNkNTA4NWNjZTA0MzRiNzc1NTg2MjQ4YTRjNTNiZmZi
YzJhLi4yYzMwZGMzMjY3ZjNkZjc3Mjk1MTQyNDYzOWVjMzM1ZWU2NmFkZjUxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vUG9zaXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Qb3NpdGlvbi5jcHAKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlICJIVE1MUGFyc2VySWRp
b21zLmgiCiAjaW5jbHVkZSAiSFRNTFRhYmxlRWxlbWVudC5oIgogI2luY2x1ZGUgIklubGluZUl0
ZXJhdG9yTGluZS5oIgorI2luY2x1ZGUgIklubGluZUl0ZXJhdG9yTG9naWNhbE9yZGVyVHJhdmVy
c2FsLmgiCiAjaW5jbHVkZSAiSW5saW5lSXRlcmF0b3JUZXh0Qm94LmgiCiAjaW5jbHVkZSAiSW5s
aW5lUnVuQW5kT2Zmc2V0LmgiCiAjaW5jbHVkZSAiTGVnYWN5SW5saW5lVGV4dEJveC5oIgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcAppbmRleCBj
NWU4NWIxODhkOGQ4YTY3YWRiMzVmMzg0YTliYmJjMTExMDZlMTI0Li45ZGJhMjE4MmFmNDkyYTM4
NWYzNjk5ZTBkOGYzYzY5MGU0MzY2N2I2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcApAQCAtNDgsNiArNDgsNyBAQAogI2luY2x1ZGUgIkhU
TUxOYW1lcy5oIgogI2luY2x1ZGUgIkhUTUxTcGFuRWxlbWVudC5oIgogI2luY2x1ZGUgIklubGlu
ZUl0ZXJhdG9yQm94LmgiCisjaW5jbHVkZSAiSW5saW5lSXRlcmF0b3JMb2dpY2FsT3JkZXJUcmF2
ZXJzYWwuaCIKICNpbmNsdWRlICJJbnNlcnRJbnRvVGV4dE5vZGVDb21tYW5kLmgiCiAjaW5jbHVk
ZSAiSW5zZXJ0TGluZUJyZWFrQ29tbWFuZC5oIgogI2luY2x1ZGUgIkluc2VydE5vZGVCZWZvcmVD
b21tYW5kLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRv
ci5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuaAppbmRleCBlZjIzYWRl
MGFjMTYwYjA2N2FiOTU3N2M0MmZkYmE4Y2QyNmE5MWM2Li5hYjc3ZjQyMDZlYmEwNDM1MmYwZDUw
ZmUxMjJiMTdlZTFlNGI4YzFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Rl
eHRJdGVyYXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmgK
QEAgLTI3LDYgKzI3LDcgQEAKIAogI2luY2x1ZGUgIkNoYXJhY3RlclJhbmdlLmgiCiAjaW5jbHVk
ZSAiRmluZE9wdGlvbnMuaCIKKyNpbmNsdWRlICJJbmxpbmVJdGVyYXRvckxvZ2ljYWxPcmRlclRy
YXZlcnNhbC5oIgogI2luY2x1ZGUgIklubGluZUl0ZXJhdG9yVGV4dEJveC5oIgogI2luY2x1ZGUg
IlNpbXBsZVJhbmdlLmgiCiAjaW5jbHVkZSAiVGV4dEl0ZXJhdG9yQmVoYXZpb3IuaCIKQEAgLTE1
MSwxMSArMTUyLDExIEBAIHByaXZhdGU6CiAgICAgLy8gVXNlZCB3aGVuIHRoZXJlIGlzIHN0aWxs
IHNvbWUgcGVuZGluZyB0ZXh0IGZyb20gdGhlIGN1cnJlbnQgbm9kZTsgd2hlbiB0aGVzZSBhcmUg
ZmFsc2UgYW5kIG51bGwsIHdlIGdvIGJhY2sgdG8gbm9ybWFsIGl0ZXJhdGluZy4KICAgICBOb2Rl
KiBtX25vZGVGb3JBZGRpdGlvbmFsTmV3bGluZSB7IG51bGxwdHIgfTsKICAgICBJbmxpbmVJdGVy
YXRvcjo6VGV4dEJveEl0ZXJhdG9yIG1fdGV4dFJ1bjsKLSAgICBJbmxpbmVJdGVyYXRvcjo6TG9n
aWNhbE9yZGVyQ2FjaGUgbV90ZXh0UnVuTG9naWNhbE9yZGVyQ2FjaGU7CisgICAgSW5saW5lSXRl
cmF0b3I6OlRleHRMb2dpY2FsT3JkZXJDYWNoZSBtX3RleHRSdW5Mb2dpY2FsT3JkZXJDYWNoZTsK
IAogICAgIC8vIFVzZWQgd2hlbiBpdGVyYXRpbmcgb3ZlciA6Zmlyc3QtbGV0dGVyIHRleHQgdG8g
c2F2ZSBwb2ludGVyIHRvIHJlbWFpbmluZyB0ZXh0IGJveC4KICAgICBJbmxpbmVJdGVyYXRvcjo6
VGV4dEJveEl0ZXJhdG9yIG1fcmVtYWluaW5nVGV4dFJ1bjsKLSAgICBJbmxpbmVJdGVyYXRvcjo6
TG9naWNhbE9yZGVyQ2FjaGUgbV9yZW1haW5pbmdUZXh0UnVuTG9naWNhbE9yZGVyQ2FjaGU7Cisg
ICAgSW5saW5lSXRlcmF0b3I6OlRleHRMb2dpY2FsT3JkZXJDYWNoZSBtX3JlbWFpbmluZ1RleHRS
dW5Mb2dpY2FsT3JkZXJDYWNoZTsKIAogICAgIC8vIFVzZWQgdG8gcG9pbnQgdG8gUmVuZGVyVGV4
dCBvYmplY3QgZm9yIDpmaXJzdC1sZXR0ZXIuCiAgICAgUmVuZGVyVGV4dCogbV9maXJzdExldHRl
clRleHQgeyBudWxscHRyIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zp
c2libGVQb3NpdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVQb3NpdGlv
bi5jcHAKaW5kZXggMjRkYTU1YjNiNDE2MWU5M2VlZmU1MjI2ZTM3ZTY4OTEwMjg1ZmIwOS4uMmMz
ZTA3OGEzMmEyZmVmMjFkYTRmZWNmOWRkYWRiNzE0MmFlZjMzMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlUG9zaXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvVmlzaWJsZVBvc2l0aW9uLmNwcApAQCAtMTIyLDYgKzEyMiw4IEBAIFBvc2l0aW9u
IFZpc2libGVQb3NpdGlvbjo6bGVmdFZpc3VhbGx5RGlzdGluY3RDYW5kaWRhdGUoKSBjb25zdAog
ICAgIFBvc2l0aW9uIGRvd25zdHJlYW1TdGFydCA9IHAuZG93bnN0cmVhbSgpOwogICAgIFRleHRE
aXJlY3Rpb24gcHJpbWFyeURpcmVjdGlvbiA9IHAucHJpbWFyeURpcmVjdGlvbigpOwogCisgICAg
SW5saW5lSXRlcmF0b3I6OkxpbmVMb2dpY2FsT3JkZXJDYWNoZSBvcmRlckNhY2hlOworCiAgICAg
d2hpbGUgKHRydWUpIHsKICAgICAgICAgYXV0byBbcnVuLCBvZmZzZXRdID0gcC5pbmxpbmVSdW5B
bmRPZmZzZXQobV9hZmZpbml0eSwgcHJpbWFyeURpcmVjdGlvbik7CiAgICAgICAgIGlmICghcnVu
KQpAQCAtMTc0LDcgKzE3Niw5IEBAIFBvc2l0aW9uIFZpc2libGVQb3NpdGlvbjo6bGVmdFZpc3Vh
bGx5RGlzdGluY3RDYW5kaWRhdGUoKSBjb25zdAogCiAgICAgICAgICAgICBpZiAocnVuLT5kaXJl
Y3Rpb24oKSA9PSBwcmltYXJ5RGlyZWN0aW9uKSB7CiAgICAgICAgICAgICAgICAgaWYgKCFwcmV2
aW91c1J1bikgewotICAgICAgICAgICAgICAgICAgICBhdXRvIGxvZ2ljYWxTdGFydCA9IChwcmlt
YXJ5RGlyZWN0aW9uID09IFRleHREaXJlY3Rpb246OkxUUikgPyBydW4tPmxpbmUoKS0+bG9naWNh
bFN0YXJ0UnVuV2l0aE5vZGUoKSA6IHJ1bi0+bGluZSgpLT5sb2dpY2FsRW5kUnVuV2l0aE5vZGUo
KTsKKyAgICAgICAgICAgICAgICAgICAgYXV0byBsb2dpY2FsU3RhcnQgPSBwcmltYXJ5RGlyZWN0
aW9uID09IFRleHREaXJlY3Rpb246OkxUUgorICAgICAgICAgICAgICAgICAgICAgICAgPyBJbmxp
bmVJdGVyYXRvcjo6Zmlyc3RMZWFmT25MaW5lSW5Mb2dpY2FsT3JkZXJXaXRoTm9kZShydW4tPmxp
bmUoKSwgb3JkZXJDYWNoZSkKKyAgICAgICAgICAgICAgICAgICAgICAgIDogSW5saW5lSXRlcmF0
b3I6Omxhc3RMZWFmT25MaW5lSW5Mb2dpY2FsT3JkZXJXaXRoTm9kZShydW4tPmxpbmUoKSwgb3Jk
ZXJDYWNoZSk7CiAgICAgICAgICAgICAgICAgICAgIGlmIChsb2dpY2FsU3RhcnQpIHsKICAgICAg
ICAgICAgICAgICAgICAgICAgIHJ1biA9IGxvZ2ljYWxTdGFydDsKICAgICAgICAgICAgICAgICAg
ICAgICAgIHJlbmRlcmVyID0gJnJ1bi0+cmVuZGVyZXIoKTsKQEAgLTI4NCw2ICsyODgsOCBAQCBQ
b3NpdGlvbiBWaXNpYmxlUG9zaXRpb246OnJpZ2h0VmlzdWFsbHlEaXN0aW5jdENhbmRpZGF0ZSgp
IGNvbnN0CiAgICAgUG9zaXRpb24gZG93bnN0cmVhbVN0YXJ0ID0gcC5kb3duc3RyZWFtKCk7CiAg
ICAgVGV4dERpcmVjdGlvbiBwcmltYXJ5RGlyZWN0aW9uID0gcC5wcmltYXJ5RGlyZWN0aW9uKCk7
CiAKKyAgICBJbmxpbmVJdGVyYXRvcjo6TGluZUxvZ2ljYWxPcmRlckNhY2hlIG9yZGVyQ2FjaGU7
CisKICAgICB3aGlsZSAodHJ1ZSkgewogICAgICAgICBhdXRvIFtydW4sIG9mZnNldF0gPSBwLmlu
bGluZVJ1bkFuZE9mZnNldChtX2FmZmluaXR5LCBwcmltYXJ5RGlyZWN0aW9uKTsKICAgICAgICAg
aWYgKCFydW4pCkBAIC0zMzYsNyArMzQyLDEwIEBAIFBvc2l0aW9uIFZpc2libGVQb3NpdGlvbjo6
cmlnaHRWaXN1YWxseURpc3RpbmN0Q2FuZGlkYXRlKCkgY29uc3QKIAogICAgICAgICAgICAgaWYg
KHJ1bi0+ZGlyZWN0aW9uKCkgPT0gcHJpbWFyeURpcmVjdGlvbikgewogICAgICAgICAgICAgICAg
IGlmICghbmV4dFJ1bikgewotICAgICAgICAgICAgICAgICAgICBhdXRvIGxvZ2ljYWxFbmQgPSBw
cmltYXJ5RGlyZWN0aW9uID09IFRleHREaXJlY3Rpb246OkxUUiA/IHJ1bi0+bGluZSgpLT5sb2dp
Y2FsRW5kUnVuV2l0aE5vZGUoKSA6IHJ1bi0+bGluZSgpLT5sb2dpY2FsU3RhcnRSdW5XaXRoTm9k
ZSgpOworICAgICAgICAgICAgICAgICAgICBhdXRvIGxvZ2ljYWxFbmQgPSBwcmltYXJ5RGlyZWN0
aW9uID09IFRleHREaXJlY3Rpb246OkxUUgorICAgICAgICAgICAgICAgICAgICAgICAgPyBJbmxp
bmVJdGVyYXRvcjo6bGFzdExlYWZPbkxpbmVJbkxvZ2ljYWxPcmRlcldpdGhOb2RlKHJ1bi0+bGlu
ZSgpLCBvcmRlckNhY2hlKQorICAgICAgICAgICAgICAgICAgICAgICAgOiBJbmxpbmVJdGVyYXRv
cjo6Zmlyc3RMZWFmT25MaW5lSW5Mb2dpY2FsT3JkZXJXaXRoTm9kZShydW4tPmxpbmUoKSwgb3Jk
ZXJDYWNoZSk7CisKICAgICAgICAgICAgICAgICAgICAgaWYgKGxvZ2ljYWxFbmQpIHsKICAgICAg
ICAgICAgICAgICAgICAgICAgIHJ1biA9IGxvZ2ljYWxFbmQ7CiAgICAgICAgICAgICAgICAgICAg
ICAgICByZW5kZXJlciA9ICZydW4tPnJlbmRlcmVyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL1Zpc2libGVVbml0cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zp
c2libGVVbml0cy5jcHAKaW5kZXggOTM4Nzg4ODNjZThkNWY3MDdiNzNiMDJkODc2MDRjODVjZWRj
ZmFlYi4uNmMwMjRiZTM1NDg1OWYwY2M3NzBmMTE5ZWY5ZTcxYmJhNWQ0YWQ3NiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlVW5pdHMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVVuaXRzLmNwcApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1
ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIklubGluZUl0ZXJhdG9yQm94LmgiCiAjaW5jbHVk
ZSAiSW5saW5lSXRlcmF0b3JMaW5lLmgiCisjaW5jbHVkZSAiSW5saW5lSXRlcmF0b3JMb2dpY2Fs
T3JkZXJUcmF2ZXJzYWwuaCIKICNpbmNsdWRlICJJbmxpbmVSdW5BbmRPZmZzZXQuaCIKICNpbmNs
dWRlICJOb2RlVHJhdmVyc2FsLmgiCiAjaW5jbHVkZSAiUmFuZ2UuaCIKQEAgLTEyOSw1MCArMTMw
LDUwIEBAIHN0YXRpYyBib29sIGlzVGV4dE9yTGluZUJyZWFrUnVuKElubGluZUl0ZXJhdG9yOjpM
ZWFmQm94SXRlcmF0b3IgcnVuKQogICAgIHJldHVybiBydW4gJiYgKHJ1bi0+aXNUZXh0KCkgfHwg
cnVuLT5yZW5kZXJlcigpLmlzQlIoKSk7CiB9CiAKLXN0YXRpYyBJbmxpbmVJdGVyYXRvcjo6TGVh
ZkJveEl0ZXJhdG9yIHByZXZpb3VzVGV4dE9yTGluZUJyZWFrUnVuKElubGluZUl0ZXJhdG9yOjpM
ZWFmQm94SXRlcmF0b3IgcnVuKQorc3RhdGljIElubGluZUl0ZXJhdG9yOjpMZWFmQm94SXRlcmF0
b3IgcHJldmlvdXNUZXh0T3JMaW5lQnJlYWtSdW4oSW5saW5lSXRlcmF0b3I6OkxlYWZCb3hJdGVy
YXRvciBydW4sIElubGluZUl0ZXJhdG9yOjpMaW5lTG9naWNhbE9yZGVyQ2FjaGUmIG9yZGVyQ2Fj
aGUpCiB7CiAgICAgd2hpbGUgKHJ1bikgewotICAgICAgICBydW4udHJhdmVyc2VQcmV2aW91c09u
TGluZUluTG9naWNhbE9yZGVyKCk7CisgICAgICAgIHJ1biA9IElubGluZUl0ZXJhdG9yOjpwcmV2
aW91c0xlYWZPbkxpbmVJbkxvZ2ljYWxPcmRlcihydW4sIG9yZGVyQ2FjaGUpOwogICAgICAgICBp
ZiAoaXNUZXh0T3JMaW5lQnJlYWtSdW4ocnVuKSkKICAgICAgICAgICAgIHJldHVybiBydW47CiAg
ICAgfQogICAgIHJldHVybiB7IH07CiB9CiAKLXN0YXRpYyBJbmxpbmVJdGVyYXRvcjo6TGVhZkJv
eEl0ZXJhdG9yIG5leHRUZXh0T3JMaW5lQnJlYWtSdW4oSW5saW5lSXRlcmF0b3I6OkxlYWZCb3hJ
dGVyYXRvciBydW4pCitzdGF0aWMgSW5saW5lSXRlcmF0b3I6OkxlYWZCb3hJdGVyYXRvciBuZXh0
VGV4dE9yTGluZUJyZWFrUnVuKElubGluZUl0ZXJhdG9yOjpMZWFmQm94SXRlcmF0b3IgcnVuLCBJ
bmxpbmVJdGVyYXRvcjo6TGluZUxvZ2ljYWxPcmRlckNhY2hlJiBvcmRlckNhY2hlKQogewogICAg
IHdoaWxlIChydW4pIHsKLSAgICAgICAgcnVuLnRyYXZlcnNlTmV4dE9uTGluZUluTG9naWNhbE9y
ZGVyKCk7CisgICAgICAgIHJ1biA9IElubGluZUl0ZXJhdG9yOjpuZXh0TGVhZk9uTGluZUluTG9n
aWNhbE9yZGVyKHJ1biwgb3JkZXJDYWNoZSk7CiAgICAgICAgIGlmIChpc1RleHRPckxpbmVCcmVh
a1J1bihydW4pKQogICAgICAgICAgICAgcmV0dXJuIHJ1bjsKICAgICB9CiAgICAgcmV0dXJuIHsg
fTsKIH0KIAotc3RhdGljIElubGluZUl0ZXJhdG9yOjpMZWFmQm94SXRlcmF0b3Igc3RhcnRUZXh0
T3JMaW5lQnJlYWtSdW4oSW5saW5lSXRlcmF0b3I6OkxpbmVJdGVyYXRvciBsaW5lKQorc3RhdGlj
IElubGluZUl0ZXJhdG9yOjpMZWFmQm94SXRlcmF0b3Igc3RhcnRUZXh0T3JMaW5lQnJlYWtSdW4o
SW5saW5lSXRlcmF0b3I6OkxpbmVJdGVyYXRvciBsaW5lLCBJbmxpbmVJdGVyYXRvcjo6TGluZUxv
Z2ljYWxPcmRlckNhY2hlJiBvcmRlckNhY2hlKQogewotICAgIGF1dG8gcnVuID0gbGluZS0+bG9n
aWNhbFN0YXJ0UnVuKCk7CisgICAgYXV0byBydW4gPSBJbmxpbmVJdGVyYXRvcjo6Zmlyc3RMZWFm
T25MaW5lSW5Mb2dpY2FsT3JkZXIobGluZSwgb3JkZXJDYWNoZSk7CiAgICAgaWYgKGlzVGV4dE9y
TGluZUJyZWFrUnVuKHJ1bikpCiAgICAgICAgIHJldHVybiBydW47Ci0gICAgcmV0dXJuIG5leHRU
ZXh0T3JMaW5lQnJlYWtSdW4ocnVuKTsKKyAgICByZXR1cm4gbmV4dFRleHRPckxpbmVCcmVha1J1
bihydW4sIG9yZGVyQ2FjaGUpOwogfQogCi1zdGF0aWMgSW5saW5lSXRlcmF0b3I6OkxlYWZCb3hJ
dGVyYXRvciBlbmRUZXh0T3JMaW5lQnJlYWtSdW4oSW5saW5lSXRlcmF0b3I6OkxpbmVJdGVyYXRv
ciBsaW5lKQorc3RhdGljIElubGluZUl0ZXJhdG9yOjpMZWFmQm94SXRlcmF0b3IgZW5kVGV4dE9y
TGluZUJyZWFrUnVuKElubGluZUl0ZXJhdG9yOjpMaW5lSXRlcmF0b3IgbGluZSwgSW5saW5lSXRl
cmF0b3I6OkxpbmVMb2dpY2FsT3JkZXJDYWNoZSYgb3JkZXJDYWNoZSkKIHsKLSAgICBhdXRvIHJ1
biA9IGxpbmUtPmxvZ2ljYWxFbmRSdW4oKTsKKyAgICBhdXRvIHJ1biA9IElubGluZUl0ZXJhdG9y
OjpsYXN0TGVhZk9uTGluZUluTG9naWNhbE9yZGVyKGxpbmUsIG9yZGVyQ2FjaGUpOwogICAgIGlm
IChpc1RleHRPckxpbmVCcmVha1J1bihydW4pKQogICAgICAgICByZXR1cm4gcnVuOwotICAgIHJl
dHVybiBwcmV2aW91c1RleHRPckxpbmVCcmVha1J1bihydW4pOworICAgIHJldHVybiBwcmV2aW91
c1RleHRPckxpbmVCcmVha1J1bihydW4sIG9yZGVyQ2FjaGUpOwogfQogCi1zdGF0aWMgY29uc3Qg
SW5saW5lSXRlcmF0b3I6OkxlYWZCb3hJdGVyYXRvciBsb2dpY2FsbHlQcmV2aW91c1J1bihjb25z
dCBWaXNpYmxlUG9zaXRpb24mIHZpc2libGVQb3NpdGlvbiwgSW5saW5lSXRlcmF0b3I6OkxlYWZC
b3hJdGVyYXRvciBzdGFydFJ1biwgYm9vbCYgcHJldmlvdXNCb3hJbkRpZmZlcmVudExpbmUpCitz
dGF0aWMgY29uc3QgSW5saW5lSXRlcmF0b3I6OkxlYWZCb3hJdGVyYXRvciBsb2dpY2FsbHlQcmV2
aW91c1J1bihjb25zdCBWaXNpYmxlUG9zaXRpb24mIHZpc2libGVQb3NpdGlvbiwgSW5saW5lSXRl
cmF0b3I6OkxlYWZCb3hJdGVyYXRvciBzdGFydFJ1biwgSW5saW5lSXRlcmF0b3I6OkxpbmVMb2dp
Y2FsT3JkZXJDYWNoZSYgb3JkZXJDYWNoZSwgYm9vbCYgcHJldmlvdXNCb3hJbkRpZmZlcmVudExp
bmUpCiB7Ci0gICAgaWYgKGF1dG8gcHJldmlvdXNSdW4gPSBwcmV2aW91c1RleHRPckxpbmVCcmVh
a1J1bihzdGFydFJ1bikpCisgICAgaWYgKGF1dG8gcHJldmlvdXNSdW4gPSBwcmV2aW91c1RleHRP
ckxpbmVCcmVha1J1bihzdGFydFJ1biwgb3JkZXJDYWNoZSkpCiAgICAgICAgIHJldHVybiBwcmV2
aW91c1J1bjsKIAogICAgIGlmIChhdXRvIHByZXZpb3VzTGluZSA9IHN0YXJ0UnVuLT5saW5lKCkt
PnByZXZpb3VzKCkpIHsKICAgICAgICAgLy8gRklYTUU6IFdoeSBpc24ndCBwcmV2aW91c0JveElu
RGlmZmVyZW50TGluZSBzZXQgaGVyZT8KLSAgICAgICAgaWYgKGF1dG8gcHJldmlvdXNSdW4gPSBl
bmRUZXh0T3JMaW5lQnJlYWtSdW4ocHJldmlvdXNMaW5lKSkKKyAgICAgICAgaWYgKGF1dG8gcHJl
dmlvdXNSdW4gPSBlbmRUZXh0T3JMaW5lQnJlYWtSdW4ocHJldmlvdXNMaW5lLCBvcmRlckNhY2hl
KSkKICAgICAgICAgICAgIHJldHVybiBwcmV2aW91c1J1bjsKICAgICB9CiAKQEAgLTE5MSwyNiAr
MTkyLDI2IEBAIHN0YXRpYyBjb25zdCBJbmxpbmVJdGVyYXRvcjo6TGVhZkJveEl0ZXJhdG9yIGxv
Z2ljYWxseVByZXZpb3VzUnVuKGNvbnN0IFZpc2libGVQCiAgICAgICAgICAgICBicmVhazsKIAog
ICAgICAgICBpZiAocHJldmlvdXNMaW5lICE9IHN0YXJ0UnVuLT5saW5lKCkpIHsKLSAgICAgICAg
ICAgIGlmIChhdXRvIHByZXZpb3VzUnVuID0gZW5kVGV4dE9yTGluZUJyZWFrUnVuKHByZXZpb3Vz
TGluZSkpIHsKKyAgICAgICAgICAgIGlmIChhdXRvIHByZXZpb3VzUnVuID0gZW5kVGV4dE9yTGlu
ZUJyZWFrUnVuKHByZXZpb3VzTGluZSwgb3JkZXJDYWNoZSkpIHsKICAgICAgICAgICAgICAgICBw
cmV2aW91c0JveEluRGlmZmVyZW50TGluZSA9IHRydWU7CiAgICAgICAgICAgICAgICAgcmV0dXJu
IHByZXZpb3VzUnVuOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAKLSAgICAgICAgc3RhcnRS
dW4gPSBwcmV2aW91c0xpbmUtPmxvZ2ljYWxTdGFydFJ1bigpOworICAgICAgICBzdGFydFJ1biA9
IElubGluZUl0ZXJhdG9yOjpmaXJzdExlYWZPbkxpbmVJbkxvZ2ljYWxPcmRlcihwcmV2aW91c0xp
bmUsIG9yZGVyQ2FjaGUpOwogICAgIH0KICAgICByZXR1cm4geyB9OwogfQogCiAKLXN0YXRpYyBj
b25zdCBJbmxpbmVJdGVyYXRvcjo6TGVhZkJveEl0ZXJhdG9yIGxvZ2ljYWxseU5leHRSdW4oY29u
c3QgVmlzaWJsZVBvc2l0aW9uJiB2aXNpYmxlUG9zaXRpb24sIElubGluZUl0ZXJhdG9yOjpMZWFm
Qm94SXRlcmF0b3Igc3RhcnRSdW4sIGJvb2wmIG5leHRCb3hJbkRpZmZlcmVudExpbmUpCitzdGF0
aWMgY29uc3QgSW5saW5lSXRlcmF0b3I6OkxlYWZCb3hJdGVyYXRvciBsb2dpY2FsbHlOZXh0UnVu
KGNvbnN0IFZpc2libGVQb3NpdGlvbiYgdmlzaWJsZVBvc2l0aW9uLCBJbmxpbmVJdGVyYXRvcjo6
TGVhZkJveEl0ZXJhdG9yIHN0YXJ0UnVuLCBJbmxpbmVJdGVyYXRvcjo6TGluZUxvZ2ljYWxPcmRl
ckNhY2hlJiBvcmRlckNhY2hlLCBib29sJiBuZXh0Qm94SW5EaWZmZXJlbnRMaW5lKQogewotICAg
IGlmIChhdXRvIG5leHRSdW4gPSBuZXh0VGV4dE9yTGluZUJyZWFrUnVuKHN0YXJ0UnVuKSkKKyAg
ICBpZiAoYXV0byBuZXh0UnVuID0gbmV4dFRleHRPckxpbmVCcmVha1J1bihzdGFydFJ1biwgb3Jk
ZXJDYWNoZSkpCiAgICAgICAgIHJldHVybiBuZXh0UnVuOwogCiAgICAgaWYgKGF1dG8gbmV4dExp
bmUgPSBzdGFydFJ1bi0+bGluZSgpLT5uZXh0KCkpIHsKICAgICAgICAgLy8gRklYTUU6IFdoeSBp
c24ndCBwcmV2aW91c0JveEluRGlmZmVyZW50TGluZSBzZXQgaGVyZT8KLSAgICAgICAgaWYgKGF1
dG8gbmV4dFJ1biA9IHN0YXJ0VGV4dE9yTGluZUJyZWFrUnVuKG5leHRMaW5lKSkKKyAgICAgICAg
aWYgKGF1dG8gbmV4dFJ1biA9IHN0YXJ0VGV4dE9yTGluZUJyZWFrUnVuKG5leHRMaW5lLCBvcmRl
ckNhY2hlKSkKICAgICAgICAgICAgIHJldHVybiBuZXh0UnVuOwogICAgIH0KIApAQCAtMjI5LDEz
ICsyMzAsMTMgQEAgc3RhdGljIGNvbnN0IElubGluZUl0ZXJhdG9yOjpMZWFmQm94SXRlcmF0b3Ig
bG9naWNhbGx5TmV4dFJ1bihjb25zdCBWaXNpYmxlUG9zaXQKICAgICAgICAgICAgIGJyZWFrOwog
CiAgICAgICAgIGlmIChuZXh0TGluZSAhPSBzdGFydFJ1bi0+bGluZSgpKSB7Ci0gICAgICAgICAg
ICBpZiAoYXV0byBuZXh0UnVuID0gc3RhcnRUZXh0T3JMaW5lQnJlYWtSdW4obmV4dExpbmUpKSB7
CisgICAgICAgICAgICBpZiAoYXV0byBuZXh0UnVuID0gc3RhcnRUZXh0T3JMaW5lQnJlYWtSdW4o
bmV4dExpbmUsIG9yZGVyQ2FjaGUpKSB7CiAgICAgICAgICAgICAgICAgbmV4dEJveEluRGlmZmVy
ZW50TGluZSA9IHRydWU7CiAgICAgICAgICAgICAgICAgcmV0dXJuIG5leHRSdW47CiAgICAgICAg
ICAgICB9CiAgICAgICAgIH0KIAotICAgICAgICBzdGFydFJ1biA9IG5leHRMaW5lLT5sb2dpY2Fs
RW5kUnVuKCk7CisgICAgICAgIHN0YXJ0UnVuID0gSW5saW5lSXRlcmF0b3I6Omxhc3RMZWFmT25M
aW5lSW5Mb2dpY2FsT3JkZXJXaXRoTm9kZShuZXh0TGluZSwgb3JkZXJDYWNoZSk7CiAgICAgfQog
ICAgIHJldHVybiB7IH07CiB9CkBAIC0yNDUsMTEgKzI0NiwxMiBAQCBzdGF0aWMgVUJyZWFrSXRl
cmF0b3IqIHdvcmRCcmVha0l0ZXJhdG9yRm9yTWluT2Zmc2V0Qm91bmRhcnkoY29uc3QgVmlzaWJs
ZVBvc2l0aQogewogICAgIHByZXZpb3VzUnVuSW5EaWZmZXJlbnRMaW5lID0gZmFsc2U7CiAKLSAg
ICBhdXRvIHByZXZpb3VzUnVuID0gbG9naWNhbGx5UHJldmlvdXNSdW4odmlzaWJsZVBvc2l0aW9u
LCB0ZXh0UnVuLCBwcmV2aW91c1J1bkluRGlmZmVyZW50TGluZSk7CisgICAgSW5saW5lSXRlcmF0
b3I6OkxpbmVMb2dpY2FsT3JkZXJDYWNoZSBvcmRlckNhY2hlOworICAgIGF1dG8gcHJldmlvdXNS
dW4gPSBsb2dpY2FsbHlQcmV2aW91c1J1bih2aXNpYmxlUG9zaXRpb24sIHRleHRSdW4sIG9yZGVy
Q2FjaGUsIHByZXZpb3VzUnVuSW5EaWZmZXJlbnRMaW5lKTsKICAgICB3aGlsZSAocHJldmlvdXNS
dW4gJiYgIXByZXZpb3VzUnVuLT5pc1RleHQoKSkgewogICAgICAgICBBU1NFUlQocHJldmlvdXNS
dW4tPnJlbmRlcmVyKCkuaXNCUigpKTsKICAgICAgICAgcHJldmlvdXNSdW5JbkRpZmZlcmVudExp
bmUgPSB0cnVlOwotICAgICAgICBwcmV2aW91c1J1biA9IGxvZ2ljYWxseVByZXZpb3VzUnVuKHZp
c2libGVQb3NpdGlvbiwgcHJldmlvdXNSdW4sIHByZXZpb3VzUnVuSW5EaWZmZXJlbnRMaW5lKTsK
KyAgICAgICAgcHJldmlvdXNSdW4gPSBsb2dpY2FsbHlQcmV2aW91c1J1bih2aXNpYmxlUG9zaXRp
b24sIHByZXZpb3VzUnVuLCBvcmRlckNhY2hlLCBwcmV2aW91c1J1bkluRGlmZmVyZW50TGluZSk7
CiAgICAgfQogCiAgICAgc3RyaW5nLmNsZWFyKCk7CkBAIC0yNjksMTEgKzI3MSwxMiBAQCBzdGF0
aWMgVUJyZWFrSXRlcmF0b3IqIHdvcmRCcmVha0l0ZXJhdG9yRm9yTWF4T2Zmc2V0Qm91bmRhcnko
Y29uc3QgVmlzaWJsZVBvc2l0aQogewogICAgIG5leHRSdW5JbkRpZmZlcmVudExpbmUgPSBmYWxz
ZTsKIAotICAgIGF1dG8gbmV4dFJ1biA9IGxvZ2ljYWxseU5leHRSdW4odmlzaWJsZVBvc2l0aW9u
LCB0ZXh0UnVuLCBuZXh0UnVuSW5EaWZmZXJlbnRMaW5lKTsKKyAgICBJbmxpbmVJdGVyYXRvcjo6
TGluZUxvZ2ljYWxPcmRlckNhY2hlIG9yZGVyQ2FjaGU7CisgICAgYXV0byBuZXh0UnVuID0gbG9n
aWNhbGx5TmV4dFJ1bih2aXNpYmxlUG9zaXRpb24sIHRleHRSdW4sIG9yZGVyQ2FjaGUsIG5leHRS
dW5JbkRpZmZlcmVudExpbmUpOwogICAgIHdoaWxlIChuZXh0UnVuICYmICFuZXh0UnVuLT5pc1Rl
eHQoKSkgewogICAgICAgICBBU1NFUlQobmV4dFJ1bi0+cmVuZGVyZXIoKS5pc0JSKCkpOwogICAg
ICAgICBuZXh0UnVuSW5EaWZmZXJlbnRMaW5lID0gdHJ1ZTsKLSAgICAgICAgbmV4dFJ1biA9IGxv
Z2ljYWxseU5leHRSdW4odmlzaWJsZVBvc2l0aW9uLCBuZXh0UnVuLCBuZXh0UnVuSW5EaWZmZXJl
bnRMaW5lKTsKKyAgICAgICAgbmV4dFJ1biA9IGxvZ2ljYWxseU5leHRSdW4odmlzaWJsZVBvc2l0
aW9uLCBuZXh0UnVuLCBvcmRlckNhY2hlLCBuZXh0UnVuSW5EaWZmZXJlbnRMaW5lKTsKICAgICB9
CiAKICAgICBzdHJpbmcuY2xlYXIoKTsKQEAgLTc0Niw4ICs3NDksMTAgQEAgc3RhdGljIFZpc2li
bGVQb3NpdGlvbiBzdGFydFBvc2l0aW9uRm9yTGluZShjb25zdCBWaXNpYmxlUG9zaXRpb24mIGMs
IExpbmVFbmRwb2kKICAgICAgICAgcmV0dXJuIFZpc2libGVQb3NpdGlvbigpOwogICAgIH0KIAor
ICAgIElubGluZUl0ZXJhdG9yOjpMaW5lTG9naWNhbE9yZGVyQ2FjaGUgb3JkZXJDYWNoZTsKKwog
ICAgIE5vZGUqIHN0YXJ0Tm9kZSA9IG51bGxwdHI7Ci0gICAgYXV0byBzdGFydFJ1biA9IG1vZGUg
PT0gVXNlTG9naWNhbE9yZGVyaW5nID8gbGluZS0+bG9naWNhbFN0YXJ0UnVuV2l0aE5vZGUoKSA6
IGxpbmUtPmZpcnN0UnVuKCk7CisgICAgYXV0byBzdGFydFJ1biA9IG1vZGUgPT0gVXNlTG9naWNh
bE9yZGVyaW5nID8gSW5saW5lSXRlcmF0b3I6OmZpcnN0TGVhZk9uTGluZUluTG9naWNhbE9yZGVy
V2l0aE5vZGUobGluZSwgb3JkZXJDYWNoZSkgOiBsaW5lLT5maXJzdFJ1bigpOwogICAgIC8vIEdl
bmVyYXRlZCBjb250ZW50IChlLmcuIGxpc3QgbWFya2VycyBhbmQgQ1NTIDpiZWZvcmUgYW5kIDph
ZnRlciBwc2V1ZG9lbGVtZW50cykgaGF2ZSBubyBjb3JyZXNwb25kaW5nIERPTSBlbGVtZW50LAog
ICAgIC8vIGFuZCBzbyBjYW5ub3QgYmUgcmVwcmVzZW50ZWQgYnkgYSBWaXNpYmxlUG9zaXRpb24u
IFVzZSB3aGF0ZXZlciBmb2xsb3dzIGluc3RlYWQuCiAgICAgd2hpbGUgKHRydWUpIHsKQEAgLTc1
OSw3ICs3NjQsNyBAQCBzdGF0aWMgVmlzaWJsZVBvc2l0aW9uIHN0YXJ0UG9zaXRpb25Gb3JMaW5l
KGNvbnN0IFZpc2libGVQb3NpdGlvbiYgYywgTGluZUVuZHBvaQogICAgICAgICAgICAgYnJlYWs7
CiAKICAgICAgICAgaWYgKG1vZGUgPT0gVXNlTG9naWNhbE9yZGVyaW5nKQotICAgICAgICAgICAg
c3RhcnRSdW4udHJhdmVyc2VOZXh0T25MaW5lSW5Mb2dpY2FsT3JkZXIoKTsKKyAgICAgICAgICAg
IHN0YXJ0UnVuID0gSW5saW5lSXRlcmF0b3I6Om5leHRMZWFmT25MaW5lSW5Mb2dpY2FsT3JkZXIo
c3RhcnRSdW4sIG9yZGVyQ2FjaGUpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBzdGFydFJ1
bi50cmF2ZXJzZU5leHRPbkxpbmUoKTsKICAgICB9CkBAIC04MTYsOCArODIxLDEwIEBAIHN0YXRp
YyBWaXNpYmxlUG9zaXRpb24gZW5kUG9zaXRpb25Gb3JMaW5lKGNvbnN0IFZpc2libGVQb3NpdGlv
biYgYywgTGluZUVuZHBvaW50CiAgICAgICAgIHJldHVybiBWaXNpYmxlUG9zaXRpb24oKTsKICAg
ICB9CiAKKyAgICBJbmxpbmVJdGVyYXRvcjo6TGluZUxvZ2ljYWxPcmRlckNhY2hlIG9yZGVyQ2Fj
aGU7CisKICAgICBOb2RlKiBlbmROb2RlID0gbnVsbHB0cjsKLSAgICBhdXRvIGVuZFJ1biA9IG1v
ZGUgPT0gVXNlTG9naWNhbE9yZGVyaW5nID8gbGluZS0+bG9naWNhbEVuZFJ1bldpdGhOb2RlKCkg
OiBsaW5lLT5sYXN0UnVuKCk7CisgICAgYXV0byBlbmRSdW4gPSBtb2RlID09IFVzZUxvZ2ljYWxP
cmRlcmluZyA/IElubGluZUl0ZXJhdG9yOjpsYXN0TGVhZk9uTGluZUluTG9naWNhbE9yZGVyKGxp
bmUsIG9yZGVyQ2FjaGUpIDogbGluZS0+bGFzdFJ1bigpOwogICAgIC8vIEdlbmVyYXRlZCBjb250
ZW50IChlLmcuIGxpc3QgbWFya2VycyBhbmQgQ1NTIDpiZWZvcmUgYW5kIDphZnRlciBwc2V1ZG9l
bGVtZW50cykgaGF2ZSBubyBjb3JyZXNwb25kaW5nIERPTSBlbGVtZW50LAogICAgIC8vIGFuZCBz
byBjYW5ub3QgYmUgcmVwcmVzZW50ZWQgYnkgYSBWaXNpYmxlUG9zaXRpb24uIFVzZSB3aGF0ZXZl
ciBwcmVjZWRlcyBpbnN0ZWFkLgogICAgIHdoaWxlICh0cnVlKSB7CkBAIC04MjksNyArODM2LDcg
QEAgc3RhdGljIFZpc2libGVQb3NpdGlvbiBlbmRQb3NpdGlvbkZvckxpbmUoY29uc3QgVmlzaWJs
ZVBvc2l0aW9uJiBjLCBMaW5lRW5kcG9pbnQKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAg
IGlmIChtb2RlID09IFVzZUxvZ2ljYWxPcmRlcmluZykKLSAgICAgICAgICAgIGVuZFJ1bi50cmF2
ZXJzZVByZXZpb3VzT25MaW5lSW5Mb2dpY2FsT3JkZXIoKTsKKyAgICAgICAgICAgIGVuZFJ1biA9
IElubGluZUl0ZXJhdG9yOjpwcmV2aW91c0xlYWZPbkxpbmVJbkxvZ2ljYWxPcmRlcihlbmRSdW4s
IG9yZGVyQ2FjaGUpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBlbmRSdW4udHJhdmVyc2VQ
cmV2aW91c09uTGluZSgpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9pbnRlZ3JhdGlvbi9JbmxpbmVJdGVyYXRvckJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvaW50ZWdyYXRpb24vSW5saW5lSXRlcmF0b3JCb3guY3BwCmluZGV4IDkxNjEyMjFkZDk1MDVm
MDAyNjFiOGI4NzEwZjhmMDUwNTk0NjI2ZTAuLjRhMGE3NWRkNjA3OTQyN2E4MzNhYjdmZTU1Nzdh
MThhOTRmYjkyMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlv
bi9JbmxpbmVJdGVyYXRvckJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVn
cmF0aW9uL0lubGluZUl0ZXJhdG9yQm94LmNwcApAQCAtMTQ4LDIyICsxNDgsNiBAQCBMZWFmQm94
SXRlcmF0b3ImIExlYWZCb3hJdGVyYXRvcjo6dHJhdmVyc2VQcmV2aW91c09uTGluZUlnbm9yaW5n
TGluZUJyZWFrKCkKICAgICByZXR1cm4gKnRoaXM7CiB9CiAKLUxlYWZCb3hJdGVyYXRvciYgTGVh
ZkJveEl0ZXJhdG9yOjp0cmF2ZXJzZU5leHRPbkxpbmVJbkxvZ2ljYWxPcmRlcigpCi17Ci0gICAg
V1RGOjpzd2l0Y2hPbihtX2JveC5tX3BhdGhWYXJpYW50LCBbXShhdXRvJiBwYXRoKSB7Ci0gICAg
ICAgIHBhdGgudHJhdmVyc2VOZXh0T25MaW5lSW5Mb2dpY2FsT3JkZXIoKTsKLSAgICB9KTsKLSAg
ICByZXR1cm4gKnRoaXM7Ci19Ci0KLUxlYWZCb3hJdGVyYXRvciYgTGVhZkJveEl0ZXJhdG9yOjp0
cmF2ZXJzZVByZXZpb3VzT25MaW5lSW5Mb2dpY2FsT3JkZXIoKQotewotICAgIFdURjo6c3dpdGNo
T24obV9ib3gubV9wYXRoVmFyaWFudCwgW10oYXV0byYgcGF0aCkgewotICAgICAgICBwYXRoLnRy
YXZlcnNlUHJldmlvdXNPbkxpbmVJbkxvZ2ljYWxPcmRlcigpOwotICAgIH0pOwotICAgIHJldHVy
biAqdGhpczsKLX0KLQogTGVhZkJveEl0ZXJhdG9yIGJveEZvcihjb25zdCBSZW5kZXJMaW5lQnJl
YWsmIHJlbmRlcmVyKQogewogI2lmIEVOQUJMRShMQVlPVVRfRk9STUFUVElOR19DT05URVhUKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0lubGluZUl0ZXJh
dG9yQm94LmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vSW5saW5lSXRlcmF0
b3JCb3guaAppbmRleCBiNDVhOGVlNDIxN2MwZmJjNzNkMmMyZmMyM2M0NTgxYmM1YmRiMDUwLi40
ODBhZmI4OTkzYmQyNzEyZGI2ZWFkYzlmNTUwOWFlMjUxOTY0NjExIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vSW5saW5lSXRlcmF0b3JCb3guaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vSW5saW5lSXRlcmF0b3JCb3guaApAQCAt
MTMxLDcgKzEzMSw3IEBAIHB1YmxpYzoKICAgICBib29sIGF0RW5kKCkgY29uc3Q7CiAKIHByb3Rl
Y3RlZDoKLSAgICBCb3hJdGVyYXRvcigpIDogbV9ib3goQm94TGVnYWN5UGF0aCB7IG51bGxwdHIs
IHsgfSB9KSB7IH07CisgICAgQm94SXRlcmF0b3IoKSA6IG1fYm94KEJveExlZ2FjeVBhdGggeyBu
dWxscHRyIH0pIHsgfTsKICAgICBCb3hJdGVyYXRvcihCb3g6OlBhdGhWYXJpYW50JiYpOwogICAg
IEJveEl0ZXJhdG9yKGNvbnN0IEJveCYpOwogCkBAIC0xNDgsOCArMTQ4LDYgQEAgcHVibGljOgog
ICAgIExlYWZCb3hJdGVyYXRvciYgdHJhdmVyc2VQcmV2aW91c09uTGluZSgpOwogICAgIExlYWZC
b3hJdGVyYXRvciYgdHJhdmVyc2VOZXh0T25MaW5lSWdub3JpbmdMaW5lQnJlYWsoKTsKICAgICBM
ZWFmQm94SXRlcmF0b3ImIHRyYXZlcnNlUHJldmlvdXNPbkxpbmVJZ25vcmluZ0xpbmVCcmVhaygp
OwotICAgIExlYWZCb3hJdGVyYXRvciYgdHJhdmVyc2VOZXh0T25MaW5lSW5Mb2dpY2FsT3JkZXIo
KTsKLSAgICBMZWFmQm94SXRlcmF0b3ImIHRyYXZlcnNlUHJldmlvdXNPbkxpbmVJbkxvZ2ljYWxP
cmRlcigpOwogfTsKIAogTGVhZkJveEl0ZXJhdG9yIGJveEZvcihjb25zdCBSZW5kZXJMaW5lQnJl
YWsmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9Jbmxp
bmVJdGVyYXRvckJveExlZ2FjeVBhdGguaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3Jh
dGlvbi9JbmxpbmVJdGVyYXRvckJveExlZ2FjeVBhdGguaAppbmRleCAzYmU0ZDNkY2FjM2I5Mzlh
ZWQ2NjhhMzM1MzFmYjY3ZGYyMzk5M2ZiLi4xNTFhOGRhOTQ4ZjA0ODU3ZDY4NDY1ZjJhYmQwNTIz
NDZlODY1MGY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24v
SW5saW5lSXRlcmF0b3JCb3hMZWdhY3lQYXRoLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2ludGVncmF0aW9uL0lubGluZUl0ZXJhdG9yQm94TGVnYWN5UGF0aC5oCkBAIC0zNywyMiArMzcs
MTAgQEAgbmFtZXNwYWNlIElubGluZUl0ZXJhdG9yIHsKIAogY2xhc3MgQm94TGVnYWN5UGF0aCB7
CiBwdWJsaWM6Ci0gICAgQm94TGVnYWN5UGF0aChjb25zdCBMZWdhY3lJbmxpbmVCb3gqIGlubGlu
ZUJveCwgVmVjdG9yPGNvbnN0IExlZ2FjeUlubGluZUJveCo+JiYgc29ydGVkSW5saW5lQm94ZXMg
PSB7IH0sIHNpemVfdCBzb3J0ZWRJbmxpbmVCb3hJbmRleCA9IDApCisgICAgQm94TGVnYWN5UGF0
aChjb25zdCBMZWdhY3lJbmxpbmVCb3gqIGlubGluZUJveCkKICAgICAgICAgOiBtX2lubGluZUJv
eChpbmxpbmVCb3gpCi0gICAgICAgICwgbV9sb2dpY2FsT3JkZXJDYWNoZShXVEZNb3ZlKHNvcnRl
ZElubGluZUJveGVzKSkKLSAgICAgICAgLCBtX2xvZ2ljYWxPcmRlckNhY2hlSW5kZXgoc29ydGVk
SW5saW5lQm94SW5kZXgpCiAgICAgeyB9CiAKLSAgICBlbnVtIGNsYXNzIExvZ2ljYWxPcmRlciB7
IFN0YXJ0LCBFbmQgfTsKLSAgICBCb3hMZWdhY3lQYXRoKGNvbnN0IExlZ2FjeVJvb3RJbmxpbmVC
b3gmIHJvb3QsIExvZ2ljYWxPcmRlciBvcmRlcikKLSAgICAgICAgOiBtX2xvZ2ljYWxPcmRlckNh
Y2hlKGlubGluZUJveGVzSW5Mb2dpY2FsT3JkZXIocm9vdCkpCi0gICAgewotICAgICAgICBpZiAo
IW1fbG9naWNhbE9yZGVyQ2FjaGUuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICBtX2xvZ2ljYWxP
cmRlckNhY2hlSW5kZXggPSBvcmRlciA9PSBMb2dpY2FsT3JkZXI6OlN0YXJ0ID8gMCA6IG1fbG9n
aWNhbE9yZGVyQ2FjaGUuc2l6ZSgpIC0gMTsKLSAgICAgICAgICAgIG1faW5saW5lQm94ID0gbV9s
b2dpY2FsT3JkZXJDYWNoZVttX2xvZ2ljYWxPcmRlckNhY2hlSW5kZXhdOwotICAgICAgICB9Ci0g
ICAgfQotCiAgICAgYm9vbCBpc1RleHQoKSBjb25zdCB7IHJldHVybiBtX2lubGluZUJveC0+aXNJ
bmxpbmVUZXh0Qm94KCk7IH0KICAgICBib29sIGlzSW5saW5lQm94KCkgY29uc3QgeyByZXR1cm4g
bV9pbmxpbmVCb3gtPmlzSW5saW5lRmxvd0JveCgpOyB9CiAgICAgYm9vbCBpc1Jvb3RJbmxpbmVC
b3goKSBjb25zdCB7IHJldHVybiBtX2lubGluZUJveC0+aXNSb290SW5saW5lQm94KCk7IH0KQEAg
LTk4LDE4ICs4Niw2IEBAIHB1YmxpYzoKICAgICAgICAgbV9pbmxpbmVCb3ggPSBtX2lubGluZUJv
eC0+cHJldmlvdXNMZWFmT25MaW5lKCk7CiAgICAgfQogCi0gICAgdm9pZCB0cmF2ZXJzZU5leHRP
bkxpbmVJbkxvZ2ljYWxPcmRlcigpCi0gICAgewotICAgICAgICBpbml0aWFsaXplTG9naWNhbE9y
ZGVyQ2FjaGVGb3JMaW5lKCk7Ci0gICAgICAgIHRyYXZlcnNlTmV4dElubGluZUJveEluQ2FjaGVP
cmRlcigpOwotICAgIH0KLQotICAgIHZvaWQgdHJhdmVyc2VQcmV2aW91c09uTGluZUluTG9naWNh
bE9yZGVyKCkKLSAgICB7Ci0gICAgICAgIGluaXRpYWxpemVMb2dpY2FsT3JkZXJDYWNoZUZvckxp
bmUoKTsKLSAgICAgICAgdHJhdmVyc2VQcmV2aW91c0lubGluZUJveEluQ2FjaGVPcmRlcigpOwot
ICAgIH0KLQogICAgIHZvaWQgdHJhdmVyc2VOZXh0SW5saW5lQm94KCkKICAgICB7CiAgICAgICAg
IG1faW5saW5lQm94ID0gaW5saW5lRmxvd0JveCgpLT5uZXh0TGluZUJveCgpOwpAQCAtMTMxLDQ5
ICsxMDcsOCBAQCBwcml2YXRlOgogICAgIGNvbnN0IExlZ2FjeUlubGluZVRleHRCb3gqIGlubGlu
ZVRleHRCb3goKSBjb25zdCB7IHJldHVybiBkb3duY2FzdDxMZWdhY3lJbmxpbmVUZXh0Qm94Piht
X2lubGluZUJveCk7IH0KICAgICBjb25zdCBMZWdhY3lJbmxpbmVGbG93Qm94KiBpbmxpbmVGbG93
Qm94KCkgY29uc3QgeyByZXR1cm4gZG93bmNhc3Q8TGVnYWN5SW5saW5lRmxvd0JveD4obV9pbmxp
bmVCb3gpOyB9CiAKLSAgICBzdGF0aWMgVmVjdG9yPGNvbnN0IExlZ2FjeUlubGluZUJveCo+IGlu
bGluZUJveGVzSW5Mb2dpY2FsT3JkZXIoY29uc3QgTGVnYWN5Um9vdElubGluZUJveCYgcm9vdCkK
LSAgICB7Ci0gICAgICAgIFZlY3RvcjxMZWdhY3lJbmxpbmVCb3gqPiBpbmxpbmVCb3hlczsKLSAg
ICAgICAgcm9vdC5jb2xsZWN0TGVhZkJveGVzSW5Mb2dpY2FsT3JkZXIoaW5saW5lQm94ZXMpOwot
ICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxWZWN0b3I8Y29uc3QgTGVnYWN5SW5saW5l
Qm94Kj4mPihpbmxpbmVCb3hlcyk7Ci0gICAgfQotICAgIHZvaWQgaW5pdGlhbGl6ZUxvZ2ljYWxP
cmRlckNhY2hlRm9yTGluZSgpCi0gICAgewotICAgICAgICBpZiAoIW1faW5saW5lQm94IHx8ICFt
X2xvZ2ljYWxPcmRlckNhY2hlLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAg
ICAgbV9sb2dpY2FsT3JkZXJDYWNoZSA9IGlubGluZUJveGVzSW5Mb2dpY2FsT3JkZXIobV9pbmxp
bmVCb3gtPnJvb3QoKSk7Ci0gICAgICAgIGZvciAobV9sb2dpY2FsT3JkZXJDYWNoZUluZGV4ID0g
MDsgbV9sb2dpY2FsT3JkZXJDYWNoZUluZGV4IDwgbV9sb2dpY2FsT3JkZXJDYWNoZS5zaXplKCk7
ICsrbV9sb2dpY2FsT3JkZXJDYWNoZUluZGV4KSB7Ci0gICAgICAgICAgICBpZiAobV9sb2dpY2Fs
T3JkZXJDYWNoZVttX2xvZ2ljYWxPcmRlckNhY2hlSW5kZXhdID09IG1faW5saW5lQm94KQotICAg
ICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKLSAgICB9Ci0KLSAgICB2b2lkIHRyYXZlcnNlTmV4dElubGluZUJveEluQ2FjaGVPcmRl
cigpOwotICAgIHZvaWQgdHJhdmVyc2VQcmV2aW91c0lubGluZUJveEluQ2FjaGVPcmRlcigpOwot
CiAgICAgY29uc3QgTGVnYWN5SW5saW5lQm94KiBtX2lubGluZUJveCB7IG51bGxwdHIgfTsKLSAg
ICBSZWZDb3VudGVkQXJyYXk8Y29uc3QgTGVnYWN5SW5saW5lQm94Kj4gbV9sb2dpY2FsT3JkZXJD
YWNoZTsKLSAgICBzaXplX3QgbV9sb2dpY2FsT3JkZXJDYWNoZUluZGV4IHsgMCB9OwogfTsKIAot
Ci1pbmxpbmUgdm9pZCBCb3hMZWdhY3lQYXRoOjp0cmF2ZXJzZU5leHRJbmxpbmVCb3hJbkNhY2hl
T3JkZXIoKQotewotICAgIEFTU0VSVCghbV9sb2dpY2FsT3JkZXJDYWNoZS5pc0VtcHR5KCkpOwot
ICAgICsrbV9sb2dpY2FsT3JkZXJDYWNoZUluZGV4OwotICAgIG1faW5saW5lQm94ID0gbV9sb2dp
Y2FsT3JkZXJDYWNoZUluZGV4IDwgbV9sb2dpY2FsT3JkZXJDYWNoZS5zaXplKCkgPyBtX2xvZ2lj
YWxPcmRlckNhY2hlW21fbG9naWNhbE9yZGVyQ2FjaGVJbmRleF0gOiBudWxscHRyOwotfQotCi1p
bmxpbmUgdm9pZCBCb3hMZWdhY3lQYXRoOjp0cmF2ZXJzZVByZXZpb3VzSW5saW5lQm94SW5DYWNo
ZU9yZGVyKCkKLXsKLSAgICBBU1NFUlQoIW1fbG9naWNhbE9yZGVyQ2FjaGUuaXNFbXB0eSgpKTsK
LSAgICBpZiAoIW1fbG9naWNhbE9yZGVyQ2FjaGVJbmRleCkgewotICAgICAgICBtX2lubGluZUJv
eCA9IG51bGxwdHI7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgbV9pbmxpbmVCb3ggPSBt
X2xvZ2ljYWxPcmRlckNhY2hlWy0tbV9sb2dpY2FsT3JkZXJDYWNoZUluZGV4XTsKLX0KLQogfQog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0lubGluZUl0
ZXJhdG9yQm94TW9kZXJuUGF0aC5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9u
L0lubGluZUl0ZXJhdG9yQm94TW9kZXJuUGF0aC5oCmluZGV4IDYxNTQzYjBjZjRjNDhiMGFiZDlk
MmM0MjVlOTRlMTdhZGZmNDYwNTIuLmQ3ZGM5NGNjODY4N2RmM2YyYzA2NDYzOGNlZWY1MmVlYzE5
ZWVhNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9Jbmxp
bmVJdGVyYXRvckJveE1vZGVyblBhdGguaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50
ZWdyYXRpb24vSW5saW5lSXRlcmF0b3JCb3hNb2Rlcm5QYXRoLmgKQEAgLTE2MCwxNiArMTYwLDYg
QEAgcHVibGljOgogICAgICAgICAgICAgc2V0QXRFbmQoKTsKICAgICB9CiAKLSAgICB2b2lkIHRy
YXZlcnNlTmV4dE9uTGluZUluTG9naWNhbE9yZGVyKCkKLSAgICB7Ci0gICAgICAgIHRyYXZlcnNl
TmV4dE9uTGluZSgpOwotICAgIH0KLQotICAgIHZvaWQgdHJhdmVyc2VQcmV2aW91c09uTGluZUlu
TG9naWNhbE9yZGVyKCkKLSAgICB7Ci0gICAgICAgIHRyYXZlcnNlUHJldmlvdXNPbkxpbmUoKTsK
LSAgICB9Ci0KICAgICB2b2lkIHRyYXZlcnNlTmV4dElubGluZUJveCgpCiAgICAgewogICAgICAg
ICBBU1NFUlQoYm94KCkuaXNJbmxpbmVCb3goKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvaW50ZWdyYXRpb24vSW5saW5lSXRlcmF0b3JMaW5lLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9pbnRlZ3JhdGlvbi9JbmxpbmVJdGVyYXRvckxpbmUuY3BwCmluZGV4IGY0ZWI2
YTY4ZmQzZGJiODE1NzMyMDNmOWI2MDdmNGQxZjQ1OGFjNTYuLjhmYzY0NTRmMzYxMjBiY2VmYmYx
Mzg1OTMzOGY2YTliMzRhNmE3YjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9p
bnRlZ3JhdGlvbi9JbmxpbmVJdGVyYXRvckxpbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9pbnRlZ3JhdGlvbi9JbmxpbmVJdGVyYXRvckxpbmUuY3BwCkBAIC0xMTUsMzggKzExNSw2
IEBAIExlYWZCb3hJdGVyYXRvciBMaW5lOjpsYXN0UnVuKCkgY29uc3QKICAgICB9KTsKIH0KIAot
TGVhZkJveEl0ZXJhdG9yIExpbmU6OmxvZ2ljYWxTdGFydFJ1bigpIGNvbnN0Ci17Ci0gICAgcmV0
dXJuIFdURjo6c3dpdGNoT24obV9wYXRoVmFyaWFudCwgW10oYXV0byYgcGF0aCkgLT4gTGVhZkJv
eEl0ZXJhdG9yIHsKLSAgICAgICAgcmV0dXJuIHsgcGF0aC5sb2dpY2FsU3RhcnRSdW4oKSB9Owot
ICAgIH0pOwotfQotCi1MZWFmQm94SXRlcmF0b3IgTGluZTo6bG9naWNhbEVuZFJ1bigpIGNvbnN0
Ci17Ci0gICAgcmV0dXJuIFdURjo6c3dpdGNoT24obV9wYXRoVmFyaWFudCwgW10oYXV0byYgcGF0
aCkgLT4gTGVhZkJveEl0ZXJhdG9yIHsKLSAgICAgICAgcmV0dXJuIHsgcGF0aC5sb2dpY2FsRW5k
UnVuKCkgfTsKLSAgICB9KTsKLX0KLQotTGVhZkJveEl0ZXJhdG9yIExpbmU6OmxvZ2ljYWxTdGFy
dFJ1bldpdGhOb2RlKCkgY29uc3QKLXsKLSAgICBmb3IgKGF1dG8gcnVuID0gbG9naWNhbFN0YXJ0
UnVuKCk7IHJ1bjsgcnVuLnRyYXZlcnNlTmV4dE9uTGluZUluTG9naWNhbE9yZGVyKCkpIHsKLSAg
ICAgICAgaWYgKHJ1bi0+cmVuZGVyZXIoKS5ub2RlKCkpCi0gICAgICAgICAgICByZXR1cm4gcnVu
OwotICAgIH0KLSAgICByZXR1cm4geyB9OwotfQotCi1MZWFmQm94SXRlcmF0b3IgTGluZTo6bG9n
aWNhbEVuZFJ1bldpdGhOb2RlKCkgY29uc3QKLXsKLSAgICBmb3IgKGF1dG8gcnVuID0gbG9naWNh
bEVuZFJ1bigpOyBydW47IHJ1bi50cmF2ZXJzZVByZXZpb3VzT25MaW5lSW5Mb2dpY2FsT3JkZXIo
KSkgewotICAgICAgICBpZiAocnVuLT5yZW5kZXJlcigpLm5vZGUoKSkKLSAgICAgICAgICAgIHJl
dHVybiBydW47Ci0gICAgfQotICAgIHJldHVybiB7IH07Ci19Ci0KIExlYWZCb3hJdGVyYXRvciBM
aW5lOjpjbG9zZXN0UnVuRm9yUG9pbnQoY29uc3QgSW50UG9pbnQmIHBvaW50SW5Db250ZW50cywg
Ym9vbCBlZGl0YWJsZU9ubHkpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGNsb3Nlc3RSdW5Gb3JMb2dp
Y2FsTGVmdFBvc2l0aW9uKGlzSG9yaXpvbnRhbCgpID8gcG9pbnRJbkNvbnRlbnRzLngoKSA6IHBv
aW50SW5Db250ZW50cy55KCksIGVkaXRhYmxlT25seSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvaW50ZWdyYXRpb24vSW5saW5lSXRlcmF0b3JMaW5lLmggYi9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvaW50ZWdyYXRpb24vSW5saW5lSXRlcmF0b3JMaW5lLmgKaW5kZXggMmQzMjg5
M2U3NWQ3YjdiYjE2ZjdkNGRhYWE0NDllMGY1OTlmMTA0MC4uNjdkNjM1YTM2YjBlZDJhYzJjOWY5
YTA1YWQ5NjUxNTY4ODUwNjExMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lu
dGVncmF0aW9uL0lubGluZUl0ZXJhdG9yTGluZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9pbnRlZ3JhdGlvbi9JbmxpbmVJdGVyYXRvckxpbmUuaApAQCAtODksMTEgKzg5LDYgQEAgcHVi
bGljOgogCiAgICAgTGVhZkJveEl0ZXJhdG9yIGNsb3Nlc3RSdW5Gb3JQb2ludChjb25zdCBJbnRQ
b2ludCYgcG9pbnRJbkNvbnRlbnRzLCBib29sIGVkaXRhYmxlT25seSkgY29uc3Q7CiAgICAgTGVh
ZkJveEl0ZXJhdG9yIGNsb3Nlc3RSdW5Gb3JMb2dpY2FsTGVmdFBvc2l0aW9uKGludCBwb3NpdGlv
biwgYm9vbCBlZGl0YWJsZU9ubHkgPSBmYWxzZSkgY29uc3Q7Ci0KLSAgICBMZWFmQm94SXRlcmF0
b3IgbG9naWNhbFN0YXJ0UnVuKCkgY29uc3Q7Ci0gICAgTGVhZkJveEl0ZXJhdG9yIGxvZ2ljYWxF
bmRSdW4oKSBjb25zdDsKLSAgICBMZWFmQm94SXRlcmF0b3IgbG9naWNhbFN0YXJ0UnVuV2l0aE5v
ZGUoKSBjb25zdDsKLSAgICBMZWFmQm94SXRlcmF0b3IgbG9naWNhbEVuZFJ1bldpdGhOb2RlKCkg
Y29uc3Q7CiAgICAgCiAgICAgTGVhZkJveEl0ZXJhdG9yIGZpcnN0U2VsZWN0ZWRCb3goKSBjb25z
dDsKICAgICBMZWFmQm94SXRlcmF0b3IgbGFzdFNlbGVjdGVkQm94KCkgY29uc3Q7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vSW5saW5lSXRlcmF0b3JMaW5l
TGVnYWN5UGF0aC5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0lubGluZUl0
ZXJhdG9yTGluZUxlZ2FjeVBhdGguaAppbmRleCBmYWMzYTIyZTc0OTRkNGU0MzEyMThmY2U4OWU3
OWI0MzI0YTkzZDA5Li5iNzRjNmQ5YTAwMWUyNTQyMjVmZjdmY2FhZGJhZmUzNDZkYzA3MDE3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vSW5saW5lSXRlcmF0
b3JMaW5lTGVnYWN5UGF0aC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlv
bi9JbmxpbmVJdGVyYXRvckxpbmVMZWdhY3lQYXRoLmgKQEAgLTg1LDE3ICs4NSw2IEBAIHB1Ymxp
YzoKICAgICAgICAgcmV0dXJuIHsgbV9yb290SW5saW5lQm94LT5sYXN0TGVhZkRlc2NlbmRhbnQo
KSB9OwogICAgIH0KIAotCi0gICAgQm94TGVnYWN5UGF0aCBsb2dpY2FsU3RhcnRSdW4oKSBjb25z
dAotICAgIHsKLSAgICAgICAgcmV0dXJuIHsgKm1fcm9vdElubGluZUJveCwgQm94TGVnYWN5UGF0
aDo6TG9naWNhbE9yZGVyOjpTdGFydCB9OwotICAgIH0KLQotICAgIEJveExlZ2FjeVBhdGggbG9n
aWNhbEVuZFJ1bigpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4geyAqbV9yb290SW5saW5l
Qm94LCBCb3hMZWdhY3lQYXRoOjpMb2dpY2FsT3JkZXI6OkVuZCB9OwotICAgIH0KLQogcHJpdmF0
ZToKICAgICBjb25zdCBMZWdhY3lSb290SW5saW5lQm94KiBtX3Jvb3RJbmxpbmVCb3g7CiB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0lubGluZUl0ZXJh
dG9yTGluZU1vZGVyblBhdGguaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9J
bmxpbmVJdGVyYXRvckxpbmVNb2Rlcm5QYXRoLmgKaW5kZXggY2FmODI2Zjg1MWU0N2ZmZTdkNWEw
ZGFjNTk1ZmU5ZGYzM2M0NWRlMy4uYjkxY2ZjZjY0NTBkMzk5NWM1YjQ0ZWU2ZjUwMDRkMDlhMjc4
M2Q4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0lubGlu
ZUl0ZXJhdG9yTGluZU1vZGVyblBhdGguaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50
ZWdyYXRpb24vSW5saW5lSXRlcmF0b3JMaW5lTW9kZXJuUGF0aC5oCkBAIC0xMTYsMTYgKzExNiw2
IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHJ1bkl0ZXJhdG9yOwogICAgIH0KIAotICAgIEJv
eE1vZGVyblBhdGggbG9naWNhbFN0YXJ0UnVuKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVy
biBmaXJzdFJ1bigpOwotICAgIH0KLQotICAgIEJveE1vZGVyblBhdGggbG9naWNhbEVuZFJ1bigp
IGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbGFzdFJ1bigpOwotICAgIH0KLQogcHJpdmF0
ZToKICAgICB2b2lkIHNldEF0RW5kKCkgeyBtX2xpbmVJbmRleCA9IGxpbmVzKCkuc2l6ZSgpOyB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9JbmxpbmVJ
dGVyYXRvckxvZ2ljYWxPcmRlclRyYXZlcnNhbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
aW50ZWdyYXRpb24vSW5saW5lSXRlcmF0b3JMb2dpY2FsT3JkZXJUcmF2ZXJzYWwuY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjI3ZGUyOTEzY2ZhZTQ5ZjhkYmMzZDk5MWJmMzk0YjI2NGY5MTRkMWEKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vSW5saW5lSXRlcmF0
b3JMb2dpY2FsT3JkZXJUcmF2ZXJzYWwuY3BwCkBAIC0wLDAgKzEsMjI0IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIklubGluZUl0ZXJhdG9yTG9naWNhbE9y
ZGVyVHJhdmVyc2FsLmgiCisKKyNpbmNsdWRlICJJbmxpbmVJdGVyYXRvckxpbmUuaCIKKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworbmFtZXNwYWNlIElubGluZUl0ZXJhdG9yIHsKKworc3RhdGljIFRl
eHRMb2dpY2FsT3JkZXJDYWNoZSBtYWtlVGV4dExvZ2ljYWxPcmRlckNhY2hlSWZOZWVkZWQoY29u
c3QgUmVuZGVyVGV4dCYgdGV4dCkKK3sKKyAgICBpZiAoIXRleHQuY29udGFpbnNSZXZlcnNlZFRl
eHQoKSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIGF1dG8gY2FjaGUgPSBXVEY6Om1ha2VV
bmlxdWU8VGV4dExvZ2ljYWxPcmRlckNhY2hlRGF0YT4oKTsKKyAgICBmb3IgKGF1dG8gdGV4dEJv
eCA6IHRleHRCb3hlc0Zvcih0ZXh0KSkKKyAgICAgICAgY2FjaGUtPmJveGVzLmFwcGVuZCh0ZXh0
Qm94KTsKKworICAgIGlmIChjYWNoZS0+Ym94ZXMuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKworICAgIHN0ZDo6c29ydChjYWNoZS0+Ym94ZXMuYmVnaW4oKSwgY2FjaGUtPmJv
eGVzLmVuZCgpLCBbJl0oYXV0byYgYSwgYXV0byYgYikgeworICAgICAgICByZXR1cm4gYS0+c3Rh
cnQoKSA8IGItPnN0YXJ0KCk7CisgICAgfSk7CisKKyAgICByZXR1cm4gY2FjaGU7Cit9CisKK3N0
YXRpYyB2b2lkIHVwZGF0ZVRleHRMb2dpY2FsT3JkZXJDYWNoZUlmTmVlZGVkKGNvbnN0IFRleHRC
b3hJdGVyYXRvciYgdGV4dEJveCwgVGV4dExvZ2ljYWxPcmRlckNhY2hlJiBjYWNoZSkKK3sKKyAg
ICBpZiAoIWNhY2hlICYmICEoY2FjaGUgPSBtYWtlVGV4dExvZ2ljYWxPcmRlckNhY2hlSWZOZWVk
ZWQodGV4dEJveC0+cmVuZGVyZXIoKSkpKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoY2Fj
aGUtPmluZGV4IDwgY2FjaGUtPmJveGVzLnNpemUoKSAmJiBjYWNoZS0+Ym94ZXNbY2FjaGUtPmlu
ZGV4XSA9PSB0ZXh0Qm94KQorICAgICAgICByZXR1cm47CisKKyAgICBjYWNoZS0+aW5kZXggPSBj
YWNoZS0+Ym94ZXMuZmluZCh0ZXh0Qm94KTsKKworICAgIGlmIChjYWNoZS0+aW5kZXggPT0gbm90
Rm91bmQpIHsKKyAgICAgICAgY2FjaGUgPSB7IH07CisgICAgICAgIHVwZGF0ZVRleHRMb2dpY2Fs
T3JkZXJDYWNoZUlmTmVlZGVkKHRleHRCb3gsIGNhY2hlKTsKKyAgICB9Cit9CisKK3N0ZDo6cGFp
cjxUZXh0Qm94SXRlcmF0b3IsIFRleHRMb2dpY2FsT3JkZXJDYWNoZT4gZmlyc3RUZXh0Qm94SW5M
b2dpY2FsT3JkZXJGb3IoY29uc3QgUmVuZGVyVGV4dCYgdGV4dCkKK3sKKyAgICBpZiAoYXV0byBj
YWNoZSA9IG1ha2VUZXh0TG9naWNhbE9yZGVyQ2FjaGVJZk5lZWRlZCh0ZXh0KSkKKyAgICAgICAg
cmV0dXJuIHsgY2FjaGUtPmJveGVzLmZpcnN0KCksIFdURk1vdmUoY2FjaGUpIH07CisKKyAgICBy
ZXR1cm4geyBmaXJzdFRleHRCb3hGb3IodGV4dCksIG51bGxwdHIgfTsKK30KKworVGV4dEJveEl0
ZXJhdG9yIG5leHRUZXh0Qm94SW5Mb2dpY2FsT3JkZXIoY29uc3QgVGV4dEJveEl0ZXJhdG9yJiB0
ZXh0Qm94LCBUZXh0TG9naWNhbE9yZGVyQ2FjaGUmIGNhY2hlKQoreworICAgIHVwZGF0ZVRleHRM
b2dpY2FsT3JkZXJDYWNoZUlmTmVlZGVkKHRleHRCb3gsIGNhY2hlKTsKKworICAgIGlmICghY2Fj
aGUpCisgICAgICAgIHJldHVybiB0ZXh0Qm94LT5uZXh0VGV4dEJveCgpOworCisgICAgY2FjaGUt
PmluZGV4Kys7CisKKyAgICBpZiAoY2FjaGUtPmluZGV4IDwgY2FjaGUtPmJveGVzLnNpemUoKSkK
KyAgICAgICAgcmV0dXJuIGNhY2hlLT5ib3hlc1tjYWNoZS0+aW5kZXhdOworCisgICAgcmV0dXJu
IHsgfTsKK30KKworc3RhdGljIExpbmVMb2dpY2FsT3JkZXJDYWNoZSBtYWtlTGluZUxvZ2ljYWxP
cmRlckNhY2hlKGNvbnN0IExpbmVJdGVyYXRvciYgbGluZSkKK3sKKyAgICBhdXRvIGNhY2hlID0g
V1RGOjptYWtlVW5pcXVlPExpbmVMb2dpY2FsT3JkZXJDYWNoZURhdGE+KCk7CisgICAgY2FjaGUt
PmxpbmUgPSBsaW5lOworCisgICAgYXV0byYgYm94ZXMgPSBjYWNoZS0+Ym94ZXM7CisKKyAgICB1
bnNpZ25lZCBjaGFyIG1pbkxldmVsID0gMTI4OworICAgIHVuc2lnbmVkIGNoYXIgbWF4TGV2ZWwg
PSAwOworCisgICAgZm9yIChhdXRvIGJveCA9IGxpbmUtPmZpcnN0UnVuKCk7IGJveDsgYm94ID0g
Ym94LnRyYXZlcnNlTmV4dE9uTGluZSgpKSB7CisgICAgICAgIG1pbkxldmVsID0gc3RkOjptaW4o
bWluTGV2ZWwsIGJveC0+YmlkaUxldmVsKCkpOworICAgICAgICBtYXhMZXZlbCA9IHN0ZDo6bWF4
KG1heExldmVsLCBib3gtPmJpZGlMZXZlbCgpKTsKKyAgICAgICAgYm94ZXMuYXBwZW5kKGJveCk7
CisgICAgfQorCisgICAgaWYgKCFtYXhMZXZlbCkKKyAgICAgICAgcmV0dXJuIGNhY2hlOworCisg
ICAgaWYgKGxpbmUtPmNvbnRhaW5pbmdCbG9jaygpLnN0eWxlKCkucnRsT3JkZXJpbmcoKSA9PSBP
cmRlcjo6VmlzdWFsKQorICAgICAgICByZXR1cm4gY2FjaGU7CisKKyAgICAvLyBSZXZlcnNlIG9m
IHJlb3JkZXJpbmcgb2YgdGhlIGxpbmUgKEwyIGFjY29yZGluZyB0byBCaWRpIHNwZWMpOgorICAg
IC8vIEwyLiBGcm9tIHRoZSBoaWdoZXN0IGxldmVsIGZvdW5kIGluIHRoZSB0ZXh0IHRvIHRoZSBs
b3dlc3Qgb2RkIGxldmVsIG9uIGVhY2ggbGluZSwKKyAgICAvLyByZXZlcnNlIGFueSBjb250aWd1
b3VzIHNlcXVlbmNlIG9mIGNoYXJhY3RlcnMgdGhhdCBhcmUgYXQgdGhhdCBsZXZlbCBvciBoaWdo
ZXIuCisKKyAgICAvLyBSZXZlcnNpbmcgdGhlIHJlb3JkZXJpbmcgb2YgdGhlIGxpbmUgaXMgb25s
eSBkb25lIHVwIHRvIHRoZSBsb3dlc3Qgb2RkIGxldmVsLgorICAgIGlmICghKG1pbkxldmVsICUg
MikpCisgICAgICAgICsrbWluTGV2ZWw7CisKKyAgICBhdXRvIGVuZCA9IGJveGVzLmVuZCgpOwor
ICAgIGZvciAoOyBtaW5MZXZlbCA8PSBtYXhMZXZlbDsgKyttaW5MZXZlbCkgeworICAgICAgICBh
dXRvIGJveCA9IGJveGVzLmJlZ2luKCk7CisgICAgICAgIHdoaWxlIChib3ggPCBlbmQpIHsKKyAg
ICAgICAgICAgIHdoaWxlIChib3ggPCBlbmQgJiYgKCpib3gpLT5iaWRpTGV2ZWwoKSA8IG1pbkxl
dmVsKQorICAgICAgICAgICAgICAgICsrYm94OworCisgICAgICAgICAgICBhdXRvIGZpcnN0ID0g
Ym94OworICAgICAgICAgICAgd2hpbGUgKGJveCA8IGVuZCAmJiAoKmJveCktPmJpZGlMZXZlbCgp
ID49IG1pbkxldmVsKQorICAgICAgICAgICAgICAgICsrYm94OworCisgICAgICAgICAgICBhdXRv
IGxhc3QgPSBib3g7CisgICAgICAgICAgICBzdGQ6OnJldmVyc2UoZmlyc3QsIGxhc3QpOworICAg
ICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIGNhY2hlOworfQorCitzdGF0aWMgdm9pZCB1cGRh
dGVMaW5lTG9naWNhbE9yZGVyQ2FjaGVJZk5lZWRlZChjb25zdCBMZWFmQm94SXRlcmF0b3ImIGJv
eCwgTGluZUxvZ2ljYWxPcmRlckNhY2hlJiBjYWNoZSkKK3sKKyAgICBhdXRvIGxpbmUgPSBib3gt
PmxpbmUoKTsKKyAgICBpZiAoIWNhY2hlIHx8IGNhY2hlLT5saW5lICE9IGxpbmUpCisgICAgICAg
IGNhY2hlID0gbWFrZUxpbmVMb2dpY2FsT3JkZXJDYWNoZShsaW5lKTsKKworICAgIGlmIChjYWNo
ZS0+aW5kZXggPCBjYWNoZS0+Ym94ZXMuc2l6ZSgpICYmIGNhY2hlLT5ib3hlc1tjYWNoZS0+aW5k
ZXhdID09IGJveCkKKyAgICAgICAgcmV0dXJuOworCisgICAgY2FjaGUtPmluZGV4ID0gY2FjaGUt
PmJveGVzLmZpbmQoYm94KTsKKworICAgIEFTU0VSVChjYWNoZS0+aW5kZXggIT0gbm90Rm91bmQp
OworfQorCitMZWFmQm94SXRlcmF0b3IgZmlyc3RMZWFmT25MaW5lSW5Mb2dpY2FsT3JkZXIoY29u
c3QgTGluZUl0ZXJhdG9yJiBsaW5lLCBMaW5lTG9naWNhbE9yZGVyQ2FjaGUmIGNhY2hlKQorewor
ICAgIGNhY2hlID0gbWFrZUxpbmVMb2dpY2FsT3JkZXJDYWNoZShsaW5lKTsKKworICAgIGlmIChj
YWNoZS0+Ym94ZXMuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4geyB9OworCisgICAgY2FjaGUt
PmluZGV4ID0gMDsKKyAgICByZXR1cm4gY2FjaGUtPmJveGVzLmZpcnN0KCk7Cit9CisKK0xlYWZC
b3hJdGVyYXRvciBsYXN0TGVhZk9uTGluZUluTG9naWNhbE9yZGVyKGNvbnN0IExpbmVJdGVyYXRv
ciYgbGluZSwgTGluZUxvZ2ljYWxPcmRlckNhY2hlJiBjYWNoZSkKK3sKKyAgICBjYWNoZSA9IG1h
a2VMaW5lTG9naWNhbE9yZGVyQ2FjaGUobGluZSk7CisKKyAgICBpZiAoY2FjaGUtPmJveGVzLmlz
RW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIGNhY2hlLT5pbmRleCA9IGNhY2hl
LT5ib3hlcy5zaXplKCkgLSAxOworICAgIHJldHVybiBjYWNoZS0+Ym94ZXMubGFzdCgpOworfQor
CitMZWFmQm94SXRlcmF0b3IgbmV4dExlYWZPbkxpbmVJbkxvZ2ljYWxPcmRlcihjb25zdCBMZWFm
Qm94SXRlcmF0b3ImIGJveCwgTGluZUxvZ2ljYWxPcmRlckNhY2hlJiBjYWNoZSkKK3sKKyAgICB1
cGRhdGVMaW5lTG9naWNhbE9yZGVyQ2FjaGVJZk5lZWRlZChib3gsIGNhY2hlKTsKKworICAgIGlm
ICghY2FjaGUpCisgICAgICAgIHJldHVybiBib3gtPm5leHRPbkxpbmUoKTsKKworICAgIGNhY2hl
LT5pbmRleCsrOworCisgICAgaWYgKGNhY2hlLT5pbmRleCA8IGNhY2hlLT5ib3hlcy5zaXplKCkp
CisgICAgICAgIHJldHVybiBjYWNoZS0+Ym94ZXNbY2FjaGUtPmluZGV4XTsKKworICAgIHJldHVy
biB7IH07Cit9CisKK0xlYWZCb3hJdGVyYXRvciBwcmV2aW91c0xlYWZPbkxpbmVJbkxvZ2ljYWxP
cmRlcihjb25zdCBMZWFmQm94SXRlcmF0b3ImIGJveCwgTGluZUxvZ2ljYWxPcmRlckNhY2hlJiBj
YWNoZSkKK3sKKyAgICB1cGRhdGVMaW5lTG9naWNhbE9yZGVyQ2FjaGVJZk5lZWRlZChib3gsIGNh
Y2hlKTsKKworICAgIGlmICghY2FjaGUpCisgICAgICAgIHJldHVybiBib3gtPnByZXZpb3VzT25M
aW5lKCk7CisKKyAgICBpZiAoIWNhY2hlLT5pbmRleCkKKyAgICAgICAgcmV0dXJuIHsgfTsKKwor
ICAgIGNhY2hlLT5pbmRleC0tOworCisgICAgcmV0dXJuIGNhY2hlLT5ib3hlc1tjYWNoZS0+aW5k
ZXhdOworfQorCitMZWFmQm94SXRlcmF0b3IgZmlyc3RMZWFmT25MaW5lSW5Mb2dpY2FsT3JkZXJX
aXRoTm9kZShjb25zdCBMaW5lSXRlcmF0b3ImIGxpbmUsIExpbmVMb2dpY2FsT3JkZXJDYWNoZSYg
Y2FjaGUpCit7CisgICAgYXV0byBib3ggPSBmaXJzdExlYWZPbkxpbmVJbkxvZ2ljYWxPcmRlcihs
aW5lLCBjYWNoZSk7CisgICAgd2hpbGUgKCFib3gtPnJlbmRlcmVyKCkubm9kZSgpKQorICAgICAg
ICBib3ggPSBuZXh0TGVhZk9uTGluZUluTG9naWNhbE9yZGVyKGJveCwgY2FjaGUpOworICAgIHJl
dHVybiBib3g7Cit9CisKK0xlYWZCb3hJdGVyYXRvciBsYXN0TGVhZk9uTGluZUluTG9naWNhbE9y
ZGVyV2l0aE5vZGUoY29uc3QgTGluZUl0ZXJhdG9yJiBsaW5lLCBMaW5lTG9naWNhbE9yZGVyQ2Fj
aGUmIGNhY2hlKQoreworICAgIGF1dG8gYm94ID0gbGFzdExlYWZPbkxpbmVJbkxvZ2ljYWxPcmRl
cihsaW5lLCBjYWNoZSk7CisgICAgd2hpbGUgKCFib3gtPnJlbmRlcmVyKCkubm9kZSgpKQorICAg
ICAgICBib3ggPSBwcmV2aW91c0xlYWZPbkxpbmVJbkxvZ2ljYWxPcmRlcihib3gsIGNhY2hlKTsK
KyAgICByZXR1cm4gYm94OworfQorCit9Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvaW50ZWdyYXRpb24vSW5saW5lSXRlcmF0b3JMb2dpY2FsT3JkZXJUcmF2ZXJzYWwuaCBi
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9JbmxpbmVJdGVyYXRvckxvZ2ljYWxP
cmRlclRyYXZlcnNhbC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFjZjU4OTRjOTgwODJkNDkyMTRmZjA2N2JlNzYw
OGNlNWFjN2M4OTIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50
ZWdyYXRpb24vSW5saW5lSXRlcmF0b3JMb2dpY2FsT3JkZXJUcmF2ZXJzYWwuaApAQCAtMCwwICsx
LDYzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJJbmxpbmVJdGVy
YXRvckxpbmUuaCIKKyNpbmNsdWRlICJJbmxpbmVJdGVyYXRvclRleHRCb3guaCIKKworbmFtZXNw
YWNlIFdlYkNvcmUgeworbmFtZXNwYWNlIElubGluZUl0ZXJhdG9yIHsKKworc3RydWN0IFRleHRM
b2dpY2FsT3JkZXJDYWNoZURhdGEgeworICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRF
RDsKKworICAgIFZlY3RvcjxUZXh0Qm94SXRlcmF0b3I+IGJveGVzOworICAgIHNpemVfdCBpbmRl
eCB7IDAgfTsKK307Cit1c2luZyBUZXh0TG9naWNhbE9yZGVyQ2FjaGUgPSBzdGQ6OnVuaXF1ZV9w
dHI8VGV4dExvZ2ljYWxPcmRlckNhY2hlRGF0YT47CisKK3N0ZDo6cGFpcjxUZXh0Qm94SXRlcmF0
b3IsIFRleHRMb2dpY2FsT3JkZXJDYWNoZT4gZmlyc3RUZXh0Qm94SW5Mb2dpY2FsT3JkZXJGb3Io
Y29uc3QgUmVuZGVyVGV4dCYpOworVGV4dEJveEl0ZXJhdG9yIG5leHRUZXh0Qm94SW5Mb2dpY2Fs
T3JkZXIoY29uc3QgVGV4dEJveEl0ZXJhdG9yJiwgVGV4dExvZ2ljYWxPcmRlckNhY2hlJik7CisK
K3N0cnVjdCBMaW5lTG9naWNhbE9yZGVyQ2FjaGVEYXRhIHsKKyAgICBXVEZfTUFLRV9TVFJVQ1Rf
RkFTVF9BTExPQ0FURUQ7CisKKyAgICBMaW5lSXRlcmF0b3IgbGluZTsKKyAgICBWZWN0b3I8TGVh
ZkJveEl0ZXJhdG9yPiBib3hlczsKKyAgICBzaXplX3QgaW5kZXggeyAwIH07Cit9OwordXNpbmcg
TGluZUxvZ2ljYWxPcmRlckNhY2hlID0gc3RkOjp1bmlxdWVfcHRyPExpbmVMb2dpY2FsT3JkZXJD
YWNoZURhdGE+OworCitMZWFmQm94SXRlcmF0b3IgZmlyc3RMZWFmT25MaW5lSW5Mb2dpY2FsT3Jk
ZXIoY29uc3QgTGluZUl0ZXJhdG9yJiwgTGluZUxvZ2ljYWxPcmRlckNhY2hlJik7CitMZWFmQm94
SXRlcmF0b3IgbGFzdExlYWZPbkxpbmVJbkxvZ2ljYWxPcmRlcihjb25zdCBMaW5lSXRlcmF0b3Im
LCBMaW5lTG9naWNhbE9yZGVyQ2FjaGUmKTsKK0xlYWZCb3hJdGVyYXRvciBuZXh0TGVhZk9uTGlu
ZUluTG9naWNhbE9yZGVyKGNvbnN0IExlYWZCb3hJdGVyYXRvciYsIExpbmVMb2dpY2FsT3JkZXJD
YWNoZSYpOworTGVhZkJveEl0ZXJhdG9yIHByZXZpb3VzTGVhZk9uTGluZUluTG9naWNhbE9yZGVy
KGNvbnN0IExlYWZCb3hJdGVyYXRvciYsIExpbmVMb2dpY2FsT3JkZXJDYWNoZSYpOworCitMZWFm
Qm94SXRlcmF0b3IgZmlyc3RMZWFmT25MaW5lSW5Mb2dpY2FsT3JkZXJXaXRoTm9kZShjb25zdCBM
aW5lSXRlcmF0b3ImLCBMaW5lTG9naWNhbE9yZGVyQ2FjaGUmKTsKK0xlYWZCb3hJdGVyYXRvciBs
YXN0TGVhZk9uTGluZUluTG9naWNhbE9yZGVyV2l0aE5vZGUoY29uc3QgTGluZUl0ZXJhdG9yJiwg
TGluZUxvZ2ljYWxPcmRlckNhY2hlJik7CisKK30KK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9pbnRlZ3JhdGlvbi9JbmxpbmVJdGVyYXRvclRleHRCb3guY3BwIGIvU291cmNl
L1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0lubGluZUl0ZXJhdG9yVGV4dEJveC5jcHAKaW5k
ZXggMjE1NjhkZjM0ODgyYWZkNTYyYjg1OGE1NDU1MjBhNWVhOThiZjRiOS4uZDI5MWNmMjYzNDc4
ODQwM2UxMThlOGFlMmQxY2ZlYzczMWQyOTM2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2ludGVncmF0aW9uL0lubGluZUl0ZXJhdG9yVGV4dEJveC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0lubGluZUl0ZXJhdG9yVGV4dEJveC5jcHAKQEAg
LTk5LDQzICs5OSw2IEBAIFRleHRCb3hJdGVyYXRvciBmaXJzdFRleHRCb3hGb3IoY29uc3QgUmVu
ZGVyVGV4dCYgdGV4dCkKICAgICByZXR1cm4geyBCb3hMZWdhY3lQYXRoIHsgdGV4dC5maXJzdFRl
eHRCb3goKSB9IH07CiB9CiAKLXN0ZDo6cGFpcjxUZXh0Qm94SXRlcmF0b3IsIExvZ2ljYWxPcmRl
ckNhY2hlPiBmaXJzdFRleHRCb3hJbkxvZ2ljYWxPcmRlckZvcihjb25zdCBSZW5kZXJUZXh0JiB0
ZXh0KQotewotICAgIGlmICghdGV4dC5jb250YWluc1JldmVyc2VkVGV4dCgpKQotICAgICAgICBy
ZXR1cm4geyBmaXJzdFRleHRCb3hGb3IodGV4dCksIG51bGxwdHIgfTsKLQotICAgIGF1dG8gY2Fj
aGUgPSBXVEY6Om1ha2VVbmlxdWU8TG9naWNhbE9yZGVyQ2FjaGVEYXRhPigpOwotICAgIGZvciAo
YXV0byB0ZXh0Qm94IDogdGV4dEJveGVzRm9yKHRleHQpKQotICAgICAgICBjYWNoZS0+Ym94ZXMu
YXBwZW5kKHRleHRCb3gpOwotCi0gICAgaWYgKGNhY2hlLT5ib3hlcy5pc0VtcHR5KCkpCi0gICAg
ICAgIHJldHVybiB7IFRleHRCb3hJdGVyYXRvciB7IH0sIG51bGxwdHIgfTsKLQotICAgIHN0ZDo6
c29ydChjYWNoZS0+Ym94ZXMuYmVnaW4oKSwgY2FjaGUtPmJveGVzLmVuZCgpLCBbJl0oYXV0byYg
YSwgYXV0byYgYikgewotICAgICAgICByZXR1cm4gYS0+c3RhcnQoKSA8IGItPnN0YXJ0KCk7Ci0g
ICAgfSk7Ci0KLSAgICByZXR1cm4geyBjYWNoZS0+Ym94ZXNbMF0sIFdURk1vdmUoY2FjaGUpIH07
Ci19Ci0KLVRleHRCb3hJdGVyYXRvciBuZXh0VGV4dEJveEluTG9naWNhbE9yZGVyKGNvbnN0IFRl
eHRCb3hJdGVyYXRvciYgdGV4dEJveCwgTG9naWNhbE9yZGVyQ2FjaGUmIGNhY2hlKQotewotICAg
IGlmICghY2FjaGUpCi0gICAgICAgIHJldHVybiB0ZXh0Qm94LT5uZXh0VGV4dEJveCgpOwotCi0g
ICAgaWYgKGNhY2hlLT5pbmRleCA9PSBjYWNoZS0+Ym94ZXMuc2l6ZSgpIHx8IGNhY2hlLT5ib3hl
c1tjYWNoZS0+aW5kZXhdICE9IHRleHRCb3gpIHsKLSAgICAgICAgY2FjaGUtPmluZGV4ID0gY2Fj
aGUtPmJveGVzLmZpbmQodGV4dEJveCk7Ci0gICAgICAgIEFTU0VSVChjYWNoZS0+aW5kZXggIT0g
bm90Rm91bmQpOwotICAgIH0KLQotICAgIGNhY2hlLT5pbmRleCsrOwotCi0gICAgaWYgKGNhY2hl
LT5pbmRleCA8IGNhY2hlLT5ib3hlcy5zaXplKCkpCi0gICAgICAgIHJldHVybiBjYWNoZS0+Ym94
ZXNbY2FjaGUtPmluZGV4XTsKLQotICAgIHJldHVybiB7IH07Ci19Ci0KIFRleHRCb3hJdGVyYXRv
ciB0ZXh0Qm94Rm9yKGNvbnN0IExlZ2FjeUlubGluZVRleHRCb3gqIGxlZ2FjeUlubGluZVRleHRC
b3gpCiB7CiAgICAgcmV0dXJuIHsgQm94TGVnYWN5UGF0aCB7IGxlZ2FjeUlubGluZVRleHRCb3gg
fSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0lubGlu
ZUl0ZXJhdG9yVGV4dEJveC5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0lu
bGluZUl0ZXJhdG9yVGV4dEJveC5oCmluZGV4IDQyYjQ3ZTM0OTk3ZjMzYjJhODdkYjVlMGI3YTVi
MWFhMGRlMjgzYjguLmU5MzJjMDY4NzcyNTI1ZTYyZTA4ZmY0NzYwNTJhNjE2Nzk1NWQ1ZmMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9JbmxpbmVJdGVyYXRv
clRleHRCb3guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vSW5saW5l
SXRlcmF0b3JUZXh0Qm94LmgKQEAgLTMyLDkgKzMyLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBuYW1lc3BhY2UgSW5saW5lSXRlcmF0b3IgewogCi1zdHJ1Y3QgTG9naWNhbE9yZGVyQ2FjaGVE
YXRhOwotdXNpbmcgTG9naWNhbE9yZGVyQ2FjaGUgPSBzdGQ6OnVuaXF1ZV9wdHI8TG9naWNhbE9y
ZGVyQ2FjaGVEYXRhPjsKLQogY2xhc3MgVGV4dEJveCA6IHB1YmxpYyBCb3ggewogcHVibGljOgog
ICAgIFRleHRCb3goUGF0aFZhcmlhbnQmJik7CkBAIC02Myw2ICs2MCw3IEBAIHB1YmxpYzoKICAg
ICBjb25zdCBMZWdhY3lJbmxpbmVUZXh0Qm94KiBsZWdhY3lJbmxpbmVCb3goKSBjb25zdCB7IHJl
dHVybiBkb3duY2FzdDxMZWdhY3lJbmxpbmVUZXh0Qm94PihCb3g6OmxlZ2FjeUlubGluZUJveCgp
KTsgfQogCiAgICAgVGV4dEJveEl0ZXJhdG9yIG5leHRUZXh0Qm94KCkgY29uc3Q7CisgICAgVGV4
dEJveEl0ZXJhdG9yIHByZXZpb3VzVGV4dEJveCgpIGNvbnN0OwogfTsKIAogY2xhc3MgVGV4dEJv
eEl0ZXJhdG9yIDogcHVibGljIExlYWZCb3hJdGVyYXRvciB7CkBAIC04Myw4ICs4MSw2IEBAIHBy
aXZhdGU6CiAgICAgQm94SXRlcmF0b3ImIHRyYXZlcnNlUHJldmlvdXNPbkxpbmUoKSA9IGRlbGV0
ZTsKICAgICBCb3hJdGVyYXRvciYgdHJhdmVyc2VOZXh0T25MaW5lSWdub3JpbmdMaW5lQnJlYWso
KSA9IGRlbGV0ZTsKICAgICBCb3hJdGVyYXRvciYgdHJhdmVyc2VQcmV2aW91c09uTGluZUlnbm9y
aW5nTGluZUJyZWFrKCkgPSBkZWxldGU7Ci0gICAgQm94SXRlcmF0b3ImIHRyYXZlcnNlTmV4dE9u
TGluZUluTG9naWNhbE9yZGVyKCkgPSBkZWxldGU7Ci0gICAgQm94SXRlcmF0b3ImIHRyYXZlcnNl
UHJldmlvdXNPbkxpbmVJbkxvZ2ljYWxPcmRlcigpID0gZGVsZXRlOwogCiAgICAgY29uc3QgVGV4
dEJveCYgZ2V0KCkgY29uc3QgeyByZXR1cm4gZG93bmNhc3Q8VGV4dEJveD4obV9ib3gpOyB9CiB9
OwpAQCAtMTExLDE1ICsxMDcsNiBAQCBUZXh0Qm94SXRlcmF0b3IgdGV4dEJveEZvcihjb25zdCBM
YXlvdXRJbnRlZ3JhdGlvbjo6SW5saW5lQ29udGVudCYsIHNpemVfdCBib3hJbgogI2VuZGlmCiBU
ZXh0Qm94UmFuZ2UgdGV4dEJveGVzRm9yKGNvbnN0IFJlbmRlclRleHQmKTsKIAotc3RydWN0IExv
Z2ljYWxPcmRlckNhY2hlRGF0YSB7Ci0gICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVE
OwotICAgIAotICAgIFZlY3RvcjxUZXh0Qm94SXRlcmF0b3I+IGJveGVzOwotICAgIHNpemVfdCBp
bmRleCB7IDAgfTsKLX07Ci1zdGQ6OnBhaXI8VGV4dEJveEl0ZXJhdG9yLCBMb2dpY2FsT3JkZXJD
YWNoZT4gZmlyc3RUZXh0Qm94SW5Mb2dpY2FsT3JkZXJGb3IoY29uc3QgUmVuZGVyVGV4dCYpOwot
VGV4dEJveEl0ZXJhdG9yIG5leHRUZXh0Qm94SW5Mb2dpY2FsT3JkZXIoY29uc3QgVGV4dEJveEl0
ZXJhdG9yJiwgTG9naWNhbE9yZGVyQ2FjaGUmKTsKLQogaW5saW5lIGJvb2wgVGV4dEJveDo6aGFz
SHlwaGVuKCkgY29uc3QKIHsKICAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbihtX3BhdGhWYXJpYW50
LCBbXShhdXRvJiBwYXRoKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQmxvY2tGbG93LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9j
a0Zsb3cuY3BwCmluZGV4IDExOGNjMjBhN2IyZWE1OTEzNTljNzI1MjU2MzQxZGQ3YmYxN2RmYzAu
LmYyYzYyOGY2NzFiYmZlNWNiODhlNTg1Y2NhZGZhMmYyY2U3NTE2ZmQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuY3BwCkBAIC0zNiw2ICszNiw3IEBACiAj
aW5jbHVkZSAiSGl0VGVzdExvY2F0aW9uLmgiCiAjaW5jbHVkZSAiSW5saW5lSXRlcmF0b3JCb3gu
aCIKICNpbmNsdWRlICJJbmxpbmVJdGVyYXRvckxpbmUuaCIKKyNpbmNsdWRlICJJbmxpbmVJdGVy
YXRvckxvZ2ljYWxPcmRlclRyYXZlcnNhbC5oIgogI2luY2x1ZGUgIklubGluZUl0ZXJhdG9yVGV4
dEJveC5oIgogI2luY2x1ZGUgIklubGluZVdhbGtlci5oIgogI2luY2x1ZGUgIkxheW91dEludGVn
cmF0aW9uTGluZUxheW91dC5oIgpAQCAtMzYxOSw3ICszNjIwLDggQEAgVmlzaWJsZVBvc2l0aW9u
IFJlbmRlckJsb2NrRmxvdzo6cG9zaXRpb25Gb3JQb2ludFdpdGhJbmxpbmVDaGlsZHJlbihjb25z
dCBMYXlvdXQKICAgICBpZiAobGFzdExpbmVXaXRoQ2hpbGRyZW4pIHsKICAgICAgICAgLy8gV2Ug
aGl0IHRoaXMgY2FzZSBmb3IgTWFjIGJlaGF2aW9yIHdoZW4gdGhlIFkgY29vcmRpbmF0ZSBpcyBi
ZWxvdyB0aGUgbGFzdCBib3guCiAgICAgICAgIEFTU0VSVChtb3ZlQ2FyZXRUb0JvdW5kYXJ5KTsK
LSAgICAgICAgaWYgKGF1dG8gbG9naWNhbGx5TGFzdFJ1biA9IGxhc3RMaW5lV2l0aENoaWxkcmVu
LT5sb2dpY2FsRW5kUnVuV2l0aE5vZGUoKSkKKyAgICAgICAgSW5saW5lSXRlcmF0b3I6OkxpbmVM
b2dpY2FsT3JkZXJDYWNoZSBvcmRlckNhY2hlOworICAgICAgICBpZiAoYXV0byBsb2dpY2FsbHlM
YXN0UnVuID0gSW5saW5lSXRlcmF0b3I6Omxhc3RMZWFmT25MaW5lSW5Mb2dpY2FsT3JkZXJXaXRo
Tm9kZShsYXN0TGluZVdpdGhDaGlsZHJlbiwgb3JkZXJDYWNoZSkpCiAgICAgICAgICAgICByZXR1
cm4gcG9zaXRpb25Gb3JSdW4oKnRoaXMsIGxvZ2ljYWxseUxhc3RSdW4sIGZhbHNlKTsKICAgICB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmNwcAppbmRleCA1N2RmMTQxZWY0
NzY3N2Q2MmFjMWIxM2Y0YWUyOTU3YzIyNWU4ODRmLi4yODE2NzMwODc3MzNkYjlkM2RmNjk2YzQ0
NjM5OTBkMmYyNmRhNmVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuY3Bw
CkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAiSFRNTFBhcnNlcklkaW9tcy5oIgogI2luY2x1
ZGUgIkh5cGhlbmF0aW9uLmgiCiAjaW5jbHVkZSAiSW5saW5lSXRlcmF0b3JMaW5lLmgiCisjaW5j
bHVkZSAiSW5saW5lSXRlcmF0b3JMb2dpY2FsT3JkZXJUcmF2ZXJzYWwuaCIKICNpbmNsdWRlICJJ
bmxpbmVJdGVyYXRvclRleHRCb3guaCIKICNpbmNsdWRlICJJbmxpbmVSdW5BbmRPZmZzZXQuaCIK
ICNpbmNsdWRlICJMYXlvdXRJbnRlZ3JhdGlvbkxpbmVMYXlvdXQuaCIK
</data>
<flag name="commit-queue"
          id="465592"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>441365</attachid>
            <date>2021-10-15 05:25:31 -0700</date>
            <delta_ts>2021-10-15 07:04:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-231800-20211015152529.patch</filename>
            <type>text/plain</type>
            <size>54238</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg0MjM2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODUwN2I1YjhiMjkzNjZj
N2M0ZDI3Mzk5ZWE0ZjQ1YzgxNTczZjU2OS4uMzU5ZGJjMWNmNDk2Y2U3ZmRhNDBlYzA0MWEyYzQ3
ZjQ3N2E4ZWRiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg4IEBACisyMDIxLTEwLTE1ICBBbnR0
aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBbTEZDXVtJbnRlZ3JhdGlv
bl0gRmFjdG9yIGxpbmUgbG9naWNhbCBvcmRlciB0cmF2ZXJzYWwgb3V0IG9mIGl0ZXJhdG9yCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzE4MDAKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTaW1pbGFyIHRv
IHRleHQgbG9naWNhbCBvcmRlciB0cmF2ZXJzYWwsIHVzZSBzdGFuZGFsb25lIHRyYXZlcnNhbCBm
dW5jdGlvbnMgd2l0aCBvcmRlciBjYWNoZQorICAgICAgICBvd25lZCBieSB0aGUgY2FsbGVyLgor
CisgICAgICAgIE1ha2UgdGhlIGNvZGUgZ2VuZXJpYyBzbyBpdCB3aWxsIHdvcmsgd2l0aCBJRkMg
QmlEaS4KKworICAgICAgICBGYWN0b3IgYWxsIHRyYXZlcnNhbCBmdW5jdGlvbnMgdG8gYSBmaWxl
IG9mIHRoZWlyIG93biwgSW5saW5lSXRlcmF0b3JMb2dpY2FsT3JkZXJUcmF2ZXJzYWwuaC9jcHAu
CisKKyAgICAgICAgKiBIZWFkZXJzLmNtYWtlOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAg
ICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBkb20v
UG9zaXRpb24uY3BwOgorICAgICAgICAqIGVkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuY3Bw
OgorICAgICAgICAqIGVkaXRpbmcvVGV4dEl0ZXJhdG9yLmg6CisgICAgICAgICogZWRpdGluZy9W
aXNpYmxlUG9zaXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VmlzaWJsZVBvc2l0aW9uOjps
ZWZ0VmlzdWFsbHlEaXN0aW5jdENhbmRpZGF0ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpW
aXNpYmxlUG9zaXRpb246OnJpZ2h0VmlzdWFsbHlEaXN0aW5jdENhbmRpZGF0ZSBjb25zdCk6Cisg
ICAgICAgICogZWRpdGluZy9WaXNpYmxlVW5pdHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cHJl
dmlvdXNUZXh0T3JMaW5lQnJlYWtSdW4pOgorICAgICAgICAoV2ViQ29yZTo6bmV4dFRleHRPckxp
bmVCcmVha1J1bik6CisgICAgICAgIChXZWJDb3JlOjpzdGFydFRleHRPckxpbmVCcmVha1J1bik6
CisgICAgICAgIChXZWJDb3JlOjplbmRUZXh0T3JMaW5lQnJlYWtSdW4pOgorICAgICAgICAoV2Vi
Q29yZTo6bG9naWNhbGx5UHJldmlvdXNSdW4pOgorICAgICAgICAoV2ViQ29yZTo6bG9naWNhbGx5
TmV4dFJ1bik6CisgICAgICAgIChXZWJDb3JlOjp3b3JkQnJlYWtJdGVyYXRvckZvck1pbk9mZnNl
dEJvdW5kYXJ5KToKKyAgICAgICAgKFdlYkNvcmU6OndvcmRCcmVha0l0ZXJhdG9yRm9yTWF4T2Zm
c2V0Qm91bmRhcnkpOgorICAgICAgICAoV2ViQ29yZTo6c3RhcnRQb3NpdGlvbkZvckxpbmUpOgor
ICAgICAgICAoV2ViQ29yZTo6ZW5kUG9zaXRpb25Gb3JMaW5lKToKKyAgICAgICAgKiBsYXlvdXQv
aW50ZWdyYXRpb24vSW5saW5lSXRlcmF0b3JCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5s
aW5lSXRlcmF0b3I6OkxlYWZCb3hJdGVyYXRvcjo6dHJhdmVyc2VQcmV2aW91c09uTGluZUlnbm9y
aW5nTGluZUJyZWFrKToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpMZWFmQm94
SXRlcmF0b3I6OnRyYXZlcnNlTmV4dE9uTGluZUluTG9naWNhbE9yZGVyKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpMZWFmQm94SXRlcmF0b3I6OnRyYXZlcnNl
UHJldmlvdXNPbkxpbmVJbkxvZ2ljYWxPcmRlcik6IERlbGV0ZWQuCisgICAgICAgICogbGF5b3V0
L2ludGVncmF0aW9uL0lubGluZUl0ZXJhdG9yQm94Lmg6CisgICAgICAgIChXZWJDb3JlOjpJbmxp
bmVJdGVyYXRvcjo6Qm94SXRlcmF0b3I6OkJveEl0ZXJhdG9yKToKKyAgICAgICAgKiBsYXlvdXQv
aW50ZWdyYXRpb24vSW5saW5lSXRlcmF0b3JCb3hMZWdhY3lQYXRoLmg6CisgICAgICAgIChXZWJD
b3JlOjpJbmxpbmVJdGVyYXRvcjo6Qm94TGVnYWN5UGF0aDo6Qm94TGVnYWN5UGF0aCk6CisgICAg
ICAgIChXZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6Qm94TGVnYWN5UGF0aDo6dHJhdmVyc2VOZXh0
T25MaW5lSW5Mb2dpY2FsT3JkZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW5saW5l
SXRlcmF0b3I6OkJveExlZ2FjeVBhdGg6OnRyYXZlcnNlUHJldmlvdXNPbkxpbmVJbkxvZ2ljYWxP
cmRlcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6Qm94TGVn
YWN5UGF0aDo6aW5pdGlhbGl6ZUxvZ2ljYWxPcmRlckNhY2hlRm9yTGluZSk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6Qm94TGVnYWN5UGF0aDo6dHJhdmVyc2VO
ZXh0SW5saW5lQm94SW5DYWNoZU9yZGVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Oklu
bGluZUl0ZXJhdG9yOjpCb3hMZWdhY3lQYXRoOjp0cmF2ZXJzZVByZXZpb3VzSW5saW5lQm94SW5D
YWNoZU9yZGVyKTogRGVsZXRlZC4KKyAgICAgICAgKiBsYXlvdXQvaW50ZWdyYXRpb24vSW5saW5l
SXRlcmF0b3JCb3hNb2Rlcm5QYXRoLmg6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVyYXRv
cjo6Qm94TW9kZXJuUGF0aDo6dHJhdmVyc2VOZXh0T25MaW5lSW5Mb2dpY2FsT3JkZXIpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRlcmF0b3I6OkJveE1vZGVyblBhdGg6OnRy
YXZlcnNlUHJldmlvdXNPbkxpbmVJbkxvZ2ljYWxPcmRlcik6IERlbGV0ZWQuCisgICAgICAgICog
bGF5b3V0L2ludGVncmF0aW9uL0lubGluZUl0ZXJhdG9yTGluZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJbmxpbmVJdGVyYXRvcjo6TGluZTo6bG9naWNhbFN0YXJ0UnVuIGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpMaW5lOjpsb2dpY2FsRW5kUnVu
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpMaW5l
Ojpsb2dpY2FsU3RhcnRSdW5XaXRoTm9kZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpJbmxpbmVJdGVyYXRvcjo6TGluZTo6bG9naWNhbEVuZFJ1bldpdGhOb2RlIGNvbnN0KTog
RGVsZXRlZC4KKyAgICAgICAgKiBsYXlvdXQvaW50ZWdyYXRpb24vSW5saW5lSXRlcmF0b3JMaW5l
Lmg6CisgICAgICAgICogbGF5b3V0L2ludGVncmF0aW9uL0lubGluZUl0ZXJhdG9yTGluZUxlZ2Fj
eVBhdGguaDoKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpMaW5lSXRlcmF0b3JM
ZWdhY3lQYXRoOjpsb2dpY2FsU3RhcnRSdW4gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6SW5saW5lSXRlcmF0b3I6OkxpbmVJdGVyYXRvckxlZ2FjeVBhdGg6OmxvZ2ljYWxFbmRS
dW4gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIGxheW91dC9pbnRlZ3JhdGlvbi9JbmxpbmVJ
dGVyYXRvckxpbmVNb2Rlcm5QYXRoLmg6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVyYXRv
cjo6TGluZUl0ZXJhdG9yTW9kZXJuUGF0aDo6bG9naWNhbFN0YXJ0UnVuIGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpMaW5lSXRlcmF0b3JNb2Rlcm5Q
YXRoOjpsb2dpY2FsRW5kUnVuIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBsYXlvdXQvaW50
ZWdyYXRpb24vSW5saW5lSXRlcmF0b3JMb2dpY2FsT3JkZXJUcmF2ZXJzYWwuY3BwOiBBZGRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjptYWtlVGV4dExvZ2ljYWxPcmRlckNh
Y2hlSWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRlcmF0b3I6OnVwZGF0ZVRl
eHRMb2dpY2FsT3JkZXJDYWNoZUlmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0
ZXJhdG9yOjpmaXJzdFRleHRCb3hJbkxvZ2ljYWxPcmRlckZvcik6CisgICAgICAgIChXZWJDb3Jl
OjpJbmxpbmVJdGVyYXRvcjo6bmV4dFRleHRCb3hJbkxvZ2ljYWxPcmRlcik6CisgICAgICAgIChX
ZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6bWFrZUxpbmVMb2dpY2FsT3JkZXJDYWNoZUlmTmVlZGVk
KToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjp1cGRhdGVMaW5lTG9naWNhbE9y
ZGVyQ2FjaGVJZk5lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6Zmly
c3RMZWFmT25MaW5lSW5Mb2dpY2FsT3JkZXIpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRl
cmF0b3I6Omxhc3RMZWFmT25MaW5lSW5Mb2dpY2FsT3JkZXIpOgorICAgICAgICAoV2ViQ29yZTo6
SW5saW5lSXRlcmF0b3I6Om5leHRMZWFmT25MaW5lSW5Mb2dpY2FsT3JkZXIpOgorICAgICAgICAo
V2ViQ29yZTo6SW5saW5lSXRlcmF0b3I6OnByZXZpb3VzTGVhZk9uTGluZUluTG9naWNhbE9yZGVy
KToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpmaXJzdExlYWZPbkxpbmVJbkxv
Z2ljYWxPcmRlcldpdGhOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjps
YXN0TGVhZk9uTGluZUluTG9naWNhbE9yZGVyV2l0aE5vZGUpOgorICAgICAgICAqIGxheW91dC9p
bnRlZ3JhdGlvbi9JbmxpbmVJdGVyYXRvckxvZ2ljYWxPcmRlclRyYXZlcnNhbC5oOiBBZGRlZC4K
KyAgICAgICAgKiBsYXlvdXQvaW50ZWdyYXRpb24vSW5saW5lSXRlcmF0b3JUZXh0Qm94LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpmaXJzdFRleHRCb3hJbkxvZ2ljYWxP
cmRlckZvcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6bmV4
dFRleHRCb3hJbkxvZ2ljYWxPcmRlcik6IERlbGV0ZWQuCisgICAgICAgICogbGF5b3V0L2ludGVn
cmF0aW9uL0lubGluZUl0ZXJhdG9yVGV4dEJveC5oOgorICAgICAgICAoKTogRGVsZXRlZC4KKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckJsb2NrRmxvdzo6cG9zaXRpb25Gb3JQb2ludFdpdGhJbmxpbmVDaGlsZHJlbik6Cisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwOgorCiAyMDIxLTEwLTE0ICBZb3Vlbm4g
RmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBNZWRpYUNhcGFiaWxpdGllcyBz
aG91bGQgZW5xdWV1ZSBhIHRhc2sgdG8gcmVzb2x2ZSBwcm9taXNlcwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UK
aW5kZXggYjA2NTdlMWNjOWRlNTliMDkyOTg1OWQ0OTE3MmVmMTljZmQ4ZTYzMS4uNGNlNTUxY2Nk
MDM1ZDFiNTcwNjNlZjQxMjRmM2JjZWNkMmI3MjFlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvSGVhZGVycy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCkBAIC04
MDcsNiArODA3LDcgQEAgc2V0KFdlYkNvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogICAg
IGxheW91dC9pbnRlZ3JhdGlvbi9JbmxpbmVJdGVyYXRvckxpbmUuaAogICAgIGxheW91dC9pbnRl
Z3JhdGlvbi9JbmxpbmVJdGVyYXRvckxpbmVMZWdhY3lQYXRoLmgKICAgICBsYXlvdXQvaW50ZWdy
YXRpb24vSW5saW5lSXRlcmF0b3JMaW5lTW9kZXJuUGF0aC5oCisgICAgbGF5b3V0L2ludGVncmF0
aW9uL0lubGluZUl0ZXJhdG9yTG9naWNhbE9yZGVyVHJhdmVyc2FsLmgKICAgICBsYXlvdXQvaW50
ZWdyYXRpb24vSW5saW5lSXRlcmF0b3JUZXh0Qm94LmgKICAgICBsYXlvdXQvaW50ZWdyYXRpb24v
TGF5b3V0SW50ZWdyYXRpb25JbmxpbmVDb250ZW50LmgKICAgICBsYXlvdXQvaW50ZWdyYXRpb24v
TGF5b3V0SW50ZWdyYXRpb25MaW5lLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJj
ZXMudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXggMjU3MjYxOTBjOTFhZTM4
N2RlM2Q0MWVjYjBhOTY5NjlmZGU2YWUxZS4uYzNlMjU4N2U2Y2NmYzEyYzBlOTMzMzE2ZjNlMmQ0
NDUyOGUxNjZmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIv
U291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKQEAgLTE1MjIsNiArMTUyMiw3IEBAIGxheW91dC9m
b3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL3RleHQvVGV4dFV0aWwuY3BwCiBsYXlvdXQvaW50ZWdy
YXRpb24vSW5saW5lSXRlcmF0b3JCb3guY3BwCiBsYXlvdXQvaW50ZWdyYXRpb24vSW5saW5lSXRl
cmF0b3JJbmxpbmVCb3guY3BwCiBsYXlvdXQvaW50ZWdyYXRpb24vSW5saW5lSXRlcmF0b3JMaW5l
LmNwcAorbGF5b3V0L2ludGVncmF0aW9uL0lubGluZUl0ZXJhdG9yTG9naWNhbE9yZGVyVHJhdmVy
c2FsLmNwcAogbGF5b3V0L2ludGVncmF0aW9uL0lubGluZUl0ZXJhdG9yVGV4dEJveC5jcHAKIGxh
eW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbkJveFRyZWUuY3BwCiBsYXlvdXQvaW50
ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25Db3ZlcmFnZS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBhMTIzNmVmZWI3MzA4
ZDUzOTBlNWY4Y2UwZDI3Njk0ZGE0MTJkMTllLi43M2RhYWQ0MTU1NGZhM2E1YTQwM2MyZDg1NzMw
ZDZjNDU0MDhlYmJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCkBAIC01MjUyLDYgKzUyNTIsNyBAQAogCQlFNDE1RUIxMzI3MEMzNTEz
MDBFOERBMUIgLyogSW5saW5lSXRlcmF0b3JJbmxpbmVCb3guaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0MTVFQjExMjcwQzM1MTIwMEU4REExQiAvKiBJ
bmxpbmVJdGVyYXRvcklubGluZUJveC5oICovOyB9OwogCQlFNDE4MDI1NTIzRDQ1NDlCMDBGRkIw
NzEgLyogTGF5b3V0SW50ZWdyYXRpb25Cb3hUcmVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNDE4MDI1MzIzRDQ1NDlBMDBGRkIwNzEgLyogTGF5b3V0
SW50ZWdyYXRpb25Cb3hUcmVlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJRTQxOTA0MUYxQ0M2NDg2QjAwQzM1RjVEIC8qIEZvbnRTZWxlY3RvckNs
aWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTQx
OTA0MUUxQ0M2NDg2QjAwQzM1RjVEIC8qIEZvbnRTZWxlY3RvckNsaWVudC5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUU0MUFDQzE2MjcxNzM0MDIw
MDNFOTE1NyAvKiBJbmxpbmVJdGVyYXRvckxvZ2ljYWxPcmRlclRyYXZlcnNhbC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTQxQUNDMTUyNzE3MzQwMjAw
M0U5MTU3IC8qIElubGluZUl0ZXJhdG9yTG9naWNhbE9yZGVyVHJhdmVyc2FsLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTQyMDUwMTcyMTQxOTAx
QjAwNjZFRjNCIC8qIFByb2Nlc3NXYXJtaW5nLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBFNDIwNTAxNDIxNDE5MDFBMDA2NkVGM0IgLyogUHJvY2Vzc1dh
cm1pbmcuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQlFNDI0QTM5RTEzMzBERjAxMDBDRjZEQzkgLyogTGVnYWN5VGlsZUdyaWRUaWxlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNDI0QTM5RDEzMzBERjAx
MDBDRjZEQzkgLyogTGVnYWN5VGlsZUdyaWRUaWxlLmggKi87IH07CiAJCUU0MjVBNDlBMTgyOTJC
ODQwMDIwQ0ZDRiAvKiBDb2xsZWN0aW9uSW5kZXhDYWNoZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTQyNUE0OTkxODI5MkI4NDAwMjBDRkNGIC8qIENv
bGxlY3Rpb25JbmRleENhY2hlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKQEAgLTUzNTAsOSArNTM1MSw5IEBACiAJCUU0QzkxQTBFMTgwMjM0MzEwMEEx
N0Y2RCAvKiBUZXh0UGFpbnRTdHlsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRTRDOTFBMEQxODAyMzQzMTAwQTE3RjZEIC8qIFRleHRQYWludFN0eWxl
LmggKi87IH07CiAJCUU0QzkxQTE2MTgwOTk5RjEwMEExN0Y2RCAvKiBSZW5kZXJUZXh0TGluZUJv
eGVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNEM5
MUExNTE4MDk5OUYxMDBBMTdGNkQgLyogUmVuZGVyVGV4dExpbmVCb3hlcy5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUU0RDMzRjNCMjUyQUVFQ0Qw
MDgzN0QwNSAvKiBJbmxpbmVSdW5BbmRPZmZzZXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0RDMzRjM5MjUyQUVFQ0MwMDgzN0QwNSAvKiBJbmxpbmVS
dW5BbmRPZmZzZXQuaCAqLzsgfTsKLQkJRTREMzNGNDEyNTJDNEI4MzAwODM3RDA1IC8qIElubGlu
ZUl0ZXJhdG9yTGluZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRTREMzNGM0YyNTJDNEI4MjAwODM3RDA1IC8qIElubGluZUl0ZXJhdG9yTGluZS5oICov
OyB9OwotCQlFNEQzM0Y0NDI1MkM1MEUyMDA4MzdEMDUgLyogSW5saW5lSXRlcmF0b3JMaW5lTGVn
YWN5UGF0aC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RTREMzNGNDMyNTJDNTBFMjAwODM3RDA1IC8qIElubGluZUl0ZXJhdG9yTGluZUxlZ2FjeVBhdGgu
aCAqLzsgfTsKLQkJRTREMzNGNDYyNTJDNTBGQzAwODM3RDA1IC8qIElubGluZUl0ZXJhdG9yTGlu
ZU1vZGVyblBhdGguaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEU0RDMzRjQ1MjUyQzUwRkIwMDgzN0QwNSAvKiBJbmxpbmVJdGVyYXRvckxpbmVNb2Rlcm5Q
YXRoLmggKi87IH07CisJCUU0RDMzRjQxMjUyQzRCODMwMDgzN0QwNSAvKiBJbmxpbmVJdGVyYXRv
ckxpbmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0
RDMzRjNGMjUyQzRCODIwMDgzN0QwNSAvKiBJbmxpbmVJdGVyYXRvckxpbmUuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlFNEQzM0Y0NDI1MkM1MEUy
MDA4MzdEMDUgLyogSW5saW5lSXRlcmF0b3JMaW5lTGVnYWN5UGF0aC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTREMzNGNDMyNTJDNTBFMjAwODM3RDA1
IC8qIElubGluZUl0ZXJhdG9yTGluZUxlZ2FjeVBhdGguaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlFNEQzM0Y0NjI1MkM1MEZDMDA4MzdEMDUgLyog
SW5saW5lSXRlcmF0b3JMaW5lTW9kZXJuUGF0aC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRTREMzNGNDUyNTJDNTBGQjAwODM3RDA1IC8qIElubGluZUl0
ZXJhdG9yTGluZU1vZGVyblBhdGguaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQlFNEQ1OEVCNTE3QjREQkRDMDBDQkRDQTggLyogU3R5bGVSZXNvbHZl
Rm9yRG9jdW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEU0RDU4RUIzMTdCNERCREMwMENCRENBOCAvKiBTdHlsZVJlc29sdmVGb3JEb2N1bWVudC5o
ICovOyB9OwogCQlFNEQ1OEVCOTE3QjRFRDg5MDBDQkRDQTggLyogU3R5bGVGb250U2l6ZUZ1bmN0
aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTRE
NThFQjcxN0I0RUQ4OTAwQ0JEQ0E4IC8qIFN0eWxlRm9udFNpemVGdW5jdGlvbnMuaCAqLzsgfTsK
IAkJRTRENThFQkIxN0I4RjEyODAwQ0JEQ0E4IC8qIEVsZW1lbnRUcmF2ZXJzYWwuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0RDU4RUJBMTdCOEYxMjgw
MENCRENBOCAvKiBFbGVtZW50VHJhdmVyc2FsLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTE2NTM0LDYgKzE2NTM1LDggQEAKIAkJRTQxODAyNTMy
M0Q0NTQ5QTAwRkZCMDcxIC8qIExheW91dEludGVncmF0aW9uQm94VHJlZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBMYXlvdXRJbnRlZ3JhdGlvbkJveFRyZWUuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTQxODAyNTYyM0Q0NTRCNTAwRkZCMDcxIC8qIExheW91
dEludGVncmF0aW9uQm94VHJlZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBMYXlvdXRJbnRlZ3Jh
dGlvbkJveFRyZWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFNDE5MDQxRTFD
QzY0ODZCMDBDMzVGNUQgLyogRm9udFNlbGVjdG9yQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEZvbnRTZWxlY3RvckNsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlFNDFBQ0MxMjI3MTczM0YzMDAzRTkxNTcgLyogSW5saW5lSXRlcmF0b3JMb2dp
Y2FsT3JkZXJUcmF2ZXJzYWwuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gSW5saW5lSXRlcmF0b3JMb2dpY2FsT3JkZXJUcmF2ZXJzYWwuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlFNDFBQ0MxNTI3MTczNDAyMDAzRTkxNTcgLyogSW5saW5lSXRlcmF0
b3JMb2dpY2FsT3JkZXJUcmF2ZXJzYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSW5saW5lSXRlcmF0b3JMb2dpY2FsT3JkZXJUcmF2ZXJzYWwuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJRTQxRUEwMzgxMTk4MzZEQjAwNzEwQkM1IC8qIENTU1Byb3BlcnR5TmFt
ZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gQ1NTUHJvcGVydHlO
YW1lcy5jcHA7IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJDb3JlL0NTU1Byb3BlcnR5TmFtZXMu
Y3BwOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQlFNDFFQTAzOTExOTgz
NzQ5MDA3MTBCQzUgLyogQ1NTVmFsdWVLZXl3b3Jkcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IG5hbWUgPSBDU1NWYWx1ZUtleXdvcmRzLmNwcDsgcGF0aCA9IERlcml2ZWRTb3Vy
Y2VzL1dlYkNvcmUvQ1NTVmFsdWVLZXl3b3Jkcy5jcHA7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9E
VUNUU19ESVI7IH07CiAJCUU0MjA1MDE0MjE0MTkwMUEwMDY2RUYzQiAvKiBQcm9jZXNzV2FybWlu
Zy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQcm9jZXNzV2FybWluZy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjk3MDcsNiArMjk3MTAsOCBAQAogCQkJCUU0
RDMzRjNGMjUyQzRCODIwMDgzN0QwNSAvKiBJbmxpbmVJdGVyYXRvckxpbmUuaCAqLywKIAkJCQlF
NEQzM0Y0MzI1MkM1MEUyMDA4MzdEMDUgLyogSW5saW5lSXRlcmF0b3JMaW5lTGVnYWN5UGF0aC5o
ICovLAogCQkJCUU0RDMzRjQ1MjUyQzUwRkIwMDgzN0QwNSAvKiBJbmxpbmVJdGVyYXRvckxpbmVN
b2Rlcm5QYXRoLmggKi8sCisJCQkJRTQxQUNDMTIyNzE3MzNGMzAwM0U5MTU3IC8qIElubGluZUl0
ZXJhdG9yTG9naWNhbE9yZGVyVHJhdmVyc2FsLmNwcCAqLywKKwkJCQlFNDFBQ0MxNTI3MTczNDAy
MDAzRTkxNTcgLyogSW5saW5lSXRlcmF0b3JMb2dpY2FsT3JkZXJUcmF2ZXJzYWwuaCAqLywKIAkJ
CQlFNDdDRUJERTI3MDk5MTY0MDBCOEQ4RjUgLyogSW5saW5lSXRlcmF0b3JUZXh0Qm94LmNwcCAq
LywKIAkJCQlFNDdDRUJFMDI3MDk5MTZEMDBCOEQ4RjUgLyogSW5saW5lSXRlcmF0b3JUZXh0Qm94
LmggKi8sCiAJCQkJRTQxODAyNTYyM0Q0NTRCNTAwRkZCMDcxIC8qIExheW91dEludGVncmF0aW9u
Qm94VHJlZS5jcHAgKi8sCkBAIC0zMzI0OCw2ICszMzI1Myw3IEBACiAJCQkJRTREMzNGNDEyNTJD
NEI4MzAwODM3RDA1IC8qIElubGluZUl0ZXJhdG9yTGluZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
RTREMzNGNDQyNTJDNTBFMjAwODM3RDA1IC8qIElubGluZUl0ZXJhdG9yTGluZUxlZ2FjeVBhdGgu
aCBpbiBIZWFkZXJzICovLAogCQkJCUU0RDMzRjQ2MjUyQzUwRkMwMDgzN0QwNSAvKiBJbmxpbmVJ
dGVyYXRvckxpbmVNb2Rlcm5QYXRoLmggaW4gSGVhZGVycyAqLywKKwkJCQlFNDFBQ0MxNjI3MTcz
NDAyMDAzRTkxNTcgLyogSW5saW5lSXRlcmF0b3JMb2dpY2FsT3JkZXJUcmF2ZXJzYWwuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUU0N0NFQkUxMjcwOTkxNkQwMEI4RDhGNSAvKiBJbmxpbmVJdGVyYXRv
clRleHRCb3guaCBpbiBIZWFkZXJzICovLAogCQkJCTZGQUFFNzEzMjZBMjgxNEIwMEUwNzUwMiAv
KiBJbmxpbmVMZXZlbEJveC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNkYwQ0Q2OTUyMjlFRDMyNzAw
QzU5OTRFIC8qIElubGluZUxpbmUuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL1Bvc2l0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Qb3NpdGlvbi5j
cHAKaW5kZXggMzI2NTYzZDUwODVjY2UwNDM0Yjc3NTU4NjI0OGE0YzUzYmZmYmMyYS4uMmMzMGRj
MzI2N2YzZGY3NzI5NTE0MjQ2MzllYzMzNWVlNjZhZGY1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL1Bvc2l0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUG9zaXRpb24u
Y3BwCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAiSFRNTFBhcnNlcklkaW9tcy5oIgogI2lu
Y2x1ZGUgIkhUTUxUYWJsZUVsZW1lbnQuaCIKICNpbmNsdWRlICJJbmxpbmVJdGVyYXRvckxpbmUu
aCIKKyNpbmNsdWRlICJJbmxpbmVJdGVyYXRvckxvZ2ljYWxPcmRlclRyYXZlcnNhbC5oIgogI2lu
Y2x1ZGUgIklubGluZUl0ZXJhdG9yVGV4dEJveC5oIgogI2luY2x1ZGUgIklubGluZVJ1bkFuZE9m
ZnNldC5oIgogI2luY2x1ZGUgIkxlZ2FjeUlubGluZVRleHRCb3guaCIKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuY3BwIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHAKaW5kZXggYzVlODViMTg4ZDhk
OGE2N2FkYjM1ZjM4NGE5YmJiYzExMTA2ZTEyNC4uOWRiYTIxODJhZjQ5MmEzODVmMzY5OWUwZDhm
M2M2OTBlNDM2NjdiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3Np
dGVFZGl0Q29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVF
ZGl0Q29tbWFuZC5jcHAKQEAgLTQ4LDYgKzQ4LDcgQEAKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIK
ICNpbmNsdWRlICJIVE1MU3BhbkVsZW1lbnQuaCIKICNpbmNsdWRlICJJbmxpbmVJdGVyYXRvckJv
eC5oIgorI2luY2x1ZGUgIklubGluZUl0ZXJhdG9yTG9naWNhbE9yZGVyVHJhdmVyc2FsLmgiCiAj
aW5jbHVkZSAiSW5zZXJ0SW50b1RleHROb2RlQ29tbWFuZC5oIgogI2luY2x1ZGUgIkluc2VydExp
bmVCcmVha0NvbW1hbmQuaCIKICNpbmNsdWRlICJJbnNlcnROb2RlQmVmb3JlQ29tbWFuZC5oIgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuaCBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmgKaW5kZXggZWYyM2FkZTBhYzE2MGIwNjdh
Yjk1NzdjNDJmZGJhOGNkMjZhOTFjNi4uYWI3N2Y0MjA2ZWJhMDQzNTJmMGQ1MGZlMTIyYjE3ZWUx
ZTRiOGMxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3Iu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5oCkBAIC0yNyw2ICsy
Nyw3IEBACiAKICNpbmNsdWRlICJDaGFyYWN0ZXJSYW5nZS5oIgogI2luY2x1ZGUgIkZpbmRPcHRp
b25zLmgiCisjaW5jbHVkZSAiSW5saW5lSXRlcmF0b3JMb2dpY2FsT3JkZXJUcmF2ZXJzYWwuaCIK
ICNpbmNsdWRlICJJbmxpbmVJdGVyYXRvclRleHRCb3guaCIKICNpbmNsdWRlICJTaW1wbGVSYW5n
ZS5oIgogI2luY2x1ZGUgIlRleHRJdGVyYXRvckJlaGF2aW9yLmgiCkBAIC0xNTEsMTEgKzE1Miwx
MSBAQCBwcml2YXRlOgogICAgIC8vIFVzZWQgd2hlbiB0aGVyZSBpcyBzdGlsbCBzb21lIHBlbmRp
bmcgdGV4dCBmcm9tIHRoZSBjdXJyZW50IG5vZGU7IHdoZW4gdGhlc2UgYXJlIGZhbHNlIGFuZCBu
dWxsLCB3ZSBnbyBiYWNrIHRvIG5vcm1hbCBpdGVyYXRpbmcuCiAgICAgTm9kZSogbV9ub2RlRm9y
QWRkaXRpb25hbE5ld2xpbmUgeyBudWxscHRyIH07CiAgICAgSW5saW5lSXRlcmF0b3I6OlRleHRC
b3hJdGVyYXRvciBtX3RleHRSdW47Ci0gICAgSW5saW5lSXRlcmF0b3I6OkxvZ2ljYWxPcmRlckNh
Y2hlIG1fdGV4dFJ1bkxvZ2ljYWxPcmRlckNhY2hlOworICAgIElubGluZUl0ZXJhdG9yOjpUZXh0
TG9naWNhbE9yZGVyQ2FjaGUgbV90ZXh0UnVuTG9naWNhbE9yZGVyQ2FjaGU7CiAKICAgICAvLyBV
c2VkIHdoZW4gaXRlcmF0aW5nIG92ZXIgOmZpcnN0LWxldHRlciB0ZXh0IHRvIHNhdmUgcG9pbnRl
ciB0byByZW1haW5pbmcgdGV4dCBib3guCiAgICAgSW5saW5lSXRlcmF0b3I6OlRleHRCb3hJdGVy
YXRvciBtX3JlbWFpbmluZ1RleHRSdW47Ci0gICAgSW5saW5lSXRlcmF0b3I6OkxvZ2ljYWxPcmRl
ckNhY2hlIG1fcmVtYWluaW5nVGV4dFJ1bkxvZ2ljYWxPcmRlckNhY2hlOworICAgIElubGluZUl0
ZXJhdG9yOjpUZXh0TG9naWNhbE9yZGVyQ2FjaGUgbV9yZW1haW5pbmdUZXh0UnVuTG9naWNhbE9y
ZGVyQ2FjaGU7CiAKICAgICAvLyBVc2VkIHRvIHBvaW50IHRvIFJlbmRlclRleHQgb2JqZWN0IGZv
ciA6Zmlyc3QtbGV0dGVyLgogICAgIFJlbmRlclRleHQqIG1fZmlyc3RMZXR0ZXJUZXh0IHsgbnVs
bHB0ciB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlUG9zaXRp
b24uY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlUG9zaXRpb24uY3BwCmluZGV4
IDI0ZGE1NWIzYjQxNjFlOTNlZWZlNTIyNmUzN2U2ODkxMDI4NWZiMDkuLjJjM2UwNzhhMzJhMmZl
ZjIxZGE0ZmVjZjlkZGFkYjcxNDJhZWYzMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvVmlzaWJsZVBvc2l0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zp
c2libGVQb3NpdGlvbi5jcHAKQEAgLTEyMiw2ICsxMjIsOCBAQCBQb3NpdGlvbiBWaXNpYmxlUG9z
aXRpb246OmxlZnRWaXN1YWxseURpc3RpbmN0Q2FuZGlkYXRlKCkgY29uc3QKICAgICBQb3NpdGlv
biBkb3duc3RyZWFtU3RhcnQgPSBwLmRvd25zdHJlYW0oKTsKICAgICBUZXh0RGlyZWN0aW9uIHBy
aW1hcnlEaXJlY3Rpb24gPSBwLnByaW1hcnlEaXJlY3Rpb24oKTsKIAorICAgIElubGluZUl0ZXJh
dG9yOjpMaW5lTG9naWNhbE9yZGVyQ2FjaGUgb3JkZXJDYWNoZTsKKwogICAgIHdoaWxlICh0cnVl
KSB7CiAgICAgICAgIGF1dG8gW3J1biwgb2Zmc2V0XSA9IHAuaW5saW5lUnVuQW5kT2Zmc2V0KG1f
YWZmaW5pdHksIHByaW1hcnlEaXJlY3Rpb24pOwogICAgICAgICBpZiAoIXJ1bikKQEAgLTE3NCw3
ICsxNzYsOSBAQCBQb3NpdGlvbiBWaXNpYmxlUG9zaXRpb246OmxlZnRWaXN1YWxseURpc3RpbmN0
Q2FuZGlkYXRlKCkgY29uc3QKIAogICAgICAgICAgICAgaWYgKHJ1bi0+ZGlyZWN0aW9uKCkgPT0g
cHJpbWFyeURpcmVjdGlvbikgewogICAgICAgICAgICAgICAgIGlmICghcHJldmlvdXNSdW4pIHsK
LSAgICAgICAgICAgICAgICAgICAgYXV0byBsb2dpY2FsU3RhcnQgPSAocHJpbWFyeURpcmVjdGlv
biA9PSBUZXh0RGlyZWN0aW9uOjpMVFIpID8gcnVuLT5saW5lKCktPmxvZ2ljYWxTdGFydFJ1bldp
dGhOb2RlKCkgOiBydW4tPmxpbmUoKS0+bG9naWNhbEVuZFJ1bldpdGhOb2RlKCk7CisgICAgICAg
ICAgICAgICAgICAgIGF1dG8gbG9naWNhbFN0YXJ0ID0gcHJpbWFyeURpcmVjdGlvbiA9PSBUZXh0
RGlyZWN0aW9uOjpMVFIKKyAgICAgICAgICAgICAgICAgICAgICAgID8gSW5saW5lSXRlcmF0b3I6
OmZpcnN0TGVhZk9uTGluZUluTG9naWNhbE9yZGVyV2l0aE5vZGUocnVuLT5saW5lKCksIG9yZGVy
Q2FjaGUpCisgICAgICAgICAgICAgICAgICAgICAgICA6IElubGluZUl0ZXJhdG9yOjpsYXN0TGVh
Zk9uTGluZUluTG9naWNhbE9yZGVyV2l0aE5vZGUocnVuLT5saW5lKCksIG9yZGVyQ2FjaGUpOwog
ICAgICAgICAgICAgICAgICAgICBpZiAobG9naWNhbFN0YXJ0KSB7CiAgICAgICAgICAgICAgICAg
ICAgICAgICBydW4gPSBsb2dpY2FsU3RhcnQ7CiAgICAgICAgICAgICAgICAgICAgICAgICByZW5k
ZXJlciA9ICZydW4tPnJlbmRlcmVyKCk7CkBAIC0yODQsNiArMjg4LDggQEAgUG9zaXRpb24gVmlz
aWJsZVBvc2l0aW9uOjpyaWdodFZpc3VhbGx5RGlzdGluY3RDYW5kaWRhdGUoKSBjb25zdAogICAg
IFBvc2l0aW9uIGRvd25zdHJlYW1TdGFydCA9IHAuZG93bnN0cmVhbSgpOwogICAgIFRleHREaXJl
Y3Rpb24gcHJpbWFyeURpcmVjdGlvbiA9IHAucHJpbWFyeURpcmVjdGlvbigpOwogCisgICAgSW5s
aW5lSXRlcmF0b3I6OkxpbmVMb2dpY2FsT3JkZXJDYWNoZSBvcmRlckNhY2hlOworCiAgICAgd2hp
bGUgKHRydWUpIHsKICAgICAgICAgYXV0byBbcnVuLCBvZmZzZXRdID0gcC5pbmxpbmVSdW5BbmRP
ZmZzZXQobV9hZmZpbml0eSwgcHJpbWFyeURpcmVjdGlvbik7CiAgICAgICAgIGlmICghcnVuKQpA
QCAtMzM2LDcgKzM0MiwxMCBAQCBQb3NpdGlvbiBWaXNpYmxlUG9zaXRpb246OnJpZ2h0VmlzdWFs
bHlEaXN0aW5jdENhbmRpZGF0ZSgpIGNvbnN0CiAKICAgICAgICAgICAgIGlmIChydW4tPmRpcmVj
dGlvbigpID09IHByaW1hcnlEaXJlY3Rpb24pIHsKICAgICAgICAgICAgICAgICBpZiAoIW5leHRS
dW4pIHsKLSAgICAgICAgICAgICAgICAgICAgYXV0byBsb2dpY2FsRW5kID0gcHJpbWFyeURpcmVj
dGlvbiA9PSBUZXh0RGlyZWN0aW9uOjpMVFIgPyBydW4tPmxpbmUoKS0+bG9naWNhbEVuZFJ1bldp
dGhOb2RlKCkgOiBydW4tPmxpbmUoKS0+bG9naWNhbFN0YXJ0UnVuV2l0aE5vZGUoKTsKKyAgICAg
ICAgICAgICAgICAgICAgYXV0byBsb2dpY2FsRW5kID0gcHJpbWFyeURpcmVjdGlvbiA9PSBUZXh0
RGlyZWN0aW9uOjpMVFIKKyAgICAgICAgICAgICAgICAgICAgICAgID8gSW5saW5lSXRlcmF0b3I6
Omxhc3RMZWFmT25MaW5lSW5Mb2dpY2FsT3JkZXJXaXRoTm9kZShydW4tPmxpbmUoKSwgb3JkZXJD
YWNoZSkKKyAgICAgICAgICAgICAgICAgICAgICAgIDogSW5saW5lSXRlcmF0b3I6OmZpcnN0TGVh
Zk9uTGluZUluTG9naWNhbE9yZGVyV2l0aE5vZGUocnVuLT5saW5lKCksIG9yZGVyQ2FjaGUpOwor
CiAgICAgICAgICAgICAgICAgICAgIGlmIChsb2dpY2FsRW5kKSB7CiAgICAgICAgICAgICAgICAg
ICAgICAgICBydW4gPSBsb2dpY2FsRW5kOwogICAgICAgICAgICAgICAgICAgICAgICAgcmVuZGVy
ZXIgPSAmcnVuLT5yZW5kZXJlcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9WaXNpYmxlVW5pdHMuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlVW5pdHMu
Y3BwCmluZGV4IDkzODc4ODgzY2U4ZDVmNzA3YjczYjAyZDg3NjA0Yzg1Y2VkY2ZhZWIuLjZjMDI0
YmUzNTQ4NTlmMGNjNzcwZjExOWVmOWU3MWJiYTVkNGFkNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVVuaXRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL1Zpc2libGVVbml0cy5jcHAKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJIVE1MTmFt
ZXMuaCIKICNpbmNsdWRlICJJbmxpbmVJdGVyYXRvckJveC5oIgogI2luY2x1ZGUgIklubGluZUl0
ZXJhdG9yTGluZS5oIgorI2luY2x1ZGUgIklubGluZUl0ZXJhdG9yTG9naWNhbE9yZGVyVHJhdmVy
c2FsLmgiCiAjaW5jbHVkZSAiSW5saW5lUnVuQW5kT2Zmc2V0LmgiCiAjaW5jbHVkZSAiTm9kZVRy
YXZlcnNhbC5oIgogI2luY2x1ZGUgIlJhbmdlLmgiCkBAIC0xMjksNTAgKzEzMCw1MCBAQCBzdGF0
aWMgYm9vbCBpc1RleHRPckxpbmVCcmVha1J1bihJbmxpbmVJdGVyYXRvcjo6TGVhZkJveEl0ZXJh
dG9yIHJ1bikKICAgICByZXR1cm4gcnVuICYmIChydW4tPmlzVGV4dCgpIHx8IHJ1bi0+cmVuZGVy
ZXIoKS5pc0JSKCkpOwogfQogCi1zdGF0aWMgSW5saW5lSXRlcmF0b3I6OkxlYWZCb3hJdGVyYXRv
ciBwcmV2aW91c1RleHRPckxpbmVCcmVha1J1bihJbmxpbmVJdGVyYXRvcjo6TGVhZkJveEl0ZXJh
dG9yIHJ1bikKK3N0YXRpYyBJbmxpbmVJdGVyYXRvcjo6TGVhZkJveEl0ZXJhdG9yIHByZXZpb3Vz
VGV4dE9yTGluZUJyZWFrUnVuKElubGluZUl0ZXJhdG9yOjpMZWFmQm94SXRlcmF0b3IgcnVuLCBJ
bmxpbmVJdGVyYXRvcjo6TGluZUxvZ2ljYWxPcmRlckNhY2hlJiBvcmRlckNhY2hlKQogewogICAg
IHdoaWxlIChydW4pIHsKLSAgICAgICAgcnVuLnRyYXZlcnNlUHJldmlvdXNPbkxpbmVJbkxvZ2lj
YWxPcmRlcigpOworICAgICAgICBydW4gPSBJbmxpbmVJdGVyYXRvcjo6cHJldmlvdXNMZWFmT25M
aW5lSW5Mb2dpY2FsT3JkZXIocnVuLCBvcmRlckNhY2hlKTsKICAgICAgICAgaWYgKGlzVGV4dE9y
TGluZUJyZWFrUnVuKHJ1bikpCiAgICAgICAgICAgICByZXR1cm4gcnVuOwogICAgIH0KICAgICBy
ZXR1cm4geyB9OwogfQogCi1zdGF0aWMgSW5saW5lSXRlcmF0b3I6OkxlYWZCb3hJdGVyYXRvciBu
ZXh0VGV4dE9yTGluZUJyZWFrUnVuKElubGluZUl0ZXJhdG9yOjpMZWFmQm94SXRlcmF0b3IgcnVu
KQorc3RhdGljIElubGluZUl0ZXJhdG9yOjpMZWFmQm94SXRlcmF0b3IgbmV4dFRleHRPckxpbmVC
cmVha1J1bihJbmxpbmVJdGVyYXRvcjo6TGVhZkJveEl0ZXJhdG9yIHJ1biwgSW5saW5lSXRlcmF0
b3I6OkxpbmVMb2dpY2FsT3JkZXJDYWNoZSYgb3JkZXJDYWNoZSkKIHsKICAgICB3aGlsZSAocnVu
KSB7Ci0gICAgICAgIHJ1bi50cmF2ZXJzZU5leHRPbkxpbmVJbkxvZ2ljYWxPcmRlcigpOworICAg
ICAgICBydW4gPSBJbmxpbmVJdGVyYXRvcjo6bmV4dExlYWZPbkxpbmVJbkxvZ2ljYWxPcmRlcihy
dW4sIG9yZGVyQ2FjaGUpOwogICAgICAgICBpZiAoaXNUZXh0T3JMaW5lQnJlYWtSdW4ocnVuKSkK
ICAgICAgICAgICAgIHJldHVybiBydW47CiAgICAgfQogICAgIHJldHVybiB7IH07CiB9CiAKLXN0
YXRpYyBJbmxpbmVJdGVyYXRvcjo6TGVhZkJveEl0ZXJhdG9yIHN0YXJ0VGV4dE9yTGluZUJyZWFr
UnVuKElubGluZUl0ZXJhdG9yOjpMaW5lSXRlcmF0b3IgbGluZSkKK3N0YXRpYyBJbmxpbmVJdGVy
YXRvcjo6TGVhZkJveEl0ZXJhdG9yIHN0YXJ0VGV4dE9yTGluZUJyZWFrUnVuKElubGluZUl0ZXJh
dG9yOjpMaW5lSXRlcmF0b3IgbGluZSwgSW5saW5lSXRlcmF0b3I6OkxpbmVMb2dpY2FsT3JkZXJD
YWNoZSYgb3JkZXJDYWNoZSkKIHsKLSAgICBhdXRvIHJ1biA9IGxpbmUtPmxvZ2ljYWxTdGFydFJ1
bigpOworICAgIGF1dG8gcnVuID0gSW5saW5lSXRlcmF0b3I6OmZpcnN0TGVhZk9uTGluZUluTG9n
aWNhbE9yZGVyKGxpbmUsIG9yZGVyQ2FjaGUpOwogICAgIGlmIChpc1RleHRPckxpbmVCcmVha1J1
bihydW4pKQogICAgICAgICByZXR1cm4gcnVuOwotICAgIHJldHVybiBuZXh0VGV4dE9yTGluZUJy
ZWFrUnVuKHJ1bik7CisgICAgcmV0dXJuIG5leHRUZXh0T3JMaW5lQnJlYWtSdW4ocnVuLCBvcmRl
ckNhY2hlKTsKIH0KIAotc3RhdGljIElubGluZUl0ZXJhdG9yOjpMZWFmQm94SXRlcmF0b3IgZW5k
VGV4dE9yTGluZUJyZWFrUnVuKElubGluZUl0ZXJhdG9yOjpMaW5lSXRlcmF0b3IgbGluZSkKK3N0
YXRpYyBJbmxpbmVJdGVyYXRvcjo6TGVhZkJveEl0ZXJhdG9yIGVuZFRleHRPckxpbmVCcmVha1J1
bihJbmxpbmVJdGVyYXRvcjo6TGluZUl0ZXJhdG9yIGxpbmUsIElubGluZUl0ZXJhdG9yOjpMaW5l
TG9naWNhbE9yZGVyQ2FjaGUmIG9yZGVyQ2FjaGUpCiB7Ci0gICAgYXV0byBydW4gPSBsaW5lLT5s
b2dpY2FsRW5kUnVuKCk7CisgICAgYXV0byBydW4gPSBJbmxpbmVJdGVyYXRvcjo6bGFzdExlYWZP
bkxpbmVJbkxvZ2ljYWxPcmRlcihsaW5lLCBvcmRlckNhY2hlKTsKICAgICBpZiAoaXNUZXh0T3JM
aW5lQnJlYWtSdW4ocnVuKSkKICAgICAgICAgcmV0dXJuIHJ1bjsKLSAgICByZXR1cm4gcHJldmlv
dXNUZXh0T3JMaW5lQnJlYWtSdW4ocnVuKTsKKyAgICByZXR1cm4gcHJldmlvdXNUZXh0T3JMaW5l
QnJlYWtSdW4ocnVuLCBvcmRlckNhY2hlKTsKIH0KIAotc3RhdGljIGNvbnN0IElubGluZUl0ZXJh
dG9yOjpMZWFmQm94SXRlcmF0b3IgbG9naWNhbGx5UHJldmlvdXNSdW4oY29uc3QgVmlzaWJsZVBv
c2l0aW9uJiB2aXNpYmxlUG9zaXRpb24sIElubGluZUl0ZXJhdG9yOjpMZWFmQm94SXRlcmF0b3Ig
c3RhcnRSdW4sIGJvb2wmIHByZXZpb3VzQm94SW5EaWZmZXJlbnRMaW5lKQorc3RhdGljIGNvbnN0
IElubGluZUl0ZXJhdG9yOjpMZWFmQm94SXRlcmF0b3IgbG9naWNhbGx5UHJldmlvdXNSdW4oY29u
c3QgVmlzaWJsZVBvc2l0aW9uJiB2aXNpYmxlUG9zaXRpb24sIElubGluZUl0ZXJhdG9yOjpMZWFm
Qm94SXRlcmF0b3Igc3RhcnRSdW4sIElubGluZUl0ZXJhdG9yOjpMaW5lTG9naWNhbE9yZGVyQ2Fj
aGUmIG9yZGVyQ2FjaGUsIGJvb2wmIHByZXZpb3VzQm94SW5EaWZmZXJlbnRMaW5lKQogewotICAg
IGlmIChhdXRvIHByZXZpb3VzUnVuID0gcHJldmlvdXNUZXh0T3JMaW5lQnJlYWtSdW4oc3RhcnRS
dW4pKQorICAgIGlmIChhdXRvIHByZXZpb3VzUnVuID0gcHJldmlvdXNUZXh0T3JMaW5lQnJlYWtS
dW4oc3RhcnRSdW4sIG9yZGVyQ2FjaGUpKQogICAgICAgICByZXR1cm4gcHJldmlvdXNSdW47CiAK
ICAgICBpZiAoYXV0byBwcmV2aW91c0xpbmUgPSBzdGFydFJ1bi0+bGluZSgpLT5wcmV2aW91cygp
KSB7CiAgICAgICAgIC8vIEZJWE1FOiBXaHkgaXNuJ3QgcHJldmlvdXNCb3hJbkRpZmZlcmVudExp
bmUgc2V0IGhlcmU/Ci0gICAgICAgIGlmIChhdXRvIHByZXZpb3VzUnVuID0gZW5kVGV4dE9yTGlu
ZUJyZWFrUnVuKHByZXZpb3VzTGluZSkpCisgICAgICAgIGlmIChhdXRvIHByZXZpb3VzUnVuID0g
ZW5kVGV4dE9yTGluZUJyZWFrUnVuKHByZXZpb3VzTGluZSwgb3JkZXJDYWNoZSkpCiAgICAgICAg
ICAgICByZXR1cm4gcHJldmlvdXNSdW47CiAgICAgfQogCkBAIC0xOTEsMjYgKzE5MiwyNiBAQCBz
dGF0aWMgY29uc3QgSW5saW5lSXRlcmF0b3I6OkxlYWZCb3hJdGVyYXRvciBsb2dpY2FsbHlQcmV2
aW91c1J1bihjb25zdCBWaXNpYmxlUAogICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgaWYg
KHByZXZpb3VzTGluZSAhPSBzdGFydFJ1bi0+bGluZSgpKSB7Ci0gICAgICAgICAgICBpZiAoYXV0
byBwcmV2aW91c1J1biA9IGVuZFRleHRPckxpbmVCcmVha1J1bihwcmV2aW91c0xpbmUpKSB7Cisg
ICAgICAgICAgICBpZiAoYXV0byBwcmV2aW91c1J1biA9IGVuZFRleHRPckxpbmVCcmVha1J1bihw
cmV2aW91c0xpbmUsIG9yZGVyQ2FjaGUpKSB7CiAgICAgICAgICAgICAgICAgcHJldmlvdXNCb3hJ
bkRpZmZlcmVudExpbmUgPSB0cnVlOwogICAgICAgICAgICAgICAgIHJldHVybiBwcmV2aW91c1J1
bjsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCi0gICAgICAgIHN0YXJ0UnVuID0gcHJldmlv
dXNMaW5lLT5sb2dpY2FsU3RhcnRSdW4oKTsKKyAgICAgICAgc3RhcnRSdW4gPSBJbmxpbmVJdGVy
YXRvcjo6Zmlyc3RMZWFmT25MaW5lSW5Mb2dpY2FsT3JkZXIocHJldmlvdXNMaW5lLCBvcmRlckNh
Y2hlKTsKICAgICB9CiAgICAgcmV0dXJuIHsgfTsKIH0KIAogCi1zdGF0aWMgY29uc3QgSW5saW5l
SXRlcmF0b3I6OkxlYWZCb3hJdGVyYXRvciBsb2dpY2FsbHlOZXh0UnVuKGNvbnN0IFZpc2libGVQ
b3NpdGlvbiYgdmlzaWJsZVBvc2l0aW9uLCBJbmxpbmVJdGVyYXRvcjo6TGVhZkJveEl0ZXJhdG9y
IHN0YXJ0UnVuLCBib29sJiBuZXh0Qm94SW5EaWZmZXJlbnRMaW5lKQorc3RhdGljIGNvbnN0IElu
bGluZUl0ZXJhdG9yOjpMZWFmQm94SXRlcmF0b3IgbG9naWNhbGx5TmV4dFJ1bihjb25zdCBWaXNp
YmxlUG9zaXRpb24mIHZpc2libGVQb3NpdGlvbiwgSW5saW5lSXRlcmF0b3I6OkxlYWZCb3hJdGVy
YXRvciBzdGFydFJ1biwgSW5saW5lSXRlcmF0b3I6OkxpbmVMb2dpY2FsT3JkZXJDYWNoZSYgb3Jk
ZXJDYWNoZSwgYm9vbCYgbmV4dEJveEluRGlmZmVyZW50TGluZSkKIHsKLSAgICBpZiAoYXV0byBu
ZXh0UnVuID0gbmV4dFRleHRPckxpbmVCcmVha1J1bihzdGFydFJ1bikpCisgICAgaWYgKGF1dG8g
bmV4dFJ1biA9IG5leHRUZXh0T3JMaW5lQnJlYWtSdW4oc3RhcnRSdW4sIG9yZGVyQ2FjaGUpKQog
ICAgICAgICByZXR1cm4gbmV4dFJ1bjsKIAogICAgIGlmIChhdXRvIG5leHRMaW5lID0gc3RhcnRS
dW4tPmxpbmUoKS0+bmV4dCgpKSB7CiAgICAgICAgIC8vIEZJWE1FOiBXaHkgaXNuJ3QgcHJldmlv
dXNCb3hJbkRpZmZlcmVudExpbmUgc2V0IGhlcmU/Ci0gICAgICAgIGlmIChhdXRvIG5leHRSdW4g
PSBzdGFydFRleHRPckxpbmVCcmVha1J1bihuZXh0TGluZSkpCisgICAgICAgIGlmIChhdXRvIG5l
eHRSdW4gPSBzdGFydFRleHRPckxpbmVCcmVha1J1bihuZXh0TGluZSwgb3JkZXJDYWNoZSkpCiAg
ICAgICAgICAgICByZXR1cm4gbmV4dFJ1bjsKICAgICB9CiAKQEAgLTIyOSwxMyArMjMwLDEzIEBA
IHN0YXRpYyBjb25zdCBJbmxpbmVJdGVyYXRvcjo6TGVhZkJveEl0ZXJhdG9yIGxvZ2ljYWxseU5l
eHRSdW4oY29uc3QgVmlzaWJsZVBvc2l0CiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBp
ZiAobmV4dExpbmUgIT0gc3RhcnRSdW4tPmxpbmUoKSkgewotICAgICAgICAgICAgaWYgKGF1dG8g
bmV4dFJ1biA9IHN0YXJ0VGV4dE9yTGluZUJyZWFrUnVuKG5leHRMaW5lKSkgeworICAgICAgICAg
ICAgaWYgKGF1dG8gbmV4dFJ1biA9IHN0YXJ0VGV4dE9yTGluZUJyZWFrUnVuKG5leHRMaW5lLCBv
cmRlckNhY2hlKSkgewogICAgICAgICAgICAgICAgIG5leHRCb3hJbkRpZmZlcmVudExpbmUgPSB0
cnVlOwogICAgICAgICAgICAgICAgIHJldHVybiBuZXh0UnVuOwogICAgICAgICAgICAgfQogICAg
ICAgICB9CiAKLSAgICAgICAgc3RhcnRSdW4gPSBuZXh0TGluZS0+bG9naWNhbEVuZFJ1bigpOwor
ICAgICAgICBzdGFydFJ1biA9IElubGluZUl0ZXJhdG9yOjpsYXN0TGVhZk9uTGluZUluTG9naWNh
bE9yZGVyV2l0aE5vZGUobmV4dExpbmUsIG9yZGVyQ2FjaGUpOwogICAgIH0KICAgICByZXR1cm4g
eyB9OwogfQpAQCAtMjQ1LDExICsyNDYsMTIgQEAgc3RhdGljIFVCcmVha0l0ZXJhdG9yKiB3b3Jk
QnJlYWtJdGVyYXRvckZvck1pbk9mZnNldEJvdW5kYXJ5KGNvbnN0IFZpc2libGVQb3NpdGkKIHsK
ICAgICBwcmV2aW91c1J1bkluRGlmZmVyZW50TGluZSA9IGZhbHNlOwogCi0gICAgYXV0byBwcmV2
aW91c1J1biA9IGxvZ2ljYWxseVByZXZpb3VzUnVuKHZpc2libGVQb3NpdGlvbiwgdGV4dFJ1biwg
cHJldmlvdXNSdW5JbkRpZmZlcmVudExpbmUpOworICAgIElubGluZUl0ZXJhdG9yOjpMaW5lTG9n
aWNhbE9yZGVyQ2FjaGUgb3JkZXJDYWNoZTsKKyAgICBhdXRvIHByZXZpb3VzUnVuID0gbG9naWNh
bGx5UHJldmlvdXNSdW4odmlzaWJsZVBvc2l0aW9uLCB0ZXh0UnVuLCBvcmRlckNhY2hlLCBwcmV2
aW91c1J1bkluRGlmZmVyZW50TGluZSk7CiAgICAgd2hpbGUgKHByZXZpb3VzUnVuICYmICFwcmV2
aW91c1J1bi0+aXNUZXh0KCkpIHsKICAgICAgICAgQVNTRVJUKHByZXZpb3VzUnVuLT5yZW5kZXJl
cigpLmlzQlIoKSk7CiAgICAgICAgIHByZXZpb3VzUnVuSW5EaWZmZXJlbnRMaW5lID0gdHJ1ZTsK
LSAgICAgICAgcHJldmlvdXNSdW4gPSBsb2dpY2FsbHlQcmV2aW91c1J1bih2aXNpYmxlUG9zaXRp
b24sIHByZXZpb3VzUnVuLCBwcmV2aW91c1J1bkluRGlmZmVyZW50TGluZSk7CisgICAgICAgIHBy
ZXZpb3VzUnVuID0gbG9naWNhbGx5UHJldmlvdXNSdW4odmlzaWJsZVBvc2l0aW9uLCBwcmV2aW91
c1J1biwgb3JkZXJDYWNoZSwgcHJldmlvdXNSdW5JbkRpZmZlcmVudExpbmUpOwogICAgIH0KIAog
ICAgIHN0cmluZy5jbGVhcigpOwpAQCAtMjY5LDExICsyNzEsMTIgQEAgc3RhdGljIFVCcmVha0l0
ZXJhdG9yKiB3b3JkQnJlYWtJdGVyYXRvckZvck1heE9mZnNldEJvdW5kYXJ5KGNvbnN0IFZpc2li
bGVQb3NpdGkKIHsKICAgICBuZXh0UnVuSW5EaWZmZXJlbnRMaW5lID0gZmFsc2U7CiAKLSAgICBh
dXRvIG5leHRSdW4gPSBsb2dpY2FsbHlOZXh0UnVuKHZpc2libGVQb3NpdGlvbiwgdGV4dFJ1biwg
bmV4dFJ1bkluRGlmZmVyZW50TGluZSk7CisgICAgSW5saW5lSXRlcmF0b3I6OkxpbmVMb2dpY2Fs
T3JkZXJDYWNoZSBvcmRlckNhY2hlOworICAgIGF1dG8gbmV4dFJ1biA9IGxvZ2ljYWxseU5leHRS
dW4odmlzaWJsZVBvc2l0aW9uLCB0ZXh0UnVuLCBvcmRlckNhY2hlLCBuZXh0UnVuSW5EaWZmZXJl
bnRMaW5lKTsKICAgICB3aGlsZSAobmV4dFJ1biAmJiAhbmV4dFJ1bi0+aXNUZXh0KCkpIHsKICAg
ICAgICAgQVNTRVJUKG5leHRSdW4tPnJlbmRlcmVyKCkuaXNCUigpKTsKICAgICAgICAgbmV4dFJ1
bkluRGlmZmVyZW50TGluZSA9IHRydWU7Ci0gICAgICAgIG5leHRSdW4gPSBsb2dpY2FsbHlOZXh0
UnVuKHZpc2libGVQb3NpdGlvbiwgbmV4dFJ1biwgbmV4dFJ1bkluRGlmZmVyZW50TGluZSk7Cisg
ICAgICAgIG5leHRSdW4gPSBsb2dpY2FsbHlOZXh0UnVuKHZpc2libGVQb3NpdGlvbiwgbmV4dFJ1
biwgb3JkZXJDYWNoZSwgbmV4dFJ1bkluRGlmZmVyZW50TGluZSk7CiAgICAgfQogCiAgICAgc3Ry
aW5nLmNsZWFyKCk7CkBAIC03NDYsOCArNzQ5LDEwIEBAIHN0YXRpYyBWaXNpYmxlUG9zaXRpb24g
c3RhcnRQb3NpdGlvbkZvckxpbmUoY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBjLCBMaW5lRW5kcG9p
CiAgICAgICAgIHJldHVybiBWaXNpYmxlUG9zaXRpb24oKTsKICAgICB9CiAKKyAgICBJbmxpbmVJ
dGVyYXRvcjo6TGluZUxvZ2ljYWxPcmRlckNhY2hlIG9yZGVyQ2FjaGU7CisKICAgICBOb2RlKiBz
dGFydE5vZGUgPSBudWxscHRyOwotICAgIGF1dG8gc3RhcnRSdW4gPSBtb2RlID09IFVzZUxvZ2lj
YWxPcmRlcmluZyA/IGxpbmUtPmxvZ2ljYWxTdGFydFJ1bldpdGhOb2RlKCkgOiBsaW5lLT5maXJz
dFJ1bigpOworICAgIGF1dG8gc3RhcnRSdW4gPSBtb2RlID09IFVzZUxvZ2ljYWxPcmRlcmluZyA/
IElubGluZUl0ZXJhdG9yOjpmaXJzdExlYWZPbkxpbmVJbkxvZ2ljYWxPcmRlcldpdGhOb2RlKGxp
bmUsIG9yZGVyQ2FjaGUpIDogbGluZS0+Zmlyc3RSdW4oKTsKICAgICAvLyBHZW5lcmF0ZWQgY29u
dGVudCAoZS5nLiBsaXN0IG1hcmtlcnMgYW5kIENTUyA6YmVmb3JlIGFuZCA6YWZ0ZXIgcHNldWRv
ZWxlbWVudHMpIGhhdmUgbm8gY29ycmVzcG9uZGluZyBET00gZWxlbWVudCwKICAgICAvLyBhbmQg
c28gY2Fubm90IGJlIHJlcHJlc2VudGVkIGJ5IGEgVmlzaWJsZVBvc2l0aW9uLiBVc2Ugd2hhdGV2
ZXIgZm9sbG93cyBpbnN0ZWFkLgogICAgIHdoaWxlICh0cnVlKSB7CkBAIC03NTksNyArNzY0LDcg
QEAgc3RhdGljIFZpc2libGVQb3NpdGlvbiBzdGFydFBvc2l0aW9uRm9yTGluZShjb25zdCBWaXNp
YmxlUG9zaXRpb24mIGMsIExpbmVFbmRwb2kKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAg
IGlmIChtb2RlID09IFVzZUxvZ2ljYWxPcmRlcmluZykKLSAgICAgICAgICAgIHN0YXJ0UnVuLnRy
YXZlcnNlTmV4dE9uTGluZUluTG9naWNhbE9yZGVyKCk7CisgICAgICAgICAgICBzdGFydFJ1biA9
IElubGluZUl0ZXJhdG9yOjpuZXh0TGVhZk9uTGluZUluTG9naWNhbE9yZGVyKHN0YXJ0UnVuLCBv
cmRlckNhY2hlKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgc3RhcnRSdW4udHJhdmVyc2VO
ZXh0T25MaW5lKCk7CiAgICAgfQpAQCAtODE2LDggKzgyMSwxMCBAQCBzdGF0aWMgVmlzaWJsZVBv
c2l0aW9uIGVuZFBvc2l0aW9uRm9yTGluZShjb25zdCBWaXNpYmxlUG9zaXRpb24mIGMsIExpbmVF
bmRwb2ludAogICAgICAgICByZXR1cm4gVmlzaWJsZVBvc2l0aW9uKCk7CiAgICAgfQogCisgICAg
SW5saW5lSXRlcmF0b3I6OkxpbmVMb2dpY2FsT3JkZXJDYWNoZSBvcmRlckNhY2hlOworCiAgICAg
Tm9kZSogZW5kTm9kZSA9IG51bGxwdHI7Ci0gICAgYXV0byBlbmRSdW4gPSBtb2RlID09IFVzZUxv
Z2ljYWxPcmRlcmluZyA/IGxpbmUtPmxvZ2ljYWxFbmRSdW5XaXRoTm9kZSgpIDogbGluZS0+bGFz
dFJ1bigpOworICAgIGF1dG8gZW5kUnVuID0gbW9kZSA9PSBVc2VMb2dpY2FsT3JkZXJpbmcgPyBJ
bmxpbmVJdGVyYXRvcjo6bGFzdExlYWZPbkxpbmVJbkxvZ2ljYWxPcmRlcihsaW5lLCBvcmRlckNh
Y2hlKSA6IGxpbmUtPmxhc3RSdW4oKTsKICAgICAvLyBHZW5lcmF0ZWQgY29udGVudCAoZS5nLiBs
aXN0IG1hcmtlcnMgYW5kIENTUyA6YmVmb3JlIGFuZCA6YWZ0ZXIgcHNldWRvZWxlbWVudHMpIGhh
dmUgbm8gY29ycmVzcG9uZGluZyBET00gZWxlbWVudCwKICAgICAvLyBhbmQgc28gY2Fubm90IGJl
IHJlcHJlc2VudGVkIGJ5IGEgVmlzaWJsZVBvc2l0aW9uLiBVc2Ugd2hhdGV2ZXIgcHJlY2VkZXMg
aW5zdGVhZC4KICAgICB3aGlsZSAodHJ1ZSkgewpAQCAtODI5LDcgKzgzNiw3IEBAIHN0YXRpYyBW
aXNpYmxlUG9zaXRpb24gZW5kUG9zaXRpb25Gb3JMaW5lKGNvbnN0IFZpc2libGVQb3NpdGlvbiYg
YywgTGluZUVuZHBvaW50CiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBpZiAobW9kZSA9
PSBVc2VMb2dpY2FsT3JkZXJpbmcpCi0gICAgICAgICAgICBlbmRSdW4udHJhdmVyc2VQcmV2aW91
c09uTGluZUluTG9naWNhbE9yZGVyKCk7CisgICAgICAgICAgICBlbmRSdW4gPSBJbmxpbmVJdGVy
YXRvcjo6cHJldmlvdXNMZWFmT25MaW5lSW5Mb2dpY2FsT3JkZXIoZW5kUnVuLCBvcmRlckNhY2hl
KTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgZW5kUnVuLnRyYXZlcnNlUHJldmlvdXNPbkxp
bmUoKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRp
b24vSW5saW5lSXRlcmF0b3JCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0
aW9uL0lubGluZUl0ZXJhdG9yQm94LmNwcAppbmRleCA5MTYxMjIxZGQ5NTA1ZjAwMjYxYjhiODcx
MGY4ZjA1MDU5NDYyNmUwLi40YTBhNzVkZDYwNzk0MjdhODMzYWI3ZmU1NTc3YTE4YTk0ZmI5MjFh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vSW5saW5lSXRl
cmF0b3JCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9Jbmxp
bmVJdGVyYXRvckJveC5jcHAKQEAgLTE0OCwyMiArMTQ4LDYgQEAgTGVhZkJveEl0ZXJhdG9yJiBM
ZWFmQm94SXRlcmF0b3I6OnRyYXZlcnNlUHJldmlvdXNPbkxpbmVJZ25vcmluZ0xpbmVCcmVhaygp
CiAgICAgcmV0dXJuICp0aGlzOwogfQogCi1MZWFmQm94SXRlcmF0b3ImIExlYWZCb3hJdGVyYXRv
cjo6dHJhdmVyc2VOZXh0T25MaW5lSW5Mb2dpY2FsT3JkZXIoKQotewotICAgIFdURjo6c3dpdGNo
T24obV9ib3gubV9wYXRoVmFyaWFudCwgW10oYXV0byYgcGF0aCkgewotICAgICAgICBwYXRoLnRy
YXZlcnNlTmV4dE9uTGluZUluTG9naWNhbE9yZGVyKCk7Ci0gICAgfSk7Ci0gICAgcmV0dXJuICp0
aGlzOwotfQotCi1MZWFmQm94SXRlcmF0b3ImIExlYWZCb3hJdGVyYXRvcjo6dHJhdmVyc2VQcmV2
aW91c09uTGluZUluTG9naWNhbE9yZGVyKCkKLXsKLSAgICBXVEY6OnN3aXRjaE9uKG1fYm94Lm1f
cGF0aFZhcmlhbnQsIFtdKGF1dG8mIHBhdGgpIHsKLSAgICAgICAgcGF0aC50cmF2ZXJzZVByZXZp
b3VzT25MaW5lSW5Mb2dpY2FsT3JkZXIoKTsKLSAgICB9KTsKLSAgICByZXR1cm4gKnRoaXM7Ci19
Ci0KIExlYWZCb3hJdGVyYXRvciBib3hGb3IoY29uc3QgUmVuZGVyTGluZUJyZWFrJiByZW5kZXJl
cikKIHsKICNpZiBFTkFCTEUoTEFZT1VUX0ZPUk1BVFRJTkdfQ09OVEVYVCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9JbmxpbmVJdGVyYXRvckJveC5oIGIv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0lubGluZUl0ZXJhdG9yQm94LmgKaW5k
ZXggYjQ1YThlZTQyMTdjMGZiYzczZDJjMmZjMjNjNDU4MWJjNWJkYjA1MC4uNDgwYWZiODk5M2Jk
MjcxMmRiNmVhZGM5ZjU1MDlhZTI1MTk2NDYxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2ludGVncmF0aW9uL0lubGluZUl0ZXJhdG9yQm94LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2ludGVncmF0aW9uL0lubGluZUl0ZXJhdG9yQm94LmgKQEAgLTEzMSw3ICsxMzEs
NyBAQCBwdWJsaWM6CiAgICAgYm9vbCBhdEVuZCgpIGNvbnN0OwogCiBwcm90ZWN0ZWQ6Ci0gICAg
Qm94SXRlcmF0b3IoKSA6IG1fYm94KEJveExlZ2FjeVBhdGggeyBudWxscHRyLCB7IH0gfSkgeyB9
OworICAgIEJveEl0ZXJhdG9yKCkgOiBtX2JveChCb3hMZWdhY3lQYXRoIHsgbnVsbHB0ciB9KSB7
IH07CiAgICAgQm94SXRlcmF0b3IoQm94OjpQYXRoVmFyaWFudCYmKTsKICAgICBCb3hJdGVyYXRv
cihjb25zdCBCb3gmKTsKIApAQCAtMTQ4LDggKzE0OCw2IEBAIHB1YmxpYzoKICAgICBMZWFmQm94
SXRlcmF0b3ImIHRyYXZlcnNlUHJldmlvdXNPbkxpbmUoKTsKICAgICBMZWFmQm94SXRlcmF0b3Im
IHRyYXZlcnNlTmV4dE9uTGluZUlnbm9yaW5nTGluZUJyZWFrKCk7CiAgICAgTGVhZkJveEl0ZXJh
dG9yJiB0cmF2ZXJzZVByZXZpb3VzT25MaW5lSWdub3JpbmdMaW5lQnJlYWsoKTsKLSAgICBMZWFm
Qm94SXRlcmF0b3ImIHRyYXZlcnNlTmV4dE9uTGluZUluTG9naWNhbE9yZGVyKCk7Ci0gICAgTGVh
ZkJveEl0ZXJhdG9yJiB0cmF2ZXJzZVByZXZpb3VzT25MaW5lSW5Mb2dpY2FsT3JkZXIoKTsKIH07
CiAKIExlYWZCb3hJdGVyYXRvciBib3hGb3IoY29uc3QgUmVuZGVyTGluZUJyZWFrJik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vSW5saW5lSXRlcmF0b3JC
b3hMZWdhY3lQYXRoLmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vSW5saW5l
SXRlcmF0b3JCb3hMZWdhY3lQYXRoLmgKaW5kZXggM2JlNGQzZGNhYzNiOTM5YWVkNjY4YTMzNTMx
ZmI2N2RmMjM5OTNmYi4uMTUxYThkYTk0OGYwNDg1N2Q2ODQ2NWYyYWJkMDUyMzQ2ZTg2NTBmOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0lubGluZUl0ZXJh
dG9yQm94TGVnYWN5UGF0aC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlv
bi9JbmxpbmVJdGVyYXRvckJveExlZ2FjeVBhdGguaApAQCAtMzcsMjIgKzM3LDEwIEBAIG5hbWVz
cGFjZSBJbmxpbmVJdGVyYXRvciB7CiAKIGNsYXNzIEJveExlZ2FjeVBhdGggewogcHVibGljOgot
ICAgIEJveExlZ2FjeVBhdGgoY29uc3QgTGVnYWN5SW5saW5lQm94KiBpbmxpbmVCb3gsIFZlY3Rv
cjxjb25zdCBMZWdhY3lJbmxpbmVCb3gqPiYmIHNvcnRlZElubGluZUJveGVzID0geyB9LCBzaXpl
X3Qgc29ydGVkSW5saW5lQm94SW5kZXggPSAwKQorICAgIEJveExlZ2FjeVBhdGgoY29uc3QgTGVn
YWN5SW5saW5lQm94KiBpbmxpbmVCb3gpCiAgICAgICAgIDogbV9pbmxpbmVCb3goaW5saW5lQm94
KQotICAgICAgICAsIG1fbG9naWNhbE9yZGVyQ2FjaGUoV1RGTW92ZShzb3J0ZWRJbmxpbmVCb3hl
cykpCi0gICAgICAgICwgbV9sb2dpY2FsT3JkZXJDYWNoZUluZGV4KHNvcnRlZElubGluZUJveElu
ZGV4KQogICAgIHsgfQogCi0gICAgZW51bSBjbGFzcyBMb2dpY2FsT3JkZXIgeyBTdGFydCwgRW5k
IH07Ci0gICAgQm94TGVnYWN5UGF0aChjb25zdCBMZWdhY3lSb290SW5saW5lQm94JiByb290LCBM
b2dpY2FsT3JkZXIgb3JkZXIpCi0gICAgICAgIDogbV9sb2dpY2FsT3JkZXJDYWNoZShpbmxpbmVC
b3hlc0luTG9naWNhbE9yZGVyKHJvb3QpKQotICAgIHsKLSAgICAgICAgaWYgKCFtX2xvZ2ljYWxP
cmRlckNhY2hlLmlzRW1wdHkoKSkgewotICAgICAgICAgICAgbV9sb2dpY2FsT3JkZXJDYWNoZUlu
ZGV4ID0gb3JkZXIgPT0gTG9naWNhbE9yZGVyOjpTdGFydCA/IDAgOiBtX2xvZ2ljYWxPcmRlckNh
Y2hlLnNpemUoKSAtIDE7Ci0gICAgICAgICAgICBtX2lubGluZUJveCA9IG1fbG9naWNhbE9yZGVy
Q2FjaGVbbV9sb2dpY2FsT3JkZXJDYWNoZUluZGV4XTsKLSAgICAgICAgfQotICAgIH0KLQogICAg
IGJvb2wgaXNUZXh0KCkgY29uc3QgeyByZXR1cm4gbV9pbmxpbmVCb3gtPmlzSW5saW5lVGV4dEJv
eCgpOyB9CiAgICAgYm9vbCBpc0lubGluZUJveCgpIGNvbnN0IHsgcmV0dXJuIG1faW5saW5lQm94
LT5pc0lubGluZUZsb3dCb3goKTsgfQogICAgIGJvb2wgaXNSb290SW5saW5lQm94KCkgY29uc3Qg
eyByZXR1cm4gbV9pbmxpbmVCb3gtPmlzUm9vdElubGluZUJveCgpOyB9CkBAIC05OCwxOCArODYs
NiBAQCBwdWJsaWM6CiAgICAgICAgIG1faW5saW5lQm94ID0gbV9pbmxpbmVCb3gtPnByZXZpb3Vz
TGVhZk9uTGluZSgpOwogICAgIH0KIAotICAgIHZvaWQgdHJhdmVyc2VOZXh0T25MaW5lSW5Mb2dp
Y2FsT3JkZXIoKQotICAgIHsKLSAgICAgICAgaW5pdGlhbGl6ZUxvZ2ljYWxPcmRlckNhY2hlRm9y
TGluZSgpOwotICAgICAgICB0cmF2ZXJzZU5leHRJbmxpbmVCb3hJbkNhY2hlT3JkZXIoKTsKLSAg
ICB9Ci0KLSAgICB2b2lkIHRyYXZlcnNlUHJldmlvdXNPbkxpbmVJbkxvZ2ljYWxPcmRlcigpCi0g
ICAgewotICAgICAgICBpbml0aWFsaXplTG9naWNhbE9yZGVyQ2FjaGVGb3JMaW5lKCk7Ci0gICAg
ICAgIHRyYXZlcnNlUHJldmlvdXNJbmxpbmVCb3hJbkNhY2hlT3JkZXIoKTsKLSAgICB9Ci0KICAg
ICB2b2lkIHRyYXZlcnNlTmV4dElubGluZUJveCgpCiAgICAgewogICAgICAgICBtX2lubGluZUJv
eCA9IGlubGluZUZsb3dCb3goKS0+bmV4dExpbmVCb3goKTsKQEAgLTEzMSw0OSArMTA3LDggQEAg
cHJpdmF0ZToKICAgICBjb25zdCBMZWdhY3lJbmxpbmVUZXh0Qm94KiBpbmxpbmVUZXh0Qm94KCkg
Y29uc3QgeyByZXR1cm4gZG93bmNhc3Q8TGVnYWN5SW5saW5lVGV4dEJveD4obV9pbmxpbmVCb3gp
OyB9CiAgICAgY29uc3QgTGVnYWN5SW5saW5lRmxvd0JveCogaW5saW5lRmxvd0JveCgpIGNvbnN0
IHsgcmV0dXJuIGRvd25jYXN0PExlZ2FjeUlubGluZUZsb3dCb3g+KG1faW5saW5lQm94KTsgfQog
Ci0gICAgc3RhdGljIFZlY3Rvcjxjb25zdCBMZWdhY3lJbmxpbmVCb3gqPiBpbmxpbmVCb3hlc0lu
TG9naWNhbE9yZGVyKGNvbnN0IExlZ2FjeVJvb3RJbmxpbmVCb3gmIHJvb3QpCi0gICAgewotICAg
ICAgICBWZWN0b3I8TGVnYWN5SW5saW5lQm94Kj4gaW5saW5lQm94ZXM7Ci0gICAgICAgIHJvb3Qu
Y29sbGVjdExlYWZCb3hlc0luTG9naWNhbE9yZGVyKGlubGluZUJveGVzKTsKLSAgICAgICAgcmV0
dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8VmVjdG9yPGNvbnN0IExlZ2FjeUlubGluZUJveCo+Jj4oaW5s
aW5lQm94ZXMpOwotICAgIH0KLSAgICB2b2lkIGluaXRpYWxpemVMb2dpY2FsT3JkZXJDYWNoZUZv
ckxpbmUoKQotICAgIHsKLSAgICAgICAgaWYgKCFtX2lubGluZUJveCB8fCAhbV9sb2dpY2FsT3Jk
ZXJDYWNoZS5pc0VtcHR5KCkpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIG1fbG9naWNh
bE9yZGVyQ2FjaGUgPSBpbmxpbmVCb3hlc0luTG9naWNhbE9yZGVyKG1faW5saW5lQm94LT5yb290
KCkpOwotICAgICAgICBmb3IgKG1fbG9naWNhbE9yZGVyQ2FjaGVJbmRleCA9IDA7IG1fbG9naWNh
bE9yZGVyQ2FjaGVJbmRleCA8IG1fbG9naWNhbE9yZGVyQ2FjaGUuc2l6ZSgpOyArK21fbG9naWNh
bE9yZGVyQ2FjaGVJbmRleCkgewotICAgICAgICAgICAgaWYgKG1fbG9naWNhbE9yZGVyQ2FjaGVb
bV9sb2dpY2FsT3JkZXJDYWNoZUluZGV4XSA9PSBtX2lubGluZUJveCkKLSAgICAgICAgICAgICAg
ICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAg
fQotCi0gICAgdm9pZCB0cmF2ZXJzZU5leHRJbmxpbmVCb3hJbkNhY2hlT3JkZXIoKTsKLSAgICB2
b2lkIHRyYXZlcnNlUHJldmlvdXNJbmxpbmVCb3hJbkNhY2hlT3JkZXIoKTsKLQogICAgIGNvbnN0
IExlZ2FjeUlubGluZUJveCogbV9pbmxpbmVCb3ggeyBudWxscHRyIH07Ci0gICAgUmVmQ291bnRl
ZEFycmF5PGNvbnN0IExlZ2FjeUlubGluZUJveCo+IG1fbG9naWNhbE9yZGVyQ2FjaGU7Ci0gICAg
c2l6ZV90IG1fbG9naWNhbE9yZGVyQ2FjaGVJbmRleCB7IDAgfTsKIH07CiAKLQotaW5saW5lIHZv
aWQgQm94TGVnYWN5UGF0aDo6dHJhdmVyc2VOZXh0SW5saW5lQm94SW5DYWNoZU9yZGVyKCkKLXsK
LSAgICBBU1NFUlQoIW1fbG9naWNhbE9yZGVyQ2FjaGUuaXNFbXB0eSgpKTsKLSAgICArK21fbG9n
aWNhbE9yZGVyQ2FjaGVJbmRleDsKLSAgICBtX2lubGluZUJveCA9IG1fbG9naWNhbE9yZGVyQ2Fj
aGVJbmRleCA8IG1fbG9naWNhbE9yZGVyQ2FjaGUuc2l6ZSgpID8gbV9sb2dpY2FsT3JkZXJDYWNo
ZVttX2xvZ2ljYWxPcmRlckNhY2hlSW5kZXhdIDogbnVsbHB0cjsKLX0KLQotaW5saW5lIHZvaWQg
Qm94TGVnYWN5UGF0aDo6dHJhdmVyc2VQcmV2aW91c0lubGluZUJveEluQ2FjaGVPcmRlcigpCi17
Ci0gICAgQVNTRVJUKCFtX2xvZ2ljYWxPcmRlckNhY2hlLmlzRW1wdHkoKSk7Ci0gICAgaWYgKCFt
X2xvZ2ljYWxPcmRlckNhY2hlSW5kZXgpIHsKLSAgICAgICAgbV9pbmxpbmVCb3ggPSBudWxscHRy
OwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIG1faW5saW5lQm94ID0gbV9sb2dpY2FsT3Jk
ZXJDYWNoZVstLW1fbG9naWNhbE9yZGVyQ2FjaGVJbmRleF07Ci19Ci0KIH0KIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9JbmxpbmVJdGVyYXRvckJveE1v
ZGVyblBhdGguaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9JbmxpbmVJdGVy
YXRvckJveE1vZGVyblBhdGguaAppbmRleCA2MTU0M2IwY2Y0YzQ4YjBhYmQ5ZDJjNDI1ZTk0ZTE3
YWRmZjQ2MDUyLi5kN2RjOTRjYzg2ODdkZjNmMmMwNjQ2MzhjZWVmNTJlZWMxOWVlYTRiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vSW5saW5lSXRlcmF0b3JC
b3hNb2Rlcm5QYXRoLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0lu
bGluZUl0ZXJhdG9yQm94TW9kZXJuUGF0aC5oCkBAIC0xNjAsMTYgKzE2MCw2IEBAIHB1YmxpYzoK
ICAgICAgICAgICAgIHNldEF0RW5kKCk7CiAgICAgfQogCi0gICAgdm9pZCB0cmF2ZXJzZU5leHRP
bkxpbmVJbkxvZ2ljYWxPcmRlcigpCi0gICAgewotICAgICAgICB0cmF2ZXJzZU5leHRPbkxpbmUo
KTsKLSAgICB9Ci0KLSAgICB2b2lkIHRyYXZlcnNlUHJldmlvdXNPbkxpbmVJbkxvZ2ljYWxPcmRl
cigpCi0gICAgewotICAgICAgICB0cmF2ZXJzZVByZXZpb3VzT25MaW5lKCk7Ci0gICAgfQotCiAg
ICAgdm9pZCB0cmF2ZXJzZU5leHRJbmxpbmVCb3goKQogICAgIHsKICAgICAgICAgQVNTRVJUKGJv
eCgpLmlzSW5saW5lQm94KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lu
dGVncmF0aW9uL0lubGluZUl0ZXJhdG9yTGluZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
aW50ZWdyYXRpb24vSW5saW5lSXRlcmF0b3JMaW5lLmNwcAppbmRleCBmNGViNmE2OGZkM2RiYjgx
NTczMjAzZjliNjA3ZjRkMWY0NThhYzU2Li44ZmM2NDU0ZjM2MTIwYmNlZmJmMTM4NTkzMzhmNmE5
YjM0YTZhN2IwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24v
SW5saW5lSXRlcmF0b3JMaW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdy
YXRpb24vSW5saW5lSXRlcmF0b3JMaW5lLmNwcApAQCAtMTE1LDM4ICsxMTUsNiBAQCBMZWFmQm94
SXRlcmF0b3IgTGluZTo6bGFzdFJ1bigpIGNvbnN0CiAgICAgfSk7CiB9CiAKLUxlYWZCb3hJdGVy
YXRvciBMaW5lOjpsb2dpY2FsU3RhcnRSdW4oKSBjb25zdAotewotICAgIHJldHVybiBXVEY6OnN3
aXRjaE9uKG1fcGF0aFZhcmlhbnQsIFtdKGF1dG8mIHBhdGgpIC0+IExlYWZCb3hJdGVyYXRvciB7
Ci0gICAgICAgIHJldHVybiB7IHBhdGgubG9naWNhbFN0YXJ0UnVuKCkgfTsKLSAgICB9KTsKLX0K
LQotTGVhZkJveEl0ZXJhdG9yIExpbmU6OmxvZ2ljYWxFbmRSdW4oKSBjb25zdAotewotICAgIHJl
dHVybiBXVEY6OnN3aXRjaE9uKG1fcGF0aFZhcmlhbnQsIFtdKGF1dG8mIHBhdGgpIC0+IExlYWZC
b3hJdGVyYXRvciB7Ci0gICAgICAgIHJldHVybiB7IHBhdGgubG9naWNhbEVuZFJ1bigpIH07Ci0g
ICAgfSk7Ci19Ci0KLUxlYWZCb3hJdGVyYXRvciBMaW5lOjpsb2dpY2FsU3RhcnRSdW5XaXRoTm9k
ZSgpIGNvbnN0Ci17Ci0gICAgZm9yIChhdXRvIHJ1biA9IGxvZ2ljYWxTdGFydFJ1bigpOyBydW47
IHJ1bi50cmF2ZXJzZU5leHRPbkxpbmVJbkxvZ2ljYWxPcmRlcigpKSB7Ci0gICAgICAgIGlmIChy
dW4tPnJlbmRlcmVyKCkubm9kZSgpKQotICAgICAgICAgICAgcmV0dXJuIHJ1bjsKLSAgICB9Ci0g
ICAgcmV0dXJuIHsgfTsKLX0KLQotTGVhZkJveEl0ZXJhdG9yIExpbmU6OmxvZ2ljYWxFbmRSdW5X
aXRoTm9kZSgpIGNvbnN0Ci17Ci0gICAgZm9yIChhdXRvIHJ1biA9IGxvZ2ljYWxFbmRSdW4oKTsg
cnVuOyBydW4udHJhdmVyc2VQcmV2aW91c09uTGluZUluTG9naWNhbE9yZGVyKCkpIHsKLSAgICAg
ICAgaWYgKHJ1bi0+cmVuZGVyZXIoKS5ub2RlKCkpCi0gICAgICAgICAgICByZXR1cm4gcnVuOwot
ICAgIH0KLSAgICByZXR1cm4geyB9OwotfQotCiBMZWFmQm94SXRlcmF0b3IgTGluZTo6Y2xvc2Vz
dFJ1bkZvclBvaW50KGNvbnN0IEludFBvaW50JiBwb2ludEluQ29udGVudHMsIGJvb2wgZWRpdGFi
bGVPbmx5KSBjb25zdAogewogICAgIHJldHVybiBjbG9zZXN0UnVuRm9yTG9naWNhbExlZnRQb3Np
dGlvbihpc0hvcml6b250YWwoKSA/IHBvaW50SW5Db250ZW50cy54KCkgOiBwb2ludEluQ29udGVu
dHMueSgpLCBlZGl0YWJsZU9ubHkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2ludGVncmF0aW9uL0lubGluZUl0ZXJhdG9yTGluZS5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2ludGVncmF0aW9uL0lubGluZUl0ZXJhdG9yTGluZS5oCmluZGV4IDJkMzI4OTNlNzVkN2I3YmIx
NmY3ZDRkYWFhNDQ5ZTBmNTk5ZjEwNDAuLjY3ZDYzNWEzNmIwZWQyYWMyYzlmOWEwNWFkOTY1MTU2
ODg1MDYxMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9J
bmxpbmVJdGVyYXRvckxpbmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRp
b24vSW5saW5lSXRlcmF0b3JMaW5lLmgKQEAgLTg5LDExICs4OSw2IEBAIHB1YmxpYzoKIAogICAg
IExlYWZCb3hJdGVyYXRvciBjbG9zZXN0UnVuRm9yUG9pbnQoY29uc3QgSW50UG9pbnQmIHBvaW50
SW5Db250ZW50cywgYm9vbCBlZGl0YWJsZU9ubHkpIGNvbnN0OwogICAgIExlYWZCb3hJdGVyYXRv
ciBjbG9zZXN0UnVuRm9yTG9naWNhbExlZnRQb3NpdGlvbihpbnQgcG9zaXRpb24sIGJvb2wgZWRp
dGFibGVPbmx5ID0gZmFsc2UpIGNvbnN0OwotCi0gICAgTGVhZkJveEl0ZXJhdG9yIGxvZ2ljYWxT
dGFydFJ1bigpIGNvbnN0OwotICAgIExlYWZCb3hJdGVyYXRvciBsb2dpY2FsRW5kUnVuKCkgY29u
c3Q7Ci0gICAgTGVhZkJveEl0ZXJhdG9yIGxvZ2ljYWxTdGFydFJ1bldpdGhOb2RlKCkgY29uc3Q7
Ci0gICAgTGVhZkJveEl0ZXJhdG9yIGxvZ2ljYWxFbmRSdW5XaXRoTm9kZSgpIGNvbnN0OwogICAg
IAogICAgIExlYWZCb3hJdGVyYXRvciBmaXJzdFNlbGVjdGVkQm94KCkgY29uc3Q7CiAgICAgTGVh
ZkJveEl0ZXJhdG9yIGxhc3RTZWxlY3RlZEJveCgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0lubGluZUl0ZXJhdG9yTGluZUxlZ2FjeVBhdGgu
aCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9JbmxpbmVJdGVyYXRvckxpbmVM
ZWdhY3lQYXRoLmgKaW5kZXggZmFjM2EyMmU3NDk0ZDRlNDMxMjE4ZmNlODllNzliNDMyNGE5M2Qw
OS4uYjc0YzZkOWEwMDFlMjU0MjI1ZmY3ZmNhYWRiYWZlMzQ2ZGMwNzAxNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0lubGluZUl0ZXJhdG9yTGluZUxlZ2Fj
eVBhdGguaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vSW5saW5lSXRl
cmF0b3JMaW5lTGVnYWN5UGF0aC5oCkBAIC04NSwxNyArODUsNiBAQCBwdWJsaWM6CiAgICAgICAg
IHJldHVybiB7IG1fcm9vdElubGluZUJveC0+bGFzdExlYWZEZXNjZW5kYW50KCkgfTsKICAgICB9
CiAKLQotICAgIEJveExlZ2FjeVBhdGggbG9naWNhbFN0YXJ0UnVuKCkgY29uc3QKLSAgICB7Ci0g
ICAgICAgIHJldHVybiB7ICptX3Jvb3RJbmxpbmVCb3gsIEJveExlZ2FjeVBhdGg6OkxvZ2ljYWxP
cmRlcjo6U3RhcnQgfTsKLSAgICB9Ci0KLSAgICBCb3hMZWdhY3lQYXRoIGxvZ2ljYWxFbmRSdW4o
KSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIHsgKm1fcm9vdElubGluZUJveCwgQm94TGVn
YWN5UGF0aDo6TG9naWNhbE9yZGVyOjpFbmQgfTsKLSAgICB9Ci0KIHByaXZhdGU6CiAgICAgY29u
c3QgTGVnYWN5Um9vdElubGluZUJveCogbV9yb290SW5saW5lQm94OwogfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9JbmxpbmVJdGVyYXRvckxpbmVNb2Rl
cm5QYXRoLmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vSW5saW5lSXRlcmF0
b3JMaW5lTW9kZXJuUGF0aC5oCmluZGV4IGNhZjgyNmY4NTFlNDdmZmU3ZDVhMGRhYzU5NWZlOWRm
MzNjNDVkZTMuLmI5MWNmY2Y2NDUwZDM5OTVjNWI0NGVlNmY1MDA0ZDA5YTI3ODNkODUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9JbmxpbmVJdGVyYXRvckxp
bmVNb2Rlcm5QYXRoLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0lu
bGluZUl0ZXJhdG9yTGluZU1vZGVyblBhdGguaApAQCAtMTE2LDE2ICsxMTYsNiBAQCBwdWJsaWM6
CiAgICAgICAgIHJldHVybiBydW5JdGVyYXRvcjsKICAgICB9CiAKLSAgICBCb3hNb2Rlcm5QYXRo
IGxvZ2ljYWxTdGFydFJ1bigpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gZmlyc3RSdW4o
KTsKLSAgICB9Ci0KLSAgICBCb3hNb2Rlcm5QYXRoIGxvZ2ljYWxFbmRSdW4oKSBjb25zdAotICAg
IHsKLSAgICAgICAgcmV0dXJuIGxhc3RSdW4oKTsKLSAgICB9Ci0KIHByaXZhdGU6CiAgICAgdm9p
ZCBzZXRBdEVuZCgpIHsgbV9saW5lSW5kZXggPSBsaW5lcygpLnNpemUoKTsgfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vSW5saW5lSXRlcmF0b3JMb2dp
Y2FsT3JkZXJUcmF2ZXJzYWwuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9u
L0lubGluZUl0ZXJhdG9yTG9naWNhbE9yZGVyVHJhdmVyc2FsLmNwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yN2Rl
MjkxM2NmYWU0OWY4ZGJjM2Q5OTFiZjM5NGIyNjRmOTE0ZDFhCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0lubGluZUl0ZXJhdG9yTG9naWNhbE9y
ZGVyVHJhdmVyc2FsLmNwcApAQCAtMCwwICsxLDIyNCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJJbmxpbmVJdGVyYXRvckxvZ2ljYWxPcmRlclRyYXZlcnNh
bC5oIgorCisjaW5jbHVkZSAiSW5saW5lSXRlcmF0b3JMaW5lLmgiCisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKK25hbWVzcGFjZSBJbmxpbmVJdGVyYXRvciB7CisKK3N0YXRpYyBUZXh0TG9naWNhbE9y
ZGVyQ2FjaGUgbWFrZVRleHRMb2dpY2FsT3JkZXJDYWNoZUlmTmVlZGVkKGNvbnN0IFJlbmRlclRl
eHQmIHRleHQpCit7CisgICAgaWYgKCF0ZXh0LmNvbnRhaW5zUmV2ZXJzZWRUZXh0KCkpCisgICAg
ICAgIHJldHVybiB7IH07CisKKyAgICBhdXRvIGNhY2hlID0gV1RGOjptYWtlVW5pcXVlPFRleHRM
b2dpY2FsT3JkZXJDYWNoZURhdGE+KCk7CisgICAgZm9yIChhdXRvIHRleHRCb3ggOiB0ZXh0Qm94
ZXNGb3IodGV4dCkpCisgICAgICAgIGNhY2hlLT5ib3hlcy5hcHBlbmQodGV4dEJveCk7CisKKyAg
ICBpZiAoY2FjaGUtPmJveGVzLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisK
KyAgICBzdGQ6OnNvcnQoY2FjaGUtPmJveGVzLmJlZ2luKCksIGNhY2hlLT5ib3hlcy5lbmQoKSwg
WyZdKGF1dG8mIGEsIGF1dG8mIGIpIHsKKyAgICAgICAgcmV0dXJuIGEtPnN0YXJ0KCkgPCBiLT5z
dGFydCgpOworICAgIH0pOworCisgICAgcmV0dXJuIGNhY2hlOworfQorCitzdGF0aWMgdm9pZCB1
cGRhdGVUZXh0TG9naWNhbE9yZGVyQ2FjaGVJZk5lZWRlZChjb25zdCBUZXh0Qm94SXRlcmF0b3Im
IHRleHRCb3gsIFRleHRMb2dpY2FsT3JkZXJDYWNoZSYgY2FjaGUpCit7CisgICAgaWYgKCFjYWNo
ZSAmJiAhKGNhY2hlID0gbWFrZVRleHRMb2dpY2FsT3JkZXJDYWNoZUlmTmVlZGVkKHRleHRCb3gt
PnJlbmRlcmVyKCkpKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKGNhY2hlLT5pbmRleCA8
IGNhY2hlLT5ib3hlcy5zaXplKCkgJiYgY2FjaGUtPmJveGVzW2NhY2hlLT5pbmRleF0gPT0gdGV4
dEJveCkKKyAgICAgICAgcmV0dXJuOworCisgICAgY2FjaGUtPmluZGV4ID0gY2FjaGUtPmJveGVz
LmZpbmQodGV4dEJveCk7CisKKyAgICBpZiAoY2FjaGUtPmluZGV4ID09IG5vdEZvdW5kKSB7Cisg
ICAgICAgIGNhY2hlID0geyB9OworICAgICAgICB1cGRhdGVUZXh0TG9naWNhbE9yZGVyQ2FjaGVJ
Zk5lZWRlZCh0ZXh0Qm94LCBjYWNoZSk7CisgICAgfQorfQorCitzdGQ6OnBhaXI8VGV4dEJveEl0
ZXJhdG9yLCBUZXh0TG9naWNhbE9yZGVyQ2FjaGU+IGZpcnN0VGV4dEJveEluTG9naWNhbE9yZGVy
Rm9yKGNvbnN0IFJlbmRlclRleHQmIHRleHQpCit7CisgICAgaWYgKGF1dG8gY2FjaGUgPSBtYWtl
VGV4dExvZ2ljYWxPcmRlckNhY2hlSWZOZWVkZWQodGV4dCkpCisgICAgICAgIHJldHVybiB7IGNh
Y2hlLT5ib3hlcy5maXJzdCgpLCBXVEZNb3ZlKGNhY2hlKSB9OworCisgICAgcmV0dXJuIHsgZmly
c3RUZXh0Qm94Rm9yKHRleHQpLCBudWxscHRyIH07Cit9CisKK1RleHRCb3hJdGVyYXRvciBuZXh0
VGV4dEJveEluTG9naWNhbE9yZGVyKGNvbnN0IFRleHRCb3hJdGVyYXRvciYgdGV4dEJveCwgVGV4
dExvZ2ljYWxPcmRlckNhY2hlJiBjYWNoZSkKK3sKKyAgICB1cGRhdGVUZXh0TG9naWNhbE9yZGVy
Q2FjaGVJZk5lZWRlZCh0ZXh0Qm94LCBjYWNoZSk7CisKKyAgICBpZiAoIWNhY2hlKQorICAgICAg
ICByZXR1cm4gdGV4dEJveC0+bmV4dFRleHRCb3goKTsKKworICAgIGNhY2hlLT5pbmRleCsrOwor
CisgICAgaWYgKGNhY2hlLT5pbmRleCA8IGNhY2hlLT5ib3hlcy5zaXplKCkpCisgICAgICAgIHJl
dHVybiBjYWNoZS0+Ym94ZXNbY2FjaGUtPmluZGV4XTsKKworICAgIHJldHVybiB7IH07Cit9CisK
K3N0YXRpYyBMaW5lTG9naWNhbE9yZGVyQ2FjaGUgbWFrZUxpbmVMb2dpY2FsT3JkZXJDYWNoZShj
b25zdCBMaW5lSXRlcmF0b3ImIGxpbmUpCit7CisgICAgYXV0byBjYWNoZSA9IFdURjo6bWFrZVVu
aXF1ZTxMaW5lTG9naWNhbE9yZGVyQ2FjaGVEYXRhPigpOworICAgIGNhY2hlLT5saW5lID0gbGlu
ZTsKKworICAgIGF1dG8mIGJveGVzID0gY2FjaGUtPmJveGVzOworCisgICAgdW5zaWduZWQgY2hh
ciBtaW5MZXZlbCA9IDEyODsKKyAgICB1bnNpZ25lZCBjaGFyIG1heExldmVsID0gMDsKKworICAg
IGZvciAoYXV0byBib3ggPSBsaW5lLT5maXJzdFJ1bigpOyBib3g7IGJveCA9IGJveC50cmF2ZXJz
ZU5leHRPbkxpbmUoKSkgeworICAgICAgICBtaW5MZXZlbCA9IHN0ZDo6bWluKG1pbkxldmVsLCBi
b3gtPmJpZGlMZXZlbCgpKTsKKyAgICAgICAgbWF4TGV2ZWwgPSBzdGQ6Om1heChtYXhMZXZlbCwg
Ym94LT5iaWRpTGV2ZWwoKSk7CisgICAgICAgIGJveGVzLmFwcGVuZChib3gpOworICAgIH0KKwor
ICAgIGlmICghbWF4TGV2ZWwpCisgICAgICAgIHJldHVybiBjYWNoZTsKKworICAgIGlmIChsaW5l
LT5jb250YWluaW5nQmxvY2soKS5zdHlsZSgpLnJ0bE9yZGVyaW5nKCkgPT0gT3JkZXI6OlZpc3Vh
bCkKKyAgICAgICAgcmV0dXJuIGNhY2hlOworCisgICAgLy8gUmV2ZXJzZSBvZiByZW9yZGVyaW5n
IG9mIHRoZSBsaW5lIChMMiBhY2NvcmRpbmcgdG8gQmlkaSBzcGVjKToKKyAgICAvLyBMMi4gRnJv
bSB0aGUgaGlnaGVzdCBsZXZlbCBmb3VuZCBpbiB0aGUgdGV4dCB0byB0aGUgbG93ZXN0IG9kZCBs
ZXZlbCBvbiBlYWNoIGxpbmUsCisgICAgLy8gcmV2ZXJzZSBhbnkgY29udGlndW91cyBzZXF1ZW5j
ZSBvZiBjaGFyYWN0ZXJzIHRoYXQgYXJlIGF0IHRoYXQgbGV2ZWwgb3IgaGlnaGVyLgorCisgICAg
Ly8gUmV2ZXJzaW5nIHRoZSByZW9yZGVyaW5nIG9mIHRoZSBsaW5lIGlzIG9ubHkgZG9uZSB1cCB0
byB0aGUgbG93ZXN0IG9kZCBsZXZlbC4KKyAgICBpZiAoIShtaW5MZXZlbCAlIDIpKQorICAgICAg
ICArK21pbkxldmVsOworCisgICAgYXV0byBlbmQgPSBib3hlcy5lbmQoKTsKKyAgICBmb3IgKDsg
bWluTGV2ZWwgPD0gbWF4TGV2ZWw7ICsrbWluTGV2ZWwpIHsKKyAgICAgICAgYXV0byBib3ggPSBi
b3hlcy5iZWdpbigpOworICAgICAgICB3aGlsZSAoYm94IDwgZW5kKSB7CisgICAgICAgICAgICB3
aGlsZSAoYm94IDwgZW5kICYmICgqYm94KS0+YmlkaUxldmVsKCkgPCBtaW5MZXZlbCkKKyAgICAg
ICAgICAgICAgICArK2JveDsKKworICAgICAgICAgICAgYXV0byBmaXJzdCA9IGJveDsKKyAgICAg
ICAgICAgIHdoaWxlIChib3ggPCBlbmQgJiYgKCpib3gpLT5iaWRpTGV2ZWwoKSA+PSBtaW5MZXZl
bCkKKyAgICAgICAgICAgICAgICArK2JveDsKKworICAgICAgICAgICAgYXV0byBsYXN0ID0gYm94
OworICAgICAgICAgICAgc3RkOjpyZXZlcnNlKGZpcnN0LCBsYXN0KTsKKyAgICAgICAgfQorICAg
IH0KKworICAgIHJldHVybiBjYWNoZTsKK30KKworc3RhdGljIHZvaWQgdXBkYXRlTGluZUxvZ2lj
YWxPcmRlckNhY2hlSWZOZWVkZWQoY29uc3QgTGVhZkJveEl0ZXJhdG9yJiBib3gsIExpbmVMb2dp
Y2FsT3JkZXJDYWNoZSYgY2FjaGUpCit7CisgICAgYXV0byBsaW5lID0gYm94LT5saW5lKCk7Cisg
ICAgaWYgKCFjYWNoZSB8fCBjYWNoZS0+bGluZSAhPSBsaW5lKQorICAgICAgICBjYWNoZSA9IG1h
a2VMaW5lTG9naWNhbE9yZGVyQ2FjaGUobGluZSk7CisKKyAgICBpZiAoY2FjaGUtPmluZGV4IDwg
Y2FjaGUtPmJveGVzLnNpemUoKSAmJiBjYWNoZS0+Ym94ZXNbY2FjaGUtPmluZGV4XSA9PSBib3gp
CisgICAgICAgIHJldHVybjsKKworICAgIGNhY2hlLT5pbmRleCA9IGNhY2hlLT5ib3hlcy5maW5k
KGJveCk7CisKKyAgICBBU1NFUlQoY2FjaGUtPmluZGV4ICE9IG5vdEZvdW5kKTsKK30KKworTGVh
ZkJveEl0ZXJhdG9yIGZpcnN0TGVhZk9uTGluZUluTG9naWNhbE9yZGVyKGNvbnN0IExpbmVJdGVy
YXRvciYgbGluZSwgTGluZUxvZ2ljYWxPcmRlckNhY2hlJiBjYWNoZSkKK3sKKyAgICBjYWNoZSA9
IG1ha2VMaW5lTG9naWNhbE9yZGVyQ2FjaGUobGluZSk7CisKKyAgICBpZiAoY2FjaGUtPmJveGVz
LmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIGNhY2hlLT5pbmRleCA9IDA7
CisgICAgcmV0dXJuIGNhY2hlLT5ib3hlcy5maXJzdCgpOworfQorCitMZWFmQm94SXRlcmF0b3Ig
bGFzdExlYWZPbkxpbmVJbkxvZ2ljYWxPcmRlcihjb25zdCBMaW5lSXRlcmF0b3ImIGxpbmUsIExp
bmVMb2dpY2FsT3JkZXJDYWNoZSYgY2FjaGUpCit7CisgICAgY2FjaGUgPSBtYWtlTGluZUxvZ2lj
YWxPcmRlckNhY2hlKGxpbmUpOworCisgICAgaWYgKGNhY2hlLT5ib3hlcy5pc0VtcHR5KCkpCisg
ICAgICAgIHJldHVybiB7IH07CisKKyAgICBjYWNoZS0+aW5kZXggPSBjYWNoZS0+Ym94ZXMuc2l6
ZSgpIC0gMTsKKyAgICByZXR1cm4gY2FjaGUtPmJveGVzLmxhc3QoKTsKK30KKworTGVhZkJveEl0
ZXJhdG9yIG5leHRMZWFmT25MaW5lSW5Mb2dpY2FsT3JkZXIoY29uc3QgTGVhZkJveEl0ZXJhdG9y
JiBib3gsIExpbmVMb2dpY2FsT3JkZXJDYWNoZSYgY2FjaGUpCit7CisgICAgdXBkYXRlTGluZUxv
Z2ljYWxPcmRlckNhY2hlSWZOZWVkZWQoYm94LCBjYWNoZSk7CisKKyAgICBpZiAoIWNhY2hlKQor
ICAgICAgICByZXR1cm4gYm94LT5uZXh0T25MaW5lKCk7CisKKyAgICBjYWNoZS0+aW5kZXgrKzsK
KworICAgIGlmIChjYWNoZS0+aW5kZXggPCBjYWNoZS0+Ym94ZXMuc2l6ZSgpKQorICAgICAgICBy
ZXR1cm4gY2FjaGUtPmJveGVzW2NhY2hlLT5pbmRleF07CisKKyAgICByZXR1cm4geyB9OworfQor
CitMZWFmQm94SXRlcmF0b3IgcHJldmlvdXNMZWFmT25MaW5lSW5Mb2dpY2FsT3JkZXIoY29uc3Qg
TGVhZkJveEl0ZXJhdG9yJiBib3gsIExpbmVMb2dpY2FsT3JkZXJDYWNoZSYgY2FjaGUpCit7Cisg
ICAgdXBkYXRlTGluZUxvZ2ljYWxPcmRlckNhY2hlSWZOZWVkZWQoYm94LCBjYWNoZSk7CisKKyAg
ICBpZiAoIWNhY2hlKQorICAgICAgICByZXR1cm4gYm94LT5wcmV2aW91c09uTGluZSgpOworCisg
ICAgaWYgKCFjYWNoZS0+aW5kZXgpCisgICAgICAgIHJldHVybiB7IH07CisKKyAgICBjYWNoZS0+
aW5kZXgtLTsKKworICAgIHJldHVybiBjYWNoZS0+Ym94ZXNbY2FjaGUtPmluZGV4XTsKK30KKwor
TGVhZkJveEl0ZXJhdG9yIGZpcnN0TGVhZk9uTGluZUluTG9naWNhbE9yZGVyV2l0aE5vZGUoY29u
c3QgTGluZUl0ZXJhdG9yJiBsaW5lLCBMaW5lTG9naWNhbE9yZGVyQ2FjaGUmIGNhY2hlKQorewor
ICAgIGF1dG8gYm94ID0gZmlyc3RMZWFmT25MaW5lSW5Mb2dpY2FsT3JkZXIobGluZSwgY2FjaGUp
OworICAgIHdoaWxlICghYm94LT5yZW5kZXJlcigpLm5vZGUoKSkKKyAgICAgICAgYm94ID0gbmV4
dExlYWZPbkxpbmVJbkxvZ2ljYWxPcmRlcihib3gsIGNhY2hlKTsKKyAgICByZXR1cm4gYm94Owor
fQorCitMZWFmQm94SXRlcmF0b3IgbGFzdExlYWZPbkxpbmVJbkxvZ2ljYWxPcmRlcldpdGhOb2Rl
KGNvbnN0IExpbmVJdGVyYXRvciYgbGluZSwgTGluZUxvZ2ljYWxPcmRlckNhY2hlJiBjYWNoZSkK
K3sKKyAgICBhdXRvIGJveCA9IGxhc3RMZWFmT25MaW5lSW5Mb2dpY2FsT3JkZXIobGluZSwgY2Fj
aGUpOworICAgIHdoaWxlICghYm94LT5yZW5kZXJlcigpLm5vZGUoKSkKKyAgICAgICAgYm94ID0g
cHJldmlvdXNMZWFmT25MaW5lSW5Mb2dpY2FsT3JkZXIoYm94LCBjYWNoZSk7CisgICAgcmV0dXJu
IGJveDsKK30KKworfQorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVn
cmF0aW9uL0lubGluZUl0ZXJhdG9yTG9naWNhbE9yZGVyVHJhdmVyc2FsLmggYi9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvaW50ZWdyYXRpb24vSW5saW5lSXRlcmF0b3JMb2dpY2FsT3JkZXJUcmF2ZXJz
YWwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4xY2Y1ODk0Yzk4MDgyZDQ5MjE0ZmYwNjdiZTc2MDhjZTVhYzdjODky
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0lu
bGluZUl0ZXJhdG9yTG9naWNhbE9yZGVyVHJhdmVyc2FsLmgKQEAgLTAsMCArMSw2MyBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiSW5saW5lSXRlcmF0b3JMaW5lLmgi
CisjaW5jbHVkZSAiSW5saW5lSXRlcmF0b3JUZXh0Qm94LmgiCisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKK25hbWVzcGFjZSBJbmxpbmVJdGVyYXRvciB7CisKK3N0cnVjdCBUZXh0TG9naWNhbE9yZGVy
Q2FjaGVEYXRhIHsKKyAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CisKKyAgICBW
ZWN0b3I8VGV4dEJveEl0ZXJhdG9yPiBib3hlczsKKyAgICBzaXplX3QgaW5kZXggeyAwIH07Cit9
OwordXNpbmcgVGV4dExvZ2ljYWxPcmRlckNhY2hlID0gc3RkOjp1bmlxdWVfcHRyPFRleHRMb2dp
Y2FsT3JkZXJDYWNoZURhdGE+OworCitzdGQ6OnBhaXI8VGV4dEJveEl0ZXJhdG9yLCBUZXh0TG9n
aWNhbE9yZGVyQ2FjaGU+IGZpcnN0VGV4dEJveEluTG9naWNhbE9yZGVyRm9yKGNvbnN0IFJlbmRl
clRleHQmKTsKK1RleHRCb3hJdGVyYXRvciBuZXh0VGV4dEJveEluTG9naWNhbE9yZGVyKGNvbnN0
IFRleHRCb3hJdGVyYXRvciYsIFRleHRMb2dpY2FsT3JkZXJDYWNoZSYpOworCitzdHJ1Y3QgTGlu
ZUxvZ2ljYWxPcmRlckNhY2hlRGF0YSB7CisgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NB
VEVEOworCisgICAgTGluZUl0ZXJhdG9yIGxpbmU7CisgICAgVmVjdG9yPExlYWZCb3hJdGVyYXRv
cj4gYm94ZXM7CisgICAgc2l6ZV90IGluZGV4IHsgMCB9OworfTsKK3VzaW5nIExpbmVMb2dpY2Fs
T3JkZXJDYWNoZSA9IHN0ZDo6dW5pcXVlX3B0cjxMaW5lTG9naWNhbE9yZGVyQ2FjaGVEYXRhPjsK
KworTGVhZkJveEl0ZXJhdG9yIGZpcnN0TGVhZk9uTGluZUluTG9naWNhbE9yZGVyKGNvbnN0IExp
bmVJdGVyYXRvciYsIExpbmVMb2dpY2FsT3JkZXJDYWNoZSYpOworTGVhZkJveEl0ZXJhdG9yIGxh
c3RMZWFmT25MaW5lSW5Mb2dpY2FsT3JkZXIoY29uc3QgTGluZUl0ZXJhdG9yJiwgTGluZUxvZ2lj
YWxPcmRlckNhY2hlJik7CitMZWFmQm94SXRlcmF0b3IgbmV4dExlYWZPbkxpbmVJbkxvZ2ljYWxP
cmRlcihjb25zdCBMZWFmQm94SXRlcmF0b3ImLCBMaW5lTG9naWNhbE9yZGVyQ2FjaGUmKTsKK0xl
YWZCb3hJdGVyYXRvciBwcmV2aW91c0xlYWZPbkxpbmVJbkxvZ2ljYWxPcmRlcihjb25zdCBMZWFm
Qm94SXRlcmF0b3ImLCBMaW5lTG9naWNhbE9yZGVyQ2FjaGUmKTsKKworTGVhZkJveEl0ZXJhdG9y
IGZpcnN0TGVhZk9uTGluZUluTG9naWNhbE9yZGVyV2l0aE5vZGUoY29uc3QgTGluZUl0ZXJhdG9y
JiwgTGluZUxvZ2ljYWxPcmRlckNhY2hlJik7CitMZWFmQm94SXRlcmF0b3IgbGFzdExlYWZPbkxp
bmVJbkxvZ2ljYWxPcmRlcldpdGhOb2RlKGNvbnN0IExpbmVJdGVyYXRvciYsIExpbmVMb2dpY2Fs
T3JkZXJDYWNoZSYpOworCit9Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
aW50ZWdyYXRpb24vSW5saW5lSXRlcmF0b3JUZXh0Qm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9pbnRlZ3JhdGlvbi9JbmxpbmVJdGVyYXRvclRleHRCb3guY3BwCmluZGV4IDIxNTY4ZGYz
NDg4MmFmZDU2MmI4NThhNTQ1NTIwYTVlYTk4YmY0YjkuLmQyOTFjZjI2MzQ3ODg0MDNlMTE4ZThh
ZTJkMWNmZWM3MzFkMjkzNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRl
Z3JhdGlvbi9JbmxpbmVJdGVyYXRvclRleHRCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9pbnRlZ3JhdGlvbi9JbmxpbmVJdGVyYXRvclRleHRCb3guY3BwCkBAIC05OSw0MyArOTks
NiBAQCBUZXh0Qm94SXRlcmF0b3IgZmlyc3RUZXh0Qm94Rm9yKGNvbnN0IFJlbmRlclRleHQmIHRl
eHQpCiAgICAgcmV0dXJuIHsgQm94TGVnYWN5UGF0aCB7IHRleHQuZmlyc3RUZXh0Qm94KCkgfSB9
OwogfQogCi1zdGQ6OnBhaXI8VGV4dEJveEl0ZXJhdG9yLCBMb2dpY2FsT3JkZXJDYWNoZT4gZmly
c3RUZXh0Qm94SW5Mb2dpY2FsT3JkZXJGb3IoY29uc3QgUmVuZGVyVGV4dCYgdGV4dCkKLXsKLSAg
ICBpZiAoIXRleHQuY29udGFpbnNSZXZlcnNlZFRleHQoKSkKLSAgICAgICAgcmV0dXJuIHsgZmly
c3RUZXh0Qm94Rm9yKHRleHQpLCBudWxscHRyIH07Ci0KLSAgICBhdXRvIGNhY2hlID0gV1RGOjpt
YWtlVW5pcXVlPExvZ2ljYWxPcmRlckNhY2hlRGF0YT4oKTsKLSAgICBmb3IgKGF1dG8gdGV4dEJv
eCA6IHRleHRCb3hlc0Zvcih0ZXh0KSkKLSAgICAgICAgY2FjaGUtPmJveGVzLmFwcGVuZCh0ZXh0
Qm94KTsKLQotICAgIGlmIChjYWNoZS0+Ym94ZXMuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4g
eyBUZXh0Qm94SXRlcmF0b3IgeyB9LCBudWxscHRyIH07Ci0KLSAgICBzdGQ6OnNvcnQoY2FjaGUt
PmJveGVzLmJlZ2luKCksIGNhY2hlLT5ib3hlcy5lbmQoKSwgWyZdKGF1dG8mIGEsIGF1dG8mIGIp
IHsKLSAgICAgICAgcmV0dXJuIGEtPnN0YXJ0KCkgPCBiLT5zdGFydCgpOwotICAgIH0pOwotCi0g
ICAgcmV0dXJuIHsgY2FjaGUtPmJveGVzWzBdLCBXVEZNb3ZlKGNhY2hlKSB9OwotfQotCi1UZXh0
Qm94SXRlcmF0b3IgbmV4dFRleHRCb3hJbkxvZ2ljYWxPcmRlcihjb25zdCBUZXh0Qm94SXRlcmF0
b3ImIHRleHRCb3gsIExvZ2ljYWxPcmRlckNhY2hlJiBjYWNoZSkKLXsKLSAgICBpZiAoIWNhY2hl
KQotICAgICAgICByZXR1cm4gdGV4dEJveC0+bmV4dFRleHRCb3goKTsKLQotICAgIGlmIChjYWNo
ZS0+aW5kZXggPT0gY2FjaGUtPmJveGVzLnNpemUoKSB8fCBjYWNoZS0+Ym94ZXNbY2FjaGUtPmlu
ZGV4XSAhPSB0ZXh0Qm94KSB7Ci0gICAgICAgIGNhY2hlLT5pbmRleCA9IGNhY2hlLT5ib3hlcy5m
aW5kKHRleHRCb3gpOwotICAgICAgICBBU1NFUlQoY2FjaGUtPmluZGV4ICE9IG5vdEZvdW5kKTsK
LSAgICB9Ci0KLSAgICBjYWNoZS0+aW5kZXgrKzsKLQotICAgIGlmIChjYWNoZS0+aW5kZXggPCBj
YWNoZS0+Ym94ZXMuc2l6ZSgpKQotICAgICAgICByZXR1cm4gY2FjaGUtPmJveGVzW2NhY2hlLT5p
bmRleF07Ci0KLSAgICByZXR1cm4geyB9OwotfQotCiBUZXh0Qm94SXRlcmF0b3IgdGV4dEJveEZv
cihjb25zdCBMZWdhY3lJbmxpbmVUZXh0Qm94KiBsZWdhY3lJbmxpbmVUZXh0Qm94KQogewogICAg
IHJldHVybiB7IEJveExlZ2FjeVBhdGggeyBsZWdhY3lJbmxpbmVUZXh0Qm94IH0gfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9JbmxpbmVJdGVyYXRvclRl
eHRCb3guaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9JbmxpbmVJdGVyYXRv
clRleHRCb3guaAppbmRleCA0MmI0N2UzNDk5N2YzM2IyYTg3ZGI1ZTBiN2E1YjFhYTBkZTI4M2I4
Li5lOTMyYzA2ODc3MjUyNWU2MmUwOGZmNDc2MDUyYTYxNjc5NTVkNWZjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vSW5saW5lSXRlcmF0b3JUZXh0Qm94LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0lubGluZUl0ZXJhdG9yVGV4
dEJveC5oCkBAIC0zMiw5ICszMiw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogbmFtZXNwYWNl
IElubGluZUl0ZXJhdG9yIHsKIAotc3RydWN0IExvZ2ljYWxPcmRlckNhY2hlRGF0YTsKLXVzaW5n
IExvZ2ljYWxPcmRlckNhY2hlID0gc3RkOjp1bmlxdWVfcHRyPExvZ2ljYWxPcmRlckNhY2hlRGF0
YT47Ci0KIGNsYXNzIFRleHRCb3ggOiBwdWJsaWMgQm94IHsKIHB1YmxpYzoKICAgICBUZXh0Qm94
KFBhdGhWYXJpYW50JiYpOwpAQCAtNjMsNiArNjAsNyBAQCBwdWJsaWM6CiAgICAgY29uc3QgTGVn
YWN5SW5saW5lVGV4dEJveCogbGVnYWN5SW5saW5lQm94KCkgY29uc3QgeyByZXR1cm4gZG93bmNh
c3Q8TGVnYWN5SW5saW5lVGV4dEJveD4oQm94OjpsZWdhY3lJbmxpbmVCb3goKSk7IH0KIAogICAg
IFRleHRCb3hJdGVyYXRvciBuZXh0VGV4dEJveCgpIGNvbnN0OworICAgIFRleHRCb3hJdGVyYXRv
ciBwcmV2aW91c1RleHRCb3goKSBjb25zdDsKIH07CiAKIGNsYXNzIFRleHRCb3hJdGVyYXRvciA6
IHB1YmxpYyBMZWFmQm94SXRlcmF0b3IgewpAQCAtODMsOCArODEsNiBAQCBwcml2YXRlOgogICAg
IEJveEl0ZXJhdG9yJiB0cmF2ZXJzZVByZXZpb3VzT25MaW5lKCkgPSBkZWxldGU7CiAgICAgQm94
SXRlcmF0b3ImIHRyYXZlcnNlTmV4dE9uTGluZUlnbm9yaW5nTGluZUJyZWFrKCkgPSBkZWxldGU7
CiAgICAgQm94SXRlcmF0b3ImIHRyYXZlcnNlUHJldmlvdXNPbkxpbmVJZ25vcmluZ0xpbmVCcmVh
aygpID0gZGVsZXRlOwotICAgIEJveEl0ZXJhdG9yJiB0cmF2ZXJzZU5leHRPbkxpbmVJbkxvZ2lj
YWxPcmRlcigpID0gZGVsZXRlOwotICAgIEJveEl0ZXJhdG9yJiB0cmF2ZXJzZVByZXZpb3VzT25M
aW5lSW5Mb2dpY2FsT3JkZXIoKSA9IGRlbGV0ZTsKIAogICAgIGNvbnN0IFRleHRCb3gmIGdldCgp
IGNvbnN0IHsgcmV0dXJuIGRvd25jYXN0PFRleHRCb3g+KG1fYm94KTsgfQogfTsKQEAgLTExMSwx
NSArMTA3LDYgQEAgVGV4dEJveEl0ZXJhdG9yIHRleHRCb3hGb3IoY29uc3QgTGF5b3V0SW50ZWdy
YXRpb246OklubGluZUNvbnRlbnQmLCBzaXplX3QgYm94SW4KICNlbmRpZgogVGV4dEJveFJhbmdl
IHRleHRCb3hlc0Zvcihjb25zdCBSZW5kZXJUZXh0Jik7CiAKLXN0cnVjdCBMb2dpY2FsT3JkZXJD
YWNoZURhdGEgewotICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKLSAgICAKLSAg
ICBWZWN0b3I8VGV4dEJveEl0ZXJhdG9yPiBib3hlczsKLSAgICBzaXplX3QgaW5kZXggeyAwIH07
Ci19Owotc3RkOjpwYWlyPFRleHRCb3hJdGVyYXRvciwgTG9naWNhbE9yZGVyQ2FjaGU+IGZpcnN0
VGV4dEJveEluTG9naWNhbE9yZGVyRm9yKGNvbnN0IFJlbmRlclRleHQmKTsKLVRleHRCb3hJdGVy
YXRvciBuZXh0VGV4dEJveEluTG9naWNhbE9yZGVyKGNvbnN0IFRleHRCb3hJdGVyYXRvciYsIExv
Z2ljYWxPcmRlckNhY2hlJik7Ci0KIGlubGluZSBib29sIFRleHRCb3g6Omhhc0h5cGhlbigpIGNv
bnN0CiB7CiAgICAgcmV0dXJuIFdURjo6c3dpdGNoT24obV9wYXRoVmFyaWFudCwgW10oYXV0byYg
cGF0aCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2Nr
Rmxvdy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNwcApp
bmRleCAxMThjYzIwYTdiMmVhNTkxMzU5YzcyNTI1NjM0MWRkN2JmMTdkZmMwLi5mMmM2MjhmNjcx
YmJmZTVjYjg4ZTU4NWNjYWRmYTJmMmNlNzUxNmZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNwcApAQCAtMzYsNiArMzYsNyBAQAogI2luY2x1ZGUgIkhp
dFRlc3RMb2NhdGlvbi5oIgogI2luY2x1ZGUgIklubGluZUl0ZXJhdG9yQm94LmgiCiAjaW5jbHVk
ZSAiSW5saW5lSXRlcmF0b3JMaW5lLmgiCisjaW5jbHVkZSAiSW5saW5lSXRlcmF0b3JMb2dpY2Fs
T3JkZXJUcmF2ZXJzYWwuaCIKICNpbmNsdWRlICJJbmxpbmVJdGVyYXRvclRleHRCb3guaCIKICNp
bmNsdWRlICJJbmxpbmVXYWxrZXIuaCIKICNpbmNsdWRlICJMYXlvdXRJbnRlZ3JhdGlvbkxpbmVM
YXlvdXQuaCIKQEAgLTM2MTksNyArMzYyMCw4IEBAIFZpc2libGVQb3NpdGlvbiBSZW5kZXJCbG9j
a0Zsb3c6OnBvc2l0aW9uRm9yUG9pbnRXaXRoSW5saW5lQ2hpbGRyZW4oY29uc3QgTGF5b3V0CiAg
ICAgaWYgKGxhc3RMaW5lV2l0aENoaWxkcmVuKSB7CiAgICAgICAgIC8vIFdlIGhpdCB0aGlzIGNh
c2UgZm9yIE1hYyBiZWhhdmlvciB3aGVuIHRoZSBZIGNvb3JkaW5hdGUgaXMgYmVsb3cgdGhlIGxh
c3QgYm94LgogICAgICAgICBBU1NFUlQobW92ZUNhcmV0VG9Cb3VuZGFyeSk7Ci0gICAgICAgIGlm
IChhdXRvIGxvZ2ljYWxseUxhc3RSdW4gPSBsYXN0TGluZVdpdGhDaGlsZHJlbi0+bG9naWNhbEVu
ZFJ1bldpdGhOb2RlKCkpCisgICAgICAgIElubGluZUl0ZXJhdG9yOjpMaW5lTG9naWNhbE9yZGVy
Q2FjaGUgb3JkZXJDYWNoZTsKKyAgICAgICAgaWYgKGF1dG8gbG9naWNhbGx5TGFzdFJ1biA9IElu
bGluZUl0ZXJhdG9yOjpsYXN0TGVhZk9uTGluZUluTG9naWNhbE9yZGVyV2l0aE5vZGUobGFzdExp
bmVXaXRoQ2hpbGRyZW4sIG9yZGVyQ2FjaGUpKQogICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9u
Rm9yUnVuKCp0aGlzLCBsb2dpY2FsbHlMYXN0UnVuLCBmYWxzZSk7CiAgICAgfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHAKaW5kZXggNTdkZjE0MWVmNDc2NzdkNjJhYzFi
MTNmNGFlMjk1N2MyMjVlODg0Zi4uMjgxNjczMDg3NzMzZGI5ZDNkZjY5NmM0NDYzOTkwZDJmMjZk
YTZlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmNwcApAQCAtMzcsNiAr
MzcsNyBAQAogI2luY2x1ZGUgIkhUTUxQYXJzZXJJZGlvbXMuaCIKICNpbmNsdWRlICJIeXBoZW5h
dGlvbi5oIgogI2luY2x1ZGUgIklubGluZUl0ZXJhdG9yTGluZS5oIgorI2luY2x1ZGUgIklubGlu
ZUl0ZXJhdG9yTG9naWNhbE9yZGVyVHJhdmVyc2FsLmgiCiAjaW5jbHVkZSAiSW5saW5lSXRlcmF0
b3JUZXh0Qm94LmgiCiAjaW5jbHVkZSAiSW5saW5lUnVuQW5kT2Zmc2V0LmgiCiAjaW5jbHVkZSAi
TGF5b3V0SW50ZWdyYXRpb25MaW5lTGF5b3V0LmgiCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>441375</attachid>
            <date>2021-10-15 07:04:11 -0700</date>
            <delta_ts>2021-10-15 13:29:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-231800-20211015170409.patch</filename>
            <type>text/plain</type>
            <size>54249</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg0MjM2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODUwN2I1YjhiMjkzNjZj
N2M0ZDI3Mzk5ZWE0ZjQ1YzgxNTczZjU2OS4uNzhiMzg0ZDNkODhjOWYyMmVhYmZlNjI4NzQ2NTgz
YjBmNDFkMzBkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg4IEBACisyMDIxLTEwLTE1ICBBbnR0
aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBbTEZDXVtJbnRlZ3JhdGlv
bl0gRmFjdG9yIGxpbmUgbG9naWNhbCBvcmRlciB0cmF2ZXJzYWwgb3V0IG9mIGl0ZXJhdG9yCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzE4MDAKKwor
ICAgICAgICBSZXZpZXdlZCBieSBBbGFuIEJ1anRhcy4KKworICAgICAgICBTaW1pbGFyIHRvIHRl
eHQgbG9naWNhbCBvcmRlciB0cmF2ZXJzYWwsIHVzZSBzdGFuZGFsb25lIHRyYXZlcnNhbCBmdW5j
dGlvbnMgd2l0aCBvcmRlciBjYWNoZQorICAgICAgICBvd25lZCBieSB0aGUgY2FsbGVyLgorCisg
ICAgICAgIE1ha2UgdGhlIGNvZGUgZ2VuZXJpYyBzbyBpdCB3aWxsIHdvcmsgd2l0aCBJRkMgQmlE
aS4KKworICAgICAgICBGYWN0b3IgYWxsIHRyYXZlcnNhbCBmdW5jdGlvbnMgdG8gYSBmaWxlIG9m
IHRoZWlyIG93biwgSW5saW5lSXRlcmF0b3JMb2dpY2FsT3JkZXJUcmF2ZXJzYWwuaC9jcHAuCisK
KyAgICAgICAgKiBIZWFkZXJzLmNtYWtlOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAg
ICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBkb20vUG9z
aXRpb24uY3BwOgorICAgICAgICAqIGVkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuY3BwOgor
ICAgICAgICAqIGVkaXRpbmcvVGV4dEl0ZXJhdG9yLmg6CisgICAgICAgICogZWRpdGluZy9WaXNp
YmxlUG9zaXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VmlzaWJsZVBvc2l0aW9uOjpsZWZ0
VmlzdWFsbHlEaXN0aW5jdENhbmRpZGF0ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpWaXNp
YmxlUG9zaXRpb246OnJpZ2h0VmlzdWFsbHlEaXN0aW5jdENhbmRpZGF0ZSBjb25zdCk6CisgICAg
ICAgICogZWRpdGluZy9WaXNpYmxlVW5pdHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cHJldmlv
dXNUZXh0T3JMaW5lQnJlYWtSdW4pOgorICAgICAgICAoV2ViQ29yZTo6bmV4dFRleHRPckxpbmVC
cmVha1J1bik6CisgICAgICAgIChXZWJDb3JlOjpzdGFydFRleHRPckxpbmVCcmVha1J1bik6Cisg
ICAgICAgIChXZWJDb3JlOjplbmRUZXh0T3JMaW5lQnJlYWtSdW4pOgorICAgICAgICAoV2ViQ29y
ZTo6bG9naWNhbGx5UHJldmlvdXNSdW4pOgorICAgICAgICAoV2ViQ29yZTo6bG9naWNhbGx5TmV4
dFJ1bik6CisgICAgICAgIChXZWJDb3JlOjp3b3JkQnJlYWtJdGVyYXRvckZvck1pbk9mZnNldEJv
dW5kYXJ5KToKKyAgICAgICAgKFdlYkNvcmU6OndvcmRCcmVha0l0ZXJhdG9yRm9yTWF4T2Zmc2V0
Qm91bmRhcnkpOgorICAgICAgICAoV2ViQ29yZTo6c3RhcnRQb3NpdGlvbkZvckxpbmUpOgorICAg
ICAgICAoV2ViQ29yZTo6ZW5kUG9zaXRpb25Gb3JMaW5lKToKKyAgICAgICAgKiBsYXlvdXQvaW50
ZWdyYXRpb24vSW5saW5lSXRlcmF0b3JCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5l
SXRlcmF0b3I6OkxlYWZCb3hJdGVyYXRvcjo6dHJhdmVyc2VQcmV2aW91c09uTGluZUlnbm9yaW5n
TGluZUJyZWFrKToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpMZWFmQm94SXRl
cmF0b3I6OnRyYXZlcnNlTmV4dE9uTGluZUluTG9naWNhbE9yZGVyKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpMZWFmQm94SXRlcmF0b3I6OnRyYXZlcnNlUHJl
dmlvdXNPbkxpbmVJbkxvZ2ljYWxPcmRlcik6IERlbGV0ZWQuCisgICAgICAgICogbGF5b3V0L2lu
dGVncmF0aW9uL0lubGluZUl0ZXJhdG9yQm94Lmg6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJ
dGVyYXRvcjo6Qm94SXRlcmF0b3I6OkJveEl0ZXJhdG9yKToKKyAgICAgICAgKiBsYXlvdXQvaW50
ZWdyYXRpb24vSW5saW5lSXRlcmF0b3JCb3hMZWdhY3lQYXRoLmg6CisgICAgICAgIChXZWJDb3Jl
OjpJbmxpbmVJdGVyYXRvcjo6Qm94TGVnYWN5UGF0aDo6Qm94TGVnYWN5UGF0aCk6CisgICAgICAg
IChXZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6Qm94TGVnYWN5UGF0aDo6dHJhdmVyc2VOZXh0T25M
aW5lSW5Mb2dpY2FsT3JkZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRl
cmF0b3I6OkJveExlZ2FjeVBhdGg6OnRyYXZlcnNlUHJldmlvdXNPbkxpbmVJbkxvZ2ljYWxPcmRl
cik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6Qm94TGVnYWN5
UGF0aDo6aW5pdGlhbGl6ZUxvZ2ljYWxPcmRlckNhY2hlRm9yTGluZSk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6Qm94TGVnYWN5UGF0aDo6dHJhdmVyc2VOZXh0
SW5saW5lQm94SW5DYWNoZU9yZGVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OklubGlu
ZUl0ZXJhdG9yOjpCb3hMZWdhY3lQYXRoOjp0cmF2ZXJzZVByZXZpb3VzSW5saW5lQm94SW5DYWNo
ZU9yZGVyKTogRGVsZXRlZC4KKyAgICAgICAgKiBsYXlvdXQvaW50ZWdyYXRpb24vSW5saW5lSXRl
cmF0b3JCb3hNb2Rlcm5QYXRoLmg6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6
Qm94TW9kZXJuUGF0aDo6dHJhdmVyc2VOZXh0T25MaW5lSW5Mb2dpY2FsT3JkZXIpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRlcmF0b3I6OkJveE1vZGVyblBhdGg6OnRyYXZl
cnNlUHJldmlvdXNPbkxpbmVJbkxvZ2ljYWxPcmRlcik6IERlbGV0ZWQuCisgICAgICAgICogbGF5
b3V0L2ludGVncmF0aW9uL0lubGluZUl0ZXJhdG9yTGluZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJbmxpbmVJdGVyYXRvcjo6TGluZTo6bG9naWNhbFN0YXJ0UnVuIGNvbnN0KTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpMaW5lOjpsb2dpY2FsRW5kUnVuIGNv
bnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpMaW5lOjps
b2dpY2FsU3RhcnRSdW5XaXRoTm9kZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpJbmxpbmVJdGVyYXRvcjo6TGluZTo6bG9naWNhbEVuZFJ1bldpdGhOb2RlIGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKiBsYXlvdXQvaW50ZWdyYXRpb24vSW5saW5lSXRlcmF0b3JMaW5lLmg6
CisgICAgICAgICogbGF5b3V0L2ludGVncmF0aW9uL0lubGluZUl0ZXJhdG9yTGluZUxlZ2FjeVBh
dGguaDoKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpMaW5lSXRlcmF0b3JMZWdh
Y3lQYXRoOjpsb2dpY2FsU3RhcnRSdW4gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6SW5saW5lSXRlcmF0b3I6OkxpbmVJdGVyYXRvckxlZ2FjeVBhdGg6OmxvZ2ljYWxFbmRSdW4g
Y29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIGxheW91dC9pbnRlZ3JhdGlvbi9JbmxpbmVJdGVy
YXRvckxpbmVNb2Rlcm5QYXRoLmg6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6
TGluZUl0ZXJhdG9yTW9kZXJuUGF0aDo6bG9naWNhbFN0YXJ0UnVuIGNvbnN0KTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpMaW5lSXRlcmF0b3JNb2Rlcm5QYXRo
Ojpsb2dpY2FsRW5kUnVuIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBsYXlvdXQvaW50ZWdy
YXRpb24vSW5saW5lSXRlcmF0b3JMb2dpY2FsT3JkZXJUcmF2ZXJzYWwuY3BwOiBBZGRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjptYWtlVGV4dExvZ2ljYWxPcmRlckNhY2hl
SWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRlcmF0b3I6OnVwZGF0ZVRleHRM
b2dpY2FsT3JkZXJDYWNoZUlmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJh
dG9yOjpmaXJzdFRleHRCb3hJbkxvZ2ljYWxPcmRlckZvcik6CisgICAgICAgIChXZWJDb3JlOjpJ
bmxpbmVJdGVyYXRvcjo6bmV4dFRleHRCb3hJbkxvZ2ljYWxPcmRlcik6CisgICAgICAgIChXZWJD
b3JlOjpJbmxpbmVJdGVyYXRvcjo6bWFrZUxpbmVMb2dpY2FsT3JkZXJDYWNoZUlmTmVlZGVkKToK
KyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjp1cGRhdGVMaW5lTG9naWNhbE9yZGVy
Q2FjaGVJZk5lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6Zmlyc3RM
ZWFmT25MaW5lSW5Mb2dpY2FsT3JkZXIpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRlcmF0
b3I6Omxhc3RMZWFmT25MaW5lSW5Mb2dpY2FsT3JkZXIpOgorICAgICAgICAoV2ViQ29yZTo6SW5s
aW5lSXRlcmF0b3I6Om5leHRMZWFmT25MaW5lSW5Mb2dpY2FsT3JkZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5saW5lSXRlcmF0b3I6OnByZXZpb3VzTGVhZk9uTGluZUluTG9naWNhbE9yZGVyKToK
KyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpmaXJzdExlYWZPbkxpbmVJbkxvZ2lj
YWxPcmRlcldpdGhOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpsYXN0
TGVhZk9uTGluZUluTG9naWNhbE9yZGVyV2l0aE5vZGUpOgorICAgICAgICAqIGxheW91dC9pbnRl
Z3JhdGlvbi9JbmxpbmVJdGVyYXRvckxvZ2ljYWxPcmRlclRyYXZlcnNhbC5oOiBBZGRlZC4KKyAg
ICAgICAgKiBsYXlvdXQvaW50ZWdyYXRpb24vSW5saW5lSXRlcmF0b3JUZXh0Qm94LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpmaXJzdFRleHRCb3hJbkxvZ2ljYWxPcmRl
ckZvcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6bmV4dFRl
eHRCb3hJbkxvZ2ljYWxPcmRlcik6IERlbGV0ZWQuCisgICAgICAgICogbGF5b3V0L2ludGVncmF0
aW9uL0lubGluZUl0ZXJhdG9yVGV4dEJveC5oOgorICAgICAgICAoKTogRGVsZXRlZC4KKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckJsb2NrRmxvdzo6cG9zaXRpb25Gb3JQb2ludFdpdGhJbmxpbmVDaGlsZHJlbik6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwOgorCiAyMDIxLTEwLTE0ICBZb3Vlbm4gRmFi
bGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBNZWRpYUNhcGFiaWxpdGllcyBzaG91
bGQgZW5xdWV1ZSBhIHRhc2sgdG8gcmVzb2x2ZSBwcm9taXNlcwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvSGVhZGVycy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKaW5k
ZXggYjA2NTdlMWNjOWRlNTliMDkyOTg1OWQ0OTE3MmVmMTljZmQ4ZTYzMS4uNGNlNTUxY2NkMDM1
ZDFiNTcwNjNlZjQxMjRmM2JjZWNkMmI3MjFlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
SGVhZGVycy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCkBAIC04MDcs
NiArODA3LDcgQEAgc2V0KFdlYkNvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogICAgIGxh
eW91dC9pbnRlZ3JhdGlvbi9JbmxpbmVJdGVyYXRvckxpbmUuaAogICAgIGxheW91dC9pbnRlZ3Jh
dGlvbi9JbmxpbmVJdGVyYXRvckxpbmVMZWdhY3lQYXRoLmgKICAgICBsYXlvdXQvaW50ZWdyYXRp
b24vSW5saW5lSXRlcmF0b3JMaW5lTW9kZXJuUGF0aC5oCisgICAgbGF5b3V0L2ludGVncmF0aW9u
L0lubGluZUl0ZXJhdG9yTG9naWNhbE9yZGVyVHJhdmVyc2FsLmgKICAgICBsYXlvdXQvaW50ZWdy
YXRpb24vSW5saW5lSXRlcmF0b3JUZXh0Qm94LmgKICAgICBsYXlvdXQvaW50ZWdyYXRpb24vTGF5
b3V0SW50ZWdyYXRpb25JbmxpbmVDb250ZW50LmgKICAgICBsYXlvdXQvaW50ZWdyYXRpb24vTGF5
b3V0SW50ZWdyYXRpb25MaW5lLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMu
dHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXggMjU3MjYxOTBjOTFhZTM4N2Rl
M2Q0MWVjYjBhOTY5NjlmZGU2YWUxZS4uYzNlMjU4N2U2Y2NmYzEyYzBlOTMzMzE2ZjNlMmQ0NDUy
OGUxNjZmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291
cmNlL1dlYkNvcmUvU291cmNlcy50eHQKQEAgLTE1MjIsNiArMTUyMiw3IEBAIGxheW91dC9mb3Jt
YXR0aW5nQ29udGV4dHMvaW5saW5lL3RleHQvVGV4dFV0aWwuY3BwCiBsYXlvdXQvaW50ZWdyYXRp
b24vSW5saW5lSXRlcmF0b3JCb3guY3BwCiBsYXlvdXQvaW50ZWdyYXRpb24vSW5saW5lSXRlcmF0
b3JJbmxpbmVCb3guY3BwCiBsYXlvdXQvaW50ZWdyYXRpb24vSW5saW5lSXRlcmF0b3JMaW5lLmNw
cAorbGF5b3V0L2ludGVncmF0aW9uL0lubGluZUl0ZXJhdG9yTG9naWNhbE9yZGVyVHJhdmVyc2Fs
LmNwcAogbGF5b3V0L2ludGVncmF0aW9uL0lubGluZUl0ZXJhdG9yVGV4dEJveC5jcHAKIGxheW91
dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbkJveFRyZWUuY3BwCiBsYXlvdXQvaW50ZWdy
YXRpb24vTGF5b3V0SW50ZWdyYXRpb25Db3ZlcmFnZS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBhMTIzNmVmZWI3MzA4ZDUz
OTBlNWY4Y2UwZDI3Njk0ZGE0MTJkMTllLi43M2RhYWQ0MTU1NGZhM2E1YTQwM2MyZDg1NzMwZDZj
NDU0MDhlYmJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCkBAIC01MjUyLDYgKzUyNTIsNyBAQAogCQlFNDE1RUIxMzI3MEMzNTEzMDBF
OERBMUIgLyogSW5saW5lSXRlcmF0b3JJbmxpbmVCb3guaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0MTVFQjExMjcwQzM1MTIwMEU4REExQiAvKiBJbmxp
bmVJdGVyYXRvcklubGluZUJveC5oICovOyB9OwogCQlFNDE4MDI1NTIzRDQ1NDlCMDBGRkIwNzEg
LyogTGF5b3V0SW50ZWdyYXRpb25Cb3hUcmVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBFNDE4MDI1MzIzRDQ1NDlBMDBGRkIwNzEgLyogTGF5b3V0SW50
ZWdyYXRpb25Cb3hUcmVlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJRTQxOTA0MUYxQ0M2NDg2QjAwQzM1RjVEIC8qIEZvbnRTZWxlY3RvckNsaWVu
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTQxOTA0
MUUxQ0M2NDg2QjAwQzM1RjVEIC8qIEZvbnRTZWxlY3RvckNsaWVudC5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUU0MUFDQzE2MjcxNzM0MDIwMDNF
OTE1NyAvKiBJbmxpbmVJdGVyYXRvckxvZ2ljYWxPcmRlclRyYXZlcnNhbC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTQxQUNDMTUyNzE3MzQwMjAwM0U5
MTU3IC8qIElubGluZUl0ZXJhdG9yTG9naWNhbE9yZGVyVHJhdmVyc2FsLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTQyMDUwMTcyMTQxOTAxQjAw
NjZFRjNCIC8qIFByb2Nlc3NXYXJtaW5nLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBFNDIwNTAxNDIxNDE5MDFBMDA2NkVGM0IgLyogUHJvY2Vzc1dhcm1p
bmcuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlF
NDI0QTM5RTEzMzBERjAxMDBDRjZEQzkgLyogTGVnYWN5VGlsZUdyaWRUaWxlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNDI0QTM5RDEzMzBERjAxMDBD
RjZEQzkgLyogTGVnYWN5VGlsZUdyaWRUaWxlLmggKi87IH07CiAJCUU0MjVBNDlBMTgyOTJCODQw
MDIwQ0ZDRiAvKiBDb2xsZWN0aW9uSW5kZXhDYWNoZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTQyNUE0OTkxODI5MkI4NDAwMjBDRkNGIC8qIENvbGxl
Y3Rpb25JbmRleENhY2hlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKQEAgLTUzNTAsOSArNTM1MSw5IEBACiAJCUU0QzkxQTBFMTgwMjM0MzEwMEExN0Y2
RCAvKiBUZXh0UGFpbnRTdHlsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRTRDOTFBMEQxODAyMzQzMTAwQTE3RjZEIC8qIFRleHRQYWludFN0eWxlLmgg
Ki87IH07CiAJCUU0QzkxQTE2MTgwOTk5RjEwMEExN0Y2RCAvKiBSZW5kZXJUZXh0TGluZUJveGVz
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNEM5MUEx
NTE4MDk5OUYxMDBBMTdGNkQgLyogUmVuZGVyVGV4dExpbmVCb3hlcy5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUU0RDMzRjNCMjUyQUVFQ0QwMDgz
N0QwNSAvKiBJbmxpbmVSdW5BbmRPZmZzZXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEU0RDMzRjM5MjUyQUVFQ0MwMDgzN0QwNSAvKiBJbmxpbmVSdW5B
bmRPZmZzZXQuaCAqLzsgfTsKLQkJRTREMzNGNDEyNTJDNEI4MzAwODM3RDA1IC8qIElubGluZUl0
ZXJhdG9yTGluZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRTREMzNGM0YyNTJDNEI4MjAwODM3RDA1IC8qIElubGluZUl0ZXJhdG9yTGluZS5oICovOyB9
OwotCQlFNEQzM0Y0NDI1MkM1MEUyMDA4MzdEMDUgLyogSW5saW5lSXRlcmF0b3JMaW5lTGVnYWN5
UGF0aC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTRE
MzNGNDMyNTJDNTBFMjAwODM3RDA1IC8qIElubGluZUl0ZXJhdG9yTGluZUxlZ2FjeVBhdGguaCAq
LzsgfTsKLQkJRTREMzNGNDYyNTJDNTBGQzAwODM3RDA1IC8qIElubGluZUl0ZXJhdG9yTGluZU1v
ZGVyblBhdGguaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEU0RDMzRjQ1MjUyQzUwRkIwMDgzN0QwNSAvKiBJbmxpbmVJdGVyYXRvckxpbmVNb2Rlcm5QYXRo
LmggKi87IH07CisJCUU0RDMzRjQxMjUyQzRCODMwMDgzN0QwNSAvKiBJbmxpbmVJdGVyYXRvckxp
bmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0RDMz
RjNGMjUyQzRCODIwMDgzN0QwNSAvKiBJbmxpbmVJdGVyYXRvckxpbmUuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlFNEQzM0Y0NDI1MkM1MEUyMDA4
MzdEMDUgLyogSW5saW5lSXRlcmF0b3JMaW5lTGVnYWN5UGF0aC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTREMzNGNDMyNTJDNTBFMjAwODM3RDA1IC8q
IElubGluZUl0ZXJhdG9yTGluZUxlZ2FjeVBhdGguaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OworCQlFNEQzM0Y0NjI1MkM1MEZDMDA4MzdEMDUgLyogSW5s
aW5lSXRlcmF0b3JMaW5lTW9kZXJuUGF0aC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRTREMzNGNDUyNTJDNTBGQjAwODM3RDA1IC8qIElubGluZUl0ZXJh
dG9yTGluZU1vZGVyblBhdGguaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQlFNEQ1OEVCNTE3QjREQkRDMDBDQkRDQTggLyogU3R5bGVSZXNvbHZlRm9y
RG9jdW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEU0RDU4RUIzMTdCNERCREMwMENCRENBOCAvKiBTdHlsZVJlc29sdmVGb3JEb2N1bWVudC5oICov
OyB9OwogCQlFNEQ1OEVCOTE3QjRFRDg5MDBDQkRDQTggLyogU3R5bGVGb250U2l6ZUZ1bmN0aW9u
cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTRENThF
QjcxN0I0RUQ4OTAwQ0JEQ0E4IC8qIFN0eWxlRm9udFNpemVGdW5jdGlvbnMuaCAqLzsgfTsKIAkJ
RTRENThFQkIxN0I4RjEyODAwQ0JEQ0E4IC8qIEVsZW1lbnRUcmF2ZXJzYWwuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0RDU4RUJBMTdCOEYxMjgwMENC
RENBOCAvKiBFbGVtZW50VHJhdmVyc2FsLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTE2NTM0LDYgKzE2NTM1LDggQEAKIAkJRTQxODAyNTMyM0Q0
NTQ5QTAwRkZCMDcxIC8qIExheW91dEludGVncmF0aW9uQm94VHJlZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBMYXlvdXRJbnRlZ3JhdGlvbkJveFRyZWUuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTQxODAyNTYyM0Q0NTRCNTAwRkZCMDcxIC8qIExheW91dElu
dGVncmF0aW9uQm94VHJlZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBMYXlvdXRJbnRlZ3JhdGlv
bkJveFRyZWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFNDE5MDQxRTFDQzY0
ODZCMDBDMzVGNUQgLyogRm9udFNlbGVjdG9yQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEZvbnRTZWxlY3RvckNsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlFNDFBQ0MxMjI3MTczM0YzMDAzRTkxNTcgLyogSW5saW5lSXRlcmF0b3JMb2dpY2Fs
T3JkZXJUcmF2ZXJzYWwuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
SW5saW5lSXRlcmF0b3JMb2dpY2FsT3JkZXJUcmF2ZXJzYWwuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlFNDFBQ0MxNTI3MTczNDAyMDAzRTkxNTcgLyogSW5saW5lSXRlcmF0b3JM
b2dpY2FsT3JkZXJUcmF2ZXJzYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SW5saW5lSXRlcmF0b3JMb2dpY2FsT3JkZXJUcmF2ZXJzYWwuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJRTQxRUEwMzgxMTk4MzZEQjAwNzEwQkM1IC8qIENTU1Byb3BlcnR5TmFtZXMu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gQ1NTUHJvcGVydHlOYW1l
cy5jcHA7IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJDb3JlL0NTU1Byb3BlcnR5TmFtZXMuY3Bw
OyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQlFNDFFQTAzOTExOTgzNzQ5
MDA3MTBCQzUgLyogQ1NTVmFsdWVLZXl3b3Jkcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IG5hbWUgPSBDU1NWYWx1ZUtleXdvcmRzLmNwcDsgcGF0aCA9IERlcml2ZWRTb3VyY2Vz
L1dlYkNvcmUvQ1NTVmFsdWVLZXl3b3Jkcy5jcHA7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNU
U19ESVI7IH07CiAJCUU0MjA1MDE0MjE0MTkwMUEwMDY2RUYzQiAvKiBQcm9jZXNzV2FybWluZy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQcm9jZXNzV2FybWluZy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjk3MDcsNiArMjk3MTAsOCBAQAogCQkJCUU0RDMz
RjNGMjUyQzRCODIwMDgzN0QwNSAvKiBJbmxpbmVJdGVyYXRvckxpbmUuaCAqLywKIAkJCQlFNEQz
M0Y0MzI1MkM1MEUyMDA4MzdEMDUgLyogSW5saW5lSXRlcmF0b3JMaW5lTGVnYWN5UGF0aC5oICov
LAogCQkJCUU0RDMzRjQ1MjUyQzUwRkIwMDgzN0QwNSAvKiBJbmxpbmVJdGVyYXRvckxpbmVNb2Rl
cm5QYXRoLmggKi8sCisJCQkJRTQxQUNDMTIyNzE3MzNGMzAwM0U5MTU3IC8qIElubGluZUl0ZXJh
dG9yTG9naWNhbE9yZGVyVHJhdmVyc2FsLmNwcCAqLywKKwkJCQlFNDFBQ0MxNTI3MTczNDAyMDAz
RTkxNTcgLyogSW5saW5lSXRlcmF0b3JMb2dpY2FsT3JkZXJUcmF2ZXJzYWwuaCAqLywKIAkJCQlF
NDdDRUJERTI3MDk5MTY0MDBCOEQ4RjUgLyogSW5saW5lSXRlcmF0b3JUZXh0Qm94LmNwcCAqLywK
IAkJCQlFNDdDRUJFMDI3MDk5MTZEMDBCOEQ4RjUgLyogSW5saW5lSXRlcmF0b3JUZXh0Qm94Lmgg
Ki8sCiAJCQkJRTQxODAyNTYyM0Q0NTRCNTAwRkZCMDcxIC8qIExheW91dEludGVncmF0aW9uQm94
VHJlZS5jcHAgKi8sCkBAIC0zMzI0OCw2ICszMzI1Myw3IEBACiAJCQkJRTREMzNGNDEyNTJDNEI4
MzAwODM3RDA1IC8qIElubGluZUl0ZXJhdG9yTGluZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTRE
MzNGNDQyNTJDNTBFMjAwODM3RDA1IC8qIElubGluZUl0ZXJhdG9yTGluZUxlZ2FjeVBhdGguaCBp
biBIZWFkZXJzICovLAogCQkJCUU0RDMzRjQ2MjUyQzUwRkMwMDgzN0QwNSAvKiBJbmxpbmVJdGVy
YXRvckxpbmVNb2Rlcm5QYXRoLmggaW4gSGVhZGVycyAqLywKKwkJCQlFNDFBQ0MxNjI3MTczNDAy
MDAzRTkxNTcgLyogSW5saW5lSXRlcmF0b3JMb2dpY2FsT3JkZXJUcmF2ZXJzYWwuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUU0N0NFQkUxMjcwOTkxNkQwMEI4RDhGNSAvKiBJbmxpbmVJdGVyYXRvclRl
eHRCb3guaCBpbiBIZWFkZXJzICovLAogCQkJCTZGQUFFNzEzMjZBMjgxNEIwMEUwNzUwMiAvKiBJ
bmxpbmVMZXZlbEJveC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNkYwQ0Q2OTUyMjlFRDMyNzAwQzU5
OTRFIC8qIElubGluZUxpbmUuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL1Bvc2l0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Qb3NpdGlvbi5jcHAK
aW5kZXggMzI2NTYzZDUwODVjY2UwNDM0Yjc3NTU4NjI0OGE0YzUzYmZmYmMyYS4uMmMzMGRjMzI2
N2YzZGY3NzI5NTE0MjQ2MzllYzMzNWVlNjZhZGY1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL1Bvc2l0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUG9zaXRpb24uY3Bw
CkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAiSFRNTFBhcnNlcklkaW9tcy5oIgogI2luY2x1
ZGUgIkhUTUxUYWJsZUVsZW1lbnQuaCIKICNpbmNsdWRlICJJbmxpbmVJdGVyYXRvckxpbmUuaCIK
KyNpbmNsdWRlICJJbmxpbmVJdGVyYXRvckxvZ2ljYWxPcmRlclRyYXZlcnNhbC5oIgogI2luY2x1
ZGUgIklubGluZUl0ZXJhdG9yVGV4dEJveC5oIgogI2luY2x1ZGUgIklubGluZVJ1bkFuZE9mZnNl
dC5oIgogI2luY2x1ZGUgIkxlZ2FjeUlubGluZVRleHRCb3guaCIKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHAKaW5kZXggYzVlODViMTg4ZDhkOGE2
N2FkYjM1ZjM4NGE5YmJiYzExMTA2ZTEyNC4uOWRiYTIxODJhZjQ5MmEzODVmMzY5OWUwZDhmM2M2
OTBlNDM2NjdiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVF
ZGl0Q29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0
Q29tbWFuZC5jcHAKQEAgLTQ4LDYgKzQ4LDcgQEAKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNp
bmNsdWRlICJIVE1MU3BhbkVsZW1lbnQuaCIKICNpbmNsdWRlICJJbmxpbmVJdGVyYXRvckJveC5o
IgorI2luY2x1ZGUgIklubGluZUl0ZXJhdG9yTG9naWNhbE9yZGVyVHJhdmVyc2FsLmgiCiAjaW5j
bHVkZSAiSW5zZXJ0SW50b1RleHROb2RlQ29tbWFuZC5oIgogI2luY2x1ZGUgIkluc2VydExpbmVC
cmVha0NvbW1hbmQuaCIKICNpbmNsdWRlICJJbnNlcnROb2RlQmVmb3JlQ29tbWFuZC5oIgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuaCBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmgKaW5kZXggZWYyM2FkZTBhYzE2MGIwNjdhYjk1
NzdjNDJmZGJhOGNkMjZhOTFjNi4uYWI3N2Y0MjA2ZWJhMDQzNTJmMGQ1MGZlMTIyYjE3ZWUxZTRi
OGMxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5oCkBAIC0yNyw2ICsyNyw3
IEBACiAKICNpbmNsdWRlICJDaGFyYWN0ZXJSYW5nZS5oIgogI2luY2x1ZGUgIkZpbmRPcHRpb25z
LmgiCisjaW5jbHVkZSAiSW5saW5lSXRlcmF0b3JMb2dpY2FsT3JkZXJUcmF2ZXJzYWwuaCIKICNp
bmNsdWRlICJJbmxpbmVJdGVyYXRvclRleHRCb3guaCIKICNpbmNsdWRlICJTaW1wbGVSYW5nZS5o
IgogI2luY2x1ZGUgIlRleHRJdGVyYXRvckJlaGF2aW9yLmgiCkBAIC0xNTEsMTEgKzE1MiwxMSBA
QCBwcml2YXRlOgogICAgIC8vIFVzZWQgd2hlbiB0aGVyZSBpcyBzdGlsbCBzb21lIHBlbmRpbmcg
dGV4dCBmcm9tIHRoZSBjdXJyZW50IG5vZGU7IHdoZW4gdGhlc2UgYXJlIGZhbHNlIGFuZCBudWxs
LCB3ZSBnbyBiYWNrIHRvIG5vcm1hbCBpdGVyYXRpbmcuCiAgICAgTm9kZSogbV9ub2RlRm9yQWRk
aXRpb25hbE5ld2xpbmUgeyBudWxscHRyIH07CiAgICAgSW5saW5lSXRlcmF0b3I6OlRleHRCb3hJ
dGVyYXRvciBtX3RleHRSdW47Ci0gICAgSW5saW5lSXRlcmF0b3I6OkxvZ2ljYWxPcmRlckNhY2hl
IG1fdGV4dFJ1bkxvZ2ljYWxPcmRlckNhY2hlOworICAgIElubGluZUl0ZXJhdG9yOjpUZXh0TG9n
aWNhbE9yZGVyQ2FjaGUgbV90ZXh0UnVuTG9naWNhbE9yZGVyQ2FjaGU7CiAKICAgICAvLyBVc2Vk
IHdoZW4gaXRlcmF0aW5nIG92ZXIgOmZpcnN0LWxldHRlciB0ZXh0IHRvIHNhdmUgcG9pbnRlciB0
byByZW1haW5pbmcgdGV4dCBib3guCiAgICAgSW5saW5lSXRlcmF0b3I6OlRleHRCb3hJdGVyYXRv
ciBtX3JlbWFpbmluZ1RleHRSdW47Ci0gICAgSW5saW5lSXRlcmF0b3I6OkxvZ2ljYWxPcmRlckNh
Y2hlIG1fcmVtYWluaW5nVGV4dFJ1bkxvZ2ljYWxPcmRlckNhY2hlOworICAgIElubGluZUl0ZXJh
dG9yOjpUZXh0TG9naWNhbE9yZGVyQ2FjaGUgbV9yZW1haW5pbmdUZXh0UnVuTG9naWNhbE9yZGVy
Q2FjaGU7CiAKICAgICAvLyBVc2VkIHRvIHBvaW50IHRvIFJlbmRlclRleHQgb2JqZWN0IGZvciA6
Zmlyc3QtbGV0dGVyLgogICAgIFJlbmRlclRleHQqIG1fZmlyc3RMZXR0ZXJUZXh0IHsgbnVsbHB0
ciB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlUG9zaXRpb24u
Y3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlUG9zaXRpb24uY3BwCmluZGV4IDI0
ZGE1NWIzYjQxNjFlOTNlZWZlNTIyNmUzN2U2ODkxMDI4NWZiMDkuLjJjM2UwNzhhMzJhMmZlZjIx
ZGE0ZmVjZjlkZGFkYjcxNDJhZWYzMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvVmlzaWJsZVBvc2l0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2li
bGVQb3NpdGlvbi5jcHAKQEAgLTEyMiw2ICsxMjIsOCBAQCBQb3NpdGlvbiBWaXNpYmxlUG9zaXRp
b246OmxlZnRWaXN1YWxseURpc3RpbmN0Q2FuZGlkYXRlKCkgY29uc3QKICAgICBQb3NpdGlvbiBk
b3duc3RyZWFtU3RhcnQgPSBwLmRvd25zdHJlYW0oKTsKICAgICBUZXh0RGlyZWN0aW9uIHByaW1h
cnlEaXJlY3Rpb24gPSBwLnByaW1hcnlEaXJlY3Rpb24oKTsKIAorICAgIElubGluZUl0ZXJhdG9y
OjpMaW5lTG9naWNhbE9yZGVyQ2FjaGUgb3JkZXJDYWNoZTsKKwogICAgIHdoaWxlICh0cnVlKSB7
CiAgICAgICAgIGF1dG8gW3J1biwgb2Zmc2V0XSA9IHAuaW5saW5lUnVuQW5kT2Zmc2V0KG1fYWZm
aW5pdHksIHByaW1hcnlEaXJlY3Rpb24pOwogICAgICAgICBpZiAoIXJ1bikKQEAgLTE3NCw3ICsx
NzYsOSBAQCBQb3NpdGlvbiBWaXNpYmxlUG9zaXRpb246OmxlZnRWaXN1YWxseURpc3RpbmN0Q2Fu
ZGlkYXRlKCkgY29uc3QKIAogICAgICAgICAgICAgaWYgKHJ1bi0+ZGlyZWN0aW9uKCkgPT0gcHJp
bWFyeURpcmVjdGlvbikgewogICAgICAgICAgICAgICAgIGlmICghcHJldmlvdXNSdW4pIHsKLSAg
ICAgICAgICAgICAgICAgICAgYXV0byBsb2dpY2FsU3RhcnQgPSAocHJpbWFyeURpcmVjdGlvbiA9
PSBUZXh0RGlyZWN0aW9uOjpMVFIpID8gcnVuLT5saW5lKCktPmxvZ2ljYWxTdGFydFJ1bldpdGhO
b2RlKCkgOiBydW4tPmxpbmUoKS0+bG9naWNhbEVuZFJ1bldpdGhOb2RlKCk7CisgICAgICAgICAg
ICAgICAgICAgIGF1dG8gbG9naWNhbFN0YXJ0ID0gcHJpbWFyeURpcmVjdGlvbiA9PSBUZXh0RGly
ZWN0aW9uOjpMVFIKKyAgICAgICAgICAgICAgICAgICAgICAgID8gSW5saW5lSXRlcmF0b3I6OmZp
cnN0TGVhZk9uTGluZUluTG9naWNhbE9yZGVyV2l0aE5vZGUocnVuLT5saW5lKCksIG9yZGVyQ2Fj
aGUpCisgICAgICAgICAgICAgICAgICAgICAgICA6IElubGluZUl0ZXJhdG9yOjpsYXN0TGVhZk9u
TGluZUluTG9naWNhbE9yZGVyV2l0aE5vZGUocnVuLT5saW5lKCksIG9yZGVyQ2FjaGUpOwogICAg
ICAgICAgICAgICAgICAgICBpZiAobG9naWNhbFN0YXJ0KSB7CiAgICAgICAgICAgICAgICAgICAg
ICAgICBydW4gPSBsb2dpY2FsU3RhcnQ7CiAgICAgICAgICAgICAgICAgICAgICAgICByZW5kZXJl
ciA9ICZydW4tPnJlbmRlcmVyKCk7CkBAIC0yODQsNiArMjg4LDggQEAgUG9zaXRpb24gVmlzaWJs
ZVBvc2l0aW9uOjpyaWdodFZpc3VhbGx5RGlzdGluY3RDYW5kaWRhdGUoKSBjb25zdAogICAgIFBv
c2l0aW9uIGRvd25zdHJlYW1TdGFydCA9IHAuZG93bnN0cmVhbSgpOwogICAgIFRleHREaXJlY3Rp
b24gcHJpbWFyeURpcmVjdGlvbiA9IHAucHJpbWFyeURpcmVjdGlvbigpOwogCisgICAgSW5saW5l
SXRlcmF0b3I6OkxpbmVMb2dpY2FsT3JkZXJDYWNoZSBvcmRlckNhY2hlOworCiAgICAgd2hpbGUg
KHRydWUpIHsKICAgICAgICAgYXV0byBbcnVuLCBvZmZzZXRdID0gcC5pbmxpbmVSdW5BbmRPZmZz
ZXQobV9hZmZpbml0eSwgcHJpbWFyeURpcmVjdGlvbik7CiAgICAgICAgIGlmICghcnVuKQpAQCAt
MzM2LDcgKzM0MiwxMCBAQCBQb3NpdGlvbiBWaXNpYmxlUG9zaXRpb246OnJpZ2h0VmlzdWFsbHlE
aXN0aW5jdENhbmRpZGF0ZSgpIGNvbnN0CiAKICAgICAgICAgICAgIGlmIChydW4tPmRpcmVjdGlv
bigpID09IHByaW1hcnlEaXJlY3Rpb24pIHsKICAgICAgICAgICAgICAgICBpZiAoIW5leHRSdW4p
IHsKLSAgICAgICAgICAgICAgICAgICAgYXV0byBsb2dpY2FsRW5kID0gcHJpbWFyeURpcmVjdGlv
biA9PSBUZXh0RGlyZWN0aW9uOjpMVFIgPyBydW4tPmxpbmUoKS0+bG9naWNhbEVuZFJ1bldpdGhO
b2RlKCkgOiBydW4tPmxpbmUoKS0+bG9naWNhbFN0YXJ0UnVuV2l0aE5vZGUoKTsKKyAgICAgICAg
ICAgICAgICAgICAgYXV0byBsb2dpY2FsRW5kID0gcHJpbWFyeURpcmVjdGlvbiA9PSBUZXh0RGly
ZWN0aW9uOjpMVFIKKyAgICAgICAgICAgICAgICAgICAgICAgID8gSW5saW5lSXRlcmF0b3I6Omxh
c3RMZWFmT25MaW5lSW5Mb2dpY2FsT3JkZXJXaXRoTm9kZShydW4tPmxpbmUoKSwgb3JkZXJDYWNo
ZSkKKyAgICAgICAgICAgICAgICAgICAgICAgIDogSW5saW5lSXRlcmF0b3I6OmZpcnN0TGVhZk9u
TGluZUluTG9naWNhbE9yZGVyV2l0aE5vZGUocnVuLT5saW5lKCksIG9yZGVyQ2FjaGUpOworCiAg
ICAgICAgICAgICAgICAgICAgIGlmIChsb2dpY2FsRW5kKSB7CiAgICAgICAgICAgICAgICAgICAg
ICAgICBydW4gPSBsb2dpY2FsRW5kOwogICAgICAgICAgICAgICAgICAgICAgICAgcmVuZGVyZXIg
PSAmcnVuLT5yZW5kZXJlcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9W
aXNpYmxlVW5pdHMuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlVW5pdHMuY3Bw
CmluZGV4IDkzODc4ODgzY2U4ZDVmNzA3YjczYjAyZDg3NjA0Yzg1Y2VkY2ZhZWIuLjZjMDI0YmUz
NTQ4NTlmMGNjNzcwZjExOWVmOWU3MWJiYTVkNGFkNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvVmlzaWJsZVVuaXRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L1Zpc2libGVVbml0cy5jcHAKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJIVE1MTmFtZXMu
aCIKICNpbmNsdWRlICJJbmxpbmVJdGVyYXRvckJveC5oIgogI2luY2x1ZGUgIklubGluZUl0ZXJh
dG9yTGluZS5oIgorI2luY2x1ZGUgIklubGluZUl0ZXJhdG9yTG9naWNhbE9yZGVyVHJhdmVyc2Fs
LmgiCiAjaW5jbHVkZSAiSW5saW5lUnVuQW5kT2Zmc2V0LmgiCiAjaW5jbHVkZSAiTm9kZVRyYXZl
cnNhbC5oIgogI2luY2x1ZGUgIlJhbmdlLmgiCkBAIC0xMjksNTAgKzEzMCw1MCBAQCBzdGF0aWMg
Ym9vbCBpc1RleHRPckxpbmVCcmVha1J1bihJbmxpbmVJdGVyYXRvcjo6TGVhZkJveEl0ZXJhdG9y
IHJ1bikKICAgICByZXR1cm4gcnVuICYmIChydW4tPmlzVGV4dCgpIHx8IHJ1bi0+cmVuZGVyZXIo
KS5pc0JSKCkpOwogfQogCi1zdGF0aWMgSW5saW5lSXRlcmF0b3I6OkxlYWZCb3hJdGVyYXRvciBw
cmV2aW91c1RleHRPckxpbmVCcmVha1J1bihJbmxpbmVJdGVyYXRvcjo6TGVhZkJveEl0ZXJhdG9y
IHJ1bikKK3N0YXRpYyBJbmxpbmVJdGVyYXRvcjo6TGVhZkJveEl0ZXJhdG9yIHByZXZpb3VzVGV4
dE9yTGluZUJyZWFrUnVuKElubGluZUl0ZXJhdG9yOjpMZWFmQm94SXRlcmF0b3IgcnVuLCBJbmxp
bmVJdGVyYXRvcjo6TGluZUxvZ2ljYWxPcmRlckNhY2hlJiBvcmRlckNhY2hlKQogewogICAgIHdo
aWxlIChydW4pIHsKLSAgICAgICAgcnVuLnRyYXZlcnNlUHJldmlvdXNPbkxpbmVJbkxvZ2ljYWxP
cmRlcigpOworICAgICAgICBydW4gPSBJbmxpbmVJdGVyYXRvcjo6cHJldmlvdXNMZWFmT25MaW5l
SW5Mb2dpY2FsT3JkZXIocnVuLCBvcmRlckNhY2hlKTsKICAgICAgICAgaWYgKGlzVGV4dE9yTGlu
ZUJyZWFrUnVuKHJ1bikpCiAgICAgICAgICAgICByZXR1cm4gcnVuOwogICAgIH0KICAgICByZXR1
cm4geyB9OwogfQogCi1zdGF0aWMgSW5saW5lSXRlcmF0b3I6OkxlYWZCb3hJdGVyYXRvciBuZXh0
VGV4dE9yTGluZUJyZWFrUnVuKElubGluZUl0ZXJhdG9yOjpMZWFmQm94SXRlcmF0b3IgcnVuKQor
c3RhdGljIElubGluZUl0ZXJhdG9yOjpMZWFmQm94SXRlcmF0b3IgbmV4dFRleHRPckxpbmVCcmVh
a1J1bihJbmxpbmVJdGVyYXRvcjo6TGVhZkJveEl0ZXJhdG9yIHJ1biwgSW5saW5lSXRlcmF0b3I6
OkxpbmVMb2dpY2FsT3JkZXJDYWNoZSYgb3JkZXJDYWNoZSkKIHsKICAgICB3aGlsZSAocnVuKSB7
Ci0gICAgICAgIHJ1bi50cmF2ZXJzZU5leHRPbkxpbmVJbkxvZ2ljYWxPcmRlcigpOworICAgICAg
ICBydW4gPSBJbmxpbmVJdGVyYXRvcjo6bmV4dExlYWZPbkxpbmVJbkxvZ2ljYWxPcmRlcihydW4s
IG9yZGVyQ2FjaGUpOwogICAgICAgICBpZiAoaXNUZXh0T3JMaW5lQnJlYWtSdW4ocnVuKSkKICAg
ICAgICAgICAgIHJldHVybiBydW47CiAgICAgfQogICAgIHJldHVybiB7IH07CiB9CiAKLXN0YXRp
YyBJbmxpbmVJdGVyYXRvcjo6TGVhZkJveEl0ZXJhdG9yIHN0YXJ0VGV4dE9yTGluZUJyZWFrUnVu
KElubGluZUl0ZXJhdG9yOjpMaW5lSXRlcmF0b3IgbGluZSkKK3N0YXRpYyBJbmxpbmVJdGVyYXRv
cjo6TGVhZkJveEl0ZXJhdG9yIHN0YXJ0VGV4dE9yTGluZUJyZWFrUnVuKElubGluZUl0ZXJhdG9y
OjpMaW5lSXRlcmF0b3IgbGluZSwgSW5saW5lSXRlcmF0b3I6OkxpbmVMb2dpY2FsT3JkZXJDYWNo
ZSYgb3JkZXJDYWNoZSkKIHsKLSAgICBhdXRvIHJ1biA9IGxpbmUtPmxvZ2ljYWxTdGFydFJ1bigp
OworICAgIGF1dG8gcnVuID0gSW5saW5lSXRlcmF0b3I6OmZpcnN0TGVhZk9uTGluZUluTG9naWNh
bE9yZGVyKGxpbmUsIG9yZGVyQ2FjaGUpOwogICAgIGlmIChpc1RleHRPckxpbmVCcmVha1J1bihy
dW4pKQogICAgICAgICByZXR1cm4gcnVuOwotICAgIHJldHVybiBuZXh0VGV4dE9yTGluZUJyZWFr
UnVuKHJ1bik7CisgICAgcmV0dXJuIG5leHRUZXh0T3JMaW5lQnJlYWtSdW4ocnVuLCBvcmRlckNh
Y2hlKTsKIH0KIAotc3RhdGljIElubGluZUl0ZXJhdG9yOjpMZWFmQm94SXRlcmF0b3IgZW5kVGV4
dE9yTGluZUJyZWFrUnVuKElubGluZUl0ZXJhdG9yOjpMaW5lSXRlcmF0b3IgbGluZSkKK3N0YXRp
YyBJbmxpbmVJdGVyYXRvcjo6TGVhZkJveEl0ZXJhdG9yIGVuZFRleHRPckxpbmVCcmVha1J1bihJ
bmxpbmVJdGVyYXRvcjo6TGluZUl0ZXJhdG9yIGxpbmUsIElubGluZUl0ZXJhdG9yOjpMaW5lTG9n
aWNhbE9yZGVyQ2FjaGUmIG9yZGVyQ2FjaGUpCiB7Ci0gICAgYXV0byBydW4gPSBsaW5lLT5sb2dp
Y2FsRW5kUnVuKCk7CisgICAgYXV0byBydW4gPSBJbmxpbmVJdGVyYXRvcjo6bGFzdExlYWZPbkxp
bmVJbkxvZ2ljYWxPcmRlcihsaW5lLCBvcmRlckNhY2hlKTsKICAgICBpZiAoaXNUZXh0T3JMaW5l
QnJlYWtSdW4ocnVuKSkKICAgICAgICAgcmV0dXJuIHJ1bjsKLSAgICByZXR1cm4gcHJldmlvdXNU
ZXh0T3JMaW5lQnJlYWtSdW4ocnVuKTsKKyAgICByZXR1cm4gcHJldmlvdXNUZXh0T3JMaW5lQnJl
YWtSdW4ocnVuLCBvcmRlckNhY2hlKTsKIH0KIAotc3RhdGljIGNvbnN0IElubGluZUl0ZXJhdG9y
OjpMZWFmQm94SXRlcmF0b3IgbG9naWNhbGx5UHJldmlvdXNSdW4oY29uc3QgVmlzaWJsZVBvc2l0
aW9uJiB2aXNpYmxlUG9zaXRpb24sIElubGluZUl0ZXJhdG9yOjpMZWFmQm94SXRlcmF0b3Igc3Rh
cnRSdW4sIGJvb2wmIHByZXZpb3VzQm94SW5EaWZmZXJlbnRMaW5lKQorc3RhdGljIGNvbnN0IElu
bGluZUl0ZXJhdG9yOjpMZWFmQm94SXRlcmF0b3IgbG9naWNhbGx5UHJldmlvdXNSdW4oY29uc3Qg
VmlzaWJsZVBvc2l0aW9uJiB2aXNpYmxlUG9zaXRpb24sIElubGluZUl0ZXJhdG9yOjpMZWFmQm94
SXRlcmF0b3Igc3RhcnRSdW4sIElubGluZUl0ZXJhdG9yOjpMaW5lTG9naWNhbE9yZGVyQ2FjaGUm
IG9yZGVyQ2FjaGUsIGJvb2wmIHByZXZpb3VzQm94SW5EaWZmZXJlbnRMaW5lKQogewotICAgIGlm
IChhdXRvIHByZXZpb3VzUnVuID0gcHJldmlvdXNUZXh0T3JMaW5lQnJlYWtSdW4oc3RhcnRSdW4p
KQorICAgIGlmIChhdXRvIHByZXZpb3VzUnVuID0gcHJldmlvdXNUZXh0T3JMaW5lQnJlYWtSdW4o
c3RhcnRSdW4sIG9yZGVyQ2FjaGUpKQogICAgICAgICByZXR1cm4gcHJldmlvdXNSdW47CiAKICAg
ICBpZiAoYXV0byBwcmV2aW91c0xpbmUgPSBzdGFydFJ1bi0+bGluZSgpLT5wcmV2aW91cygpKSB7
CiAgICAgICAgIC8vIEZJWE1FOiBXaHkgaXNuJ3QgcHJldmlvdXNCb3hJbkRpZmZlcmVudExpbmUg
c2V0IGhlcmU/Ci0gICAgICAgIGlmIChhdXRvIHByZXZpb3VzUnVuID0gZW5kVGV4dE9yTGluZUJy
ZWFrUnVuKHByZXZpb3VzTGluZSkpCisgICAgICAgIGlmIChhdXRvIHByZXZpb3VzUnVuID0gZW5k
VGV4dE9yTGluZUJyZWFrUnVuKHByZXZpb3VzTGluZSwgb3JkZXJDYWNoZSkpCiAgICAgICAgICAg
ICByZXR1cm4gcHJldmlvdXNSdW47CiAgICAgfQogCkBAIC0xOTEsMjYgKzE5MiwyNiBAQCBzdGF0
aWMgY29uc3QgSW5saW5lSXRlcmF0b3I6OkxlYWZCb3hJdGVyYXRvciBsb2dpY2FsbHlQcmV2aW91
c1J1bihjb25zdCBWaXNpYmxlUAogICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgaWYgKHBy
ZXZpb3VzTGluZSAhPSBzdGFydFJ1bi0+bGluZSgpKSB7Ci0gICAgICAgICAgICBpZiAoYXV0byBw
cmV2aW91c1J1biA9IGVuZFRleHRPckxpbmVCcmVha1J1bihwcmV2aW91c0xpbmUpKSB7CisgICAg
ICAgICAgICBpZiAoYXV0byBwcmV2aW91c1J1biA9IGVuZFRleHRPckxpbmVCcmVha1J1bihwcmV2
aW91c0xpbmUsIG9yZGVyQ2FjaGUpKSB7CiAgICAgICAgICAgICAgICAgcHJldmlvdXNCb3hJbkRp
ZmZlcmVudExpbmUgPSB0cnVlOwogICAgICAgICAgICAgICAgIHJldHVybiBwcmV2aW91c1J1bjsK
ICAgICAgICAgICAgIH0KICAgICAgICAgfQogCi0gICAgICAgIHN0YXJ0UnVuID0gcHJldmlvdXNM
aW5lLT5sb2dpY2FsU3RhcnRSdW4oKTsKKyAgICAgICAgc3RhcnRSdW4gPSBJbmxpbmVJdGVyYXRv
cjo6Zmlyc3RMZWFmT25MaW5lSW5Mb2dpY2FsT3JkZXIocHJldmlvdXNMaW5lLCBvcmRlckNhY2hl
KTsKICAgICB9CiAgICAgcmV0dXJuIHsgfTsKIH0KIAogCi1zdGF0aWMgY29uc3QgSW5saW5lSXRl
cmF0b3I6OkxlYWZCb3hJdGVyYXRvciBsb2dpY2FsbHlOZXh0UnVuKGNvbnN0IFZpc2libGVQb3Np
dGlvbiYgdmlzaWJsZVBvc2l0aW9uLCBJbmxpbmVJdGVyYXRvcjo6TGVhZkJveEl0ZXJhdG9yIHN0
YXJ0UnVuLCBib29sJiBuZXh0Qm94SW5EaWZmZXJlbnRMaW5lKQorc3RhdGljIGNvbnN0IElubGlu
ZUl0ZXJhdG9yOjpMZWFmQm94SXRlcmF0b3IgbG9naWNhbGx5TmV4dFJ1bihjb25zdCBWaXNpYmxl
UG9zaXRpb24mIHZpc2libGVQb3NpdGlvbiwgSW5saW5lSXRlcmF0b3I6OkxlYWZCb3hJdGVyYXRv
ciBzdGFydFJ1biwgSW5saW5lSXRlcmF0b3I6OkxpbmVMb2dpY2FsT3JkZXJDYWNoZSYgb3JkZXJD
YWNoZSwgYm9vbCYgbmV4dEJveEluRGlmZmVyZW50TGluZSkKIHsKLSAgICBpZiAoYXV0byBuZXh0
UnVuID0gbmV4dFRleHRPckxpbmVCcmVha1J1bihzdGFydFJ1bikpCisgICAgaWYgKGF1dG8gbmV4
dFJ1biA9IG5leHRUZXh0T3JMaW5lQnJlYWtSdW4oc3RhcnRSdW4sIG9yZGVyQ2FjaGUpKQogICAg
ICAgICByZXR1cm4gbmV4dFJ1bjsKIAogICAgIGlmIChhdXRvIG5leHRMaW5lID0gc3RhcnRSdW4t
PmxpbmUoKS0+bmV4dCgpKSB7CiAgICAgICAgIC8vIEZJWE1FOiBXaHkgaXNuJ3QgcHJldmlvdXNC
b3hJbkRpZmZlcmVudExpbmUgc2V0IGhlcmU/Ci0gICAgICAgIGlmIChhdXRvIG5leHRSdW4gPSBz
dGFydFRleHRPckxpbmVCcmVha1J1bihuZXh0TGluZSkpCisgICAgICAgIGlmIChhdXRvIG5leHRS
dW4gPSBzdGFydFRleHRPckxpbmVCcmVha1J1bihuZXh0TGluZSwgb3JkZXJDYWNoZSkpCiAgICAg
ICAgICAgICByZXR1cm4gbmV4dFJ1bjsKICAgICB9CiAKQEAgLTIyOSwxMyArMjMwLDEzIEBAIHN0
YXRpYyBjb25zdCBJbmxpbmVJdGVyYXRvcjo6TGVhZkJveEl0ZXJhdG9yIGxvZ2ljYWxseU5leHRS
dW4oY29uc3QgVmlzaWJsZVBvc2l0CiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBpZiAo
bmV4dExpbmUgIT0gc3RhcnRSdW4tPmxpbmUoKSkgewotICAgICAgICAgICAgaWYgKGF1dG8gbmV4
dFJ1biA9IHN0YXJ0VGV4dE9yTGluZUJyZWFrUnVuKG5leHRMaW5lKSkgeworICAgICAgICAgICAg
aWYgKGF1dG8gbmV4dFJ1biA9IHN0YXJ0VGV4dE9yTGluZUJyZWFrUnVuKG5leHRMaW5lLCBvcmRl
ckNhY2hlKSkgewogICAgICAgICAgICAgICAgIG5leHRCb3hJbkRpZmZlcmVudExpbmUgPSB0cnVl
OwogICAgICAgICAgICAgICAgIHJldHVybiBuZXh0UnVuOwogICAgICAgICAgICAgfQogICAgICAg
ICB9CiAKLSAgICAgICAgc3RhcnRSdW4gPSBuZXh0TGluZS0+bG9naWNhbEVuZFJ1bigpOworICAg
ICAgICBzdGFydFJ1biA9IElubGluZUl0ZXJhdG9yOjpsYXN0TGVhZk9uTGluZUluTG9naWNhbE9y
ZGVyV2l0aE5vZGUobmV4dExpbmUsIG9yZGVyQ2FjaGUpOwogICAgIH0KICAgICByZXR1cm4geyB9
OwogfQpAQCAtMjQ1LDExICsyNDYsMTIgQEAgc3RhdGljIFVCcmVha0l0ZXJhdG9yKiB3b3JkQnJl
YWtJdGVyYXRvckZvck1pbk9mZnNldEJvdW5kYXJ5KGNvbnN0IFZpc2libGVQb3NpdGkKIHsKICAg
ICBwcmV2aW91c1J1bkluRGlmZmVyZW50TGluZSA9IGZhbHNlOwogCi0gICAgYXV0byBwcmV2aW91
c1J1biA9IGxvZ2ljYWxseVByZXZpb3VzUnVuKHZpc2libGVQb3NpdGlvbiwgdGV4dFJ1biwgcHJl
dmlvdXNSdW5JbkRpZmZlcmVudExpbmUpOworICAgIElubGluZUl0ZXJhdG9yOjpMaW5lTG9naWNh
bE9yZGVyQ2FjaGUgb3JkZXJDYWNoZTsKKyAgICBhdXRvIHByZXZpb3VzUnVuID0gbG9naWNhbGx5
UHJldmlvdXNSdW4odmlzaWJsZVBvc2l0aW9uLCB0ZXh0UnVuLCBvcmRlckNhY2hlLCBwcmV2aW91
c1J1bkluRGlmZmVyZW50TGluZSk7CiAgICAgd2hpbGUgKHByZXZpb3VzUnVuICYmICFwcmV2aW91
c1J1bi0+aXNUZXh0KCkpIHsKICAgICAgICAgQVNTRVJUKHByZXZpb3VzUnVuLT5yZW5kZXJlcigp
LmlzQlIoKSk7CiAgICAgICAgIHByZXZpb3VzUnVuSW5EaWZmZXJlbnRMaW5lID0gdHJ1ZTsKLSAg
ICAgICAgcHJldmlvdXNSdW4gPSBsb2dpY2FsbHlQcmV2aW91c1J1bih2aXNpYmxlUG9zaXRpb24s
IHByZXZpb3VzUnVuLCBwcmV2aW91c1J1bkluRGlmZmVyZW50TGluZSk7CisgICAgICAgIHByZXZp
b3VzUnVuID0gbG9naWNhbGx5UHJldmlvdXNSdW4odmlzaWJsZVBvc2l0aW9uLCBwcmV2aW91c1J1
biwgb3JkZXJDYWNoZSwgcHJldmlvdXNSdW5JbkRpZmZlcmVudExpbmUpOwogICAgIH0KIAogICAg
IHN0cmluZy5jbGVhcigpOwpAQCAtMjY5LDExICsyNzEsMTIgQEAgc3RhdGljIFVCcmVha0l0ZXJh
dG9yKiB3b3JkQnJlYWtJdGVyYXRvckZvck1heE9mZnNldEJvdW5kYXJ5KGNvbnN0IFZpc2libGVQ
b3NpdGkKIHsKICAgICBuZXh0UnVuSW5EaWZmZXJlbnRMaW5lID0gZmFsc2U7CiAKLSAgICBhdXRv
IG5leHRSdW4gPSBsb2dpY2FsbHlOZXh0UnVuKHZpc2libGVQb3NpdGlvbiwgdGV4dFJ1biwgbmV4
dFJ1bkluRGlmZmVyZW50TGluZSk7CisgICAgSW5saW5lSXRlcmF0b3I6OkxpbmVMb2dpY2FsT3Jk
ZXJDYWNoZSBvcmRlckNhY2hlOworICAgIGF1dG8gbmV4dFJ1biA9IGxvZ2ljYWxseU5leHRSdW4o
dmlzaWJsZVBvc2l0aW9uLCB0ZXh0UnVuLCBvcmRlckNhY2hlLCBuZXh0UnVuSW5EaWZmZXJlbnRM
aW5lKTsKICAgICB3aGlsZSAobmV4dFJ1biAmJiAhbmV4dFJ1bi0+aXNUZXh0KCkpIHsKICAgICAg
ICAgQVNTRVJUKG5leHRSdW4tPnJlbmRlcmVyKCkuaXNCUigpKTsKICAgICAgICAgbmV4dFJ1bklu
RGlmZmVyZW50TGluZSA9IHRydWU7Ci0gICAgICAgIG5leHRSdW4gPSBsb2dpY2FsbHlOZXh0UnVu
KHZpc2libGVQb3NpdGlvbiwgbmV4dFJ1biwgbmV4dFJ1bkluRGlmZmVyZW50TGluZSk7CisgICAg
ICAgIG5leHRSdW4gPSBsb2dpY2FsbHlOZXh0UnVuKHZpc2libGVQb3NpdGlvbiwgbmV4dFJ1biwg
b3JkZXJDYWNoZSwgbmV4dFJ1bkluRGlmZmVyZW50TGluZSk7CiAgICAgfQogCiAgICAgc3RyaW5n
LmNsZWFyKCk7CkBAIC03NDYsOCArNzQ5LDEwIEBAIHN0YXRpYyBWaXNpYmxlUG9zaXRpb24gc3Rh
cnRQb3NpdGlvbkZvckxpbmUoY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBjLCBMaW5lRW5kcG9pCiAg
ICAgICAgIHJldHVybiBWaXNpYmxlUG9zaXRpb24oKTsKICAgICB9CiAKKyAgICBJbmxpbmVJdGVy
YXRvcjo6TGluZUxvZ2ljYWxPcmRlckNhY2hlIG9yZGVyQ2FjaGU7CisKICAgICBOb2RlKiBzdGFy
dE5vZGUgPSBudWxscHRyOwotICAgIGF1dG8gc3RhcnRSdW4gPSBtb2RlID09IFVzZUxvZ2ljYWxP
cmRlcmluZyA/IGxpbmUtPmxvZ2ljYWxTdGFydFJ1bldpdGhOb2RlKCkgOiBsaW5lLT5maXJzdFJ1
bigpOworICAgIGF1dG8gc3RhcnRSdW4gPSBtb2RlID09IFVzZUxvZ2ljYWxPcmRlcmluZyA/IElu
bGluZUl0ZXJhdG9yOjpmaXJzdExlYWZPbkxpbmVJbkxvZ2ljYWxPcmRlcldpdGhOb2RlKGxpbmUs
IG9yZGVyQ2FjaGUpIDogbGluZS0+Zmlyc3RSdW4oKTsKICAgICAvLyBHZW5lcmF0ZWQgY29udGVu
dCAoZS5nLiBsaXN0IG1hcmtlcnMgYW5kIENTUyA6YmVmb3JlIGFuZCA6YWZ0ZXIgcHNldWRvZWxl
bWVudHMpIGhhdmUgbm8gY29ycmVzcG9uZGluZyBET00gZWxlbWVudCwKICAgICAvLyBhbmQgc28g
Y2Fubm90IGJlIHJlcHJlc2VudGVkIGJ5IGEgVmlzaWJsZVBvc2l0aW9uLiBVc2Ugd2hhdGV2ZXIg
Zm9sbG93cyBpbnN0ZWFkLgogICAgIHdoaWxlICh0cnVlKSB7CkBAIC03NTksNyArNzY0LDcgQEAg
c3RhdGljIFZpc2libGVQb3NpdGlvbiBzdGFydFBvc2l0aW9uRm9yTGluZShjb25zdCBWaXNpYmxl
UG9zaXRpb24mIGMsIExpbmVFbmRwb2kKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGlm
IChtb2RlID09IFVzZUxvZ2ljYWxPcmRlcmluZykKLSAgICAgICAgICAgIHN0YXJ0UnVuLnRyYXZl
cnNlTmV4dE9uTGluZUluTG9naWNhbE9yZGVyKCk7CisgICAgICAgICAgICBzdGFydFJ1biA9IElu
bGluZUl0ZXJhdG9yOjpuZXh0TGVhZk9uTGluZUluTG9naWNhbE9yZGVyKHN0YXJ0UnVuLCBvcmRl
ckNhY2hlKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgc3RhcnRSdW4udHJhdmVyc2VOZXh0
T25MaW5lKCk7CiAgICAgfQpAQCAtODE2LDggKzgyMSwxMCBAQCBzdGF0aWMgVmlzaWJsZVBvc2l0
aW9uIGVuZFBvc2l0aW9uRm9yTGluZShjb25zdCBWaXNpYmxlUG9zaXRpb24mIGMsIExpbmVFbmRw
b2ludAogICAgICAgICByZXR1cm4gVmlzaWJsZVBvc2l0aW9uKCk7CiAgICAgfQogCisgICAgSW5s
aW5lSXRlcmF0b3I6OkxpbmVMb2dpY2FsT3JkZXJDYWNoZSBvcmRlckNhY2hlOworCiAgICAgTm9k
ZSogZW5kTm9kZSA9IG51bGxwdHI7Ci0gICAgYXV0byBlbmRSdW4gPSBtb2RlID09IFVzZUxvZ2lj
YWxPcmRlcmluZyA/IGxpbmUtPmxvZ2ljYWxFbmRSdW5XaXRoTm9kZSgpIDogbGluZS0+bGFzdFJ1
bigpOworICAgIGF1dG8gZW5kUnVuID0gbW9kZSA9PSBVc2VMb2dpY2FsT3JkZXJpbmcgPyBJbmxp
bmVJdGVyYXRvcjo6bGFzdExlYWZPbkxpbmVJbkxvZ2ljYWxPcmRlcihsaW5lLCBvcmRlckNhY2hl
KSA6IGxpbmUtPmxhc3RSdW4oKTsKICAgICAvLyBHZW5lcmF0ZWQgY29udGVudCAoZS5nLiBsaXN0
IG1hcmtlcnMgYW5kIENTUyA6YmVmb3JlIGFuZCA6YWZ0ZXIgcHNldWRvZWxlbWVudHMpIGhhdmUg
bm8gY29ycmVzcG9uZGluZyBET00gZWxlbWVudCwKICAgICAvLyBhbmQgc28gY2Fubm90IGJlIHJl
cHJlc2VudGVkIGJ5IGEgVmlzaWJsZVBvc2l0aW9uLiBVc2Ugd2hhdGV2ZXIgcHJlY2VkZXMgaW5z
dGVhZC4KICAgICB3aGlsZSAodHJ1ZSkgewpAQCAtODI5LDcgKzgzNiw3IEBAIHN0YXRpYyBWaXNp
YmxlUG9zaXRpb24gZW5kUG9zaXRpb25Gb3JMaW5lKGNvbnN0IFZpc2libGVQb3NpdGlvbiYgYywg
TGluZUVuZHBvaW50CiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBpZiAobW9kZSA9PSBV
c2VMb2dpY2FsT3JkZXJpbmcpCi0gICAgICAgICAgICBlbmRSdW4udHJhdmVyc2VQcmV2aW91c09u
TGluZUluTG9naWNhbE9yZGVyKCk7CisgICAgICAgICAgICBlbmRSdW4gPSBJbmxpbmVJdGVyYXRv
cjo6cHJldmlvdXNMZWFmT25MaW5lSW5Mb2dpY2FsT3JkZXIoZW5kUnVuLCBvcmRlckNhY2hlKTsK
ICAgICAgICAgZWxzZQogICAgICAgICAgICAgZW5kUnVuLnRyYXZlcnNlUHJldmlvdXNPbkxpbmUo
KTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24v
SW5saW5lSXRlcmF0b3JCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9u
L0lubGluZUl0ZXJhdG9yQm94LmNwcAppbmRleCA5MTYxMjIxZGQ5NTA1ZjAwMjYxYjhiODcxMGY4
ZjA1MDU5NDYyNmUwLi40YTBhNzVkZDYwNzk0MjdhODMzYWI3ZmU1NTc3YTE4YTk0ZmI5MjFhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vSW5saW5lSXRlcmF0
b3JCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9JbmxpbmVJ
dGVyYXRvckJveC5jcHAKQEAgLTE0OCwyMiArMTQ4LDYgQEAgTGVhZkJveEl0ZXJhdG9yJiBMZWFm
Qm94SXRlcmF0b3I6OnRyYXZlcnNlUHJldmlvdXNPbkxpbmVJZ25vcmluZ0xpbmVCcmVhaygpCiAg
ICAgcmV0dXJuICp0aGlzOwogfQogCi1MZWFmQm94SXRlcmF0b3ImIExlYWZCb3hJdGVyYXRvcjo6
dHJhdmVyc2VOZXh0T25MaW5lSW5Mb2dpY2FsT3JkZXIoKQotewotICAgIFdURjo6c3dpdGNoT24o
bV9ib3gubV9wYXRoVmFyaWFudCwgW10oYXV0byYgcGF0aCkgewotICAgICAgICBwYXRoLnRyYXZl
cnNlTmV4dE9uTGluZUluTG9naWNhbE9yZGVyKCk7Ci0gICAgfSk7Ci0gICAgcmV0dXJuICp0aGlz
OwotfQotCi1MZWFmQm94SXRlcmF0b3ImIExlYWZCb3hJdGVyYXRvcjo6dHJhdmVyc2VQcmV2aW91
c09uTGluZUluTG9naWNhbE9yZGVyKCkKLXsKLSAgICBXVEY6OnN3aXRjaE9uKG1fYm94Lm1fcGF0
aFZhcmlhbnQsIFtdKGF1dG8mIHBhdGgpIHsKLSAgICAgICAgcGF0aC50cmF2ZXJzZVByZXZpb3Vz
T25MaW5lSW5Mb2dpY2FsT3JkZXIoKTsKLSAgICB9KTsKLSAgICByZXR1cm4gKnRoaXM7Ci19Ci0K
IExlYWZCb3hJdGVyYXRvciBib3hGb3IoY29uc3QgUmVuZGVyTGluZUJyZWFrJiByZW5kZXJlcikK
IHsKICNpZiBFTkFCTEUoTEFZT1VUX0ZPUk1BVFRJTkdfQ09OVEVYVCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9JbmxpbmVJdGVyYXRvckJveC5oIGIvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0lubGluZUl0ZXJhdG9yQm94LmgKaW5kZXgg
YjQ1YThlZTQyMTdjMGZiYzczZDJjMmZjMjNjNDU4MWJjNWJkYjA1MC4uNDgwYWZiODk5M2JkMjcx
MmRiNmVhZGM5ZjU1MDlhZTI1MTk2NDYxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2ludGVncmF0aW9uL0lubGluZUl0ZXJhdG9yQm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2ludGVncmF0aW9uL0lubGluZUl0ZXJhdG9yQm94LmgKQEAgLTEzMSw3ICsxMzEsNyBA
QCBwdWJsaWM6CiAgICAgYm9vbCBhdEVuZCgpIGNvbnN0OwogCiBwcm90ZWN0ZWQ6Ci0gICAgQm94
SXRlcmF0b3IoKSA6IG1fYm94KEJveExlZ2FjeVBhdGggeyBudWxscHRyLCB7IH0gfSkgeyB9Owor
ICAgIEJveEl0ZXJhdG9yKCkgOiBtX2JveChCb3hMZWdhY3lQYXRoIHsgbnVsbHB0ciB9KSB7IH07
CiAgICAgQm94SXRlcmF0b3IoQm94OjpQYXRoVmFyaWFudCYmKTsKICAgICBCb3hJdGVyYXRvcihj
b25zdCBCb3gmKTsKIApAQCAtMTQ4LDggKzE0OCw2IEBAIHB1YmxpYzoKICAgICBMZWFmQm94SXRl
cmF0b3ImIHRyYXZlcnNlUHJldmlvdXNPbkxpbmUoKTsKICAgICBMZWFmQm94SXRlcmF0b3ImIHRy
YXZlcnNlTmV4dE9uTGluZUlnbm9yaW5nTGluZUJyZWFrKCk7CiAgICAgTGVhZkJveEl0ZXJhdG9y
JiB0cmF2ZXJzZVByZXZpb3VzT25MaW5lSWdub3JpbmdMaW5lQnJlYWsoKTsKLSAgICBMZWFmQm94
SXRlcmF0b3ImIHRyYXZlcnNlTmV4dE9uTGluZUluTG9naWNhbE9yZGVyKCk7Ci0gICAgTGVhZkJv
eEl0ZXJhdG9yJiB0cmF2ZXJzZVByZXZpb3VzT25MaW5lSW5Mb2dpY2FsT3JkZXIoKTsKIH07CiAK
IExlYWZCb3hJdGVyYXRvciBib3hGb3IoY29uc3QgUmVuZGVyTGluZUJyZWFrJik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vSW5saW5lSXRlcmF0b3JCb3hM
ZWdhY3lQYXRoLmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vSW5saW5lSXRl
cmF0b3JCb3hMZWdhY3lQYXRoLmgKaW5kZXggM2JlNGQzZGNhYzNiOTM5YWVkNjY4YTMzNTMxZmI2
N2RmMjM5OTNmYi4uMTUxYThkYTk0OGYwNDg1N2Q2ODQ2NWYyYWJkMDUyMzQ2ZTg2NTBmOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0lubGluZUl0ZXJhdG9y
Qm94TGVnYWN5UGF0aC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9J
bmxpbmVJdGVyYXRvckJveExlZ2FjeVBhdGguaApAQCAtMzcsMjIgKzM3LDEwIEBAIG5hbWVzcGFj
ZSBJbmxpbmVJdGVyYXRvciB7CiAKIGNsYXNzIEJveExlZ2FjeVBhdGggewogcHVibGljOgotICAg
IEJveExlZ2FjeVBhdGgoY29uc3QgTGVnYWN5SW5saW5lQm94KiBpbmxpbmVCb3gsIFZlY3Rvcjxj
b25zdCBMZWdhY3lJbmxpbmVCb3gqPiYmIHNvcnRlZElubGluZUJveGVzID0geyB9LCBzaXplX3Qg
c29ydGVkSW5saW5lQm94SW5kZXggPSAwKQorICAgIEJveExlZ2FjeVBhdGgoY29uc3QgTGVnYWN5
SW5saW5lQm94KiBpbmxpbmVCb3gpCiAgICAgICAgIDogbV9pbmxpbmVCb3goaW5saW5lQm94KQot
ICAgICAgICAsIG1fbG9naWNhbE9yZGVyQ2FjaGUoV1RGTW92ZShzb3J0ZWRJbmxpbmVCb3hlcykp
Ci0gICAgICAgICwgbV9sb2dpY2FsT3JkZXJDYWNoZUluZGV4KHNvcnRlZElubGluZUJveEluZGV4
KQogICAgIHsgfQogCi0gICAgZW51bSBjbGFzcyBMb2dpY2FsT3JkZXIgeyBTdGFydCwgRW5kIH07
Ci0gICAgQm94TGVnYWN5UGF0aChjb25zdCBMZWdhY3lSb290SW5saW5lQm94JiByb290LCBMb2dp
Y2FsT3JkZXIgb3JkZXIpCi0gICAgICAgIDogbV9sb2dpY2FsT3JkZXJDYWNoZShpbmxpbmVCb3hl
c0luTG9naWNhbE9yZGVyKHJvb3QpKQotICAgIHsKLSAgICAgICAgaWYgKCFtX2xvZ2ljYWxPcmRl
ckNhY2hlLmlzRW1wdHkoKSkgewotICAgICAgICAgICAgbV9sb2dpY2FsT3JkZXJDYWNoZUluZGV4
ID0gb3JkZXIgPT0gTG9naWNhbE9yZGVyOjpTdGFydCA/IDAgOiBtX2xvZ2ljYWxPcmRlckNhY2hl
LnNpemUoKSAtIDE7Ci0gICAgICAgICAgICBtX2lubGluZUJveCA9IG1fbG9naWNhbE9yZGVyQ2Fj
aGVbbV9sb2dpY2FsT3JkZXJDYWNoZUluZGV4XTsKLSAgICAgICAgfQotICAgIH0KLQogICAgIGJv
b2wgaXNUZXh0KCkgY29uc3QgeyByZXR1cm4gbV9pbmxpbmVCb3gtPmlzSW5saW5lVGV4dEJveCgp
OyB9CiAgICAgYm9vbCBpc0lubGluZUJveCgpIGNvbnN0IHsgcmV0dXJuIG1faW5saW5lQm94LT5p
c0lubGluZUZsb3dCb3goKTsgfQogICAgIGJvb2wgaXNSb290SW5saW5lQm94KCkgY29uc3QgeyBy
ZXR1cm4gbV9pbmxpbmVCb3gtPmlzUm9vdElubGluZUJveCgpOyB9CkBAIC05OCwxOCArODYsNiBA
QCBwdWJsaWM6CiAgICAgICAgIG1faW5saW5lQm94ID0gbV9pbmxpbmVCb3gtPnByZXZpb3VzTGVh
Zk9uTGluZSgpOwogICAgIH0KIAotICAgIHZvaWQgdHJhdmVyc2VOZXh0T25MaW5lSW5Mb2dpY2Fs
T3JkZXIoKQotICAgIHsKLSAgICAgICAgaW5pdGlhbGl6ZUxvZ2ljYWxPcmRlckNhY2hlRm9yTGlu
ZSgpOwotICAgICAgICB0cmF2ZXJzZU5leHRJbmxpbmVCb3hJbkNhY2hlT3JkZXIoKTsKLSAgICB9
Ci0KLSAgICB2b2lkIHRyYXZlcnNlUHJldmlvdXNPbkxpbmVJbkxvZ2ljYWxPcmRlcigpCi0gICAg
ewotICAgICAgICBpbml0aWFsaXplTG9naWNhbE9yZGVyQ2FjaGVGb3JMaW5lKCk7Ci0gICAgICAg
IHRyYXZlcnNlUHJldmlvdXNJbmxpbmVCb3hJbkNhY2hlT3JkZXIoKTsKLSAgICB9Ci0KICAgICB2
b2lkIHRyYXZlcnNlTmV4dElubGluZUJveCgpCiAgICAgewogICAgICAgICBtX2lubGluZUJveCA9
IGlubGluZUZsb3dCb3goKS0+bmV4dExpbmVCb3goKTsKQEAgLTEzMSw0OSArMTA3LDggQEAgcHJp
dmF0ZToKICAgICBjb25zdCBMZWdhY3lJbmxpbmVUZXh0Qm94KiBpbmxpbmVUZXh0Qm94KCkgY29u
c3QgeyByZXR1cm4gZG93bmNhc3Q8TGVnYWN5SW5saW5lVGV4dEJveD4obV9pbmxpbmVCb3gpOyB9
CiAgICAgY29uc3QgTGVnYWN5SW5saW5lRmxvd0JveCogaW5saW5lRmxvd0JveCgpIGNvbnN0IHsg
cmV0dXJuIGRvd25jYXN0PExlZ2FjeUlubGluZUZsb3dCb3g+KG1faW5saW5lQm94KTsgfQogCi0g
ICAgc3RhdGljIFZlY3Rvcjxjb25zdCBMZWdhY3lJbmxpbmVCb3gqPiBpbmxpbmVCb3hlc0luTG9n
aWNhbE9yZGVyKGNvbnN0IExlZ2FjeVJvb3RJbmxpbmVCb3gmIHJvb3QpCi0gICAgewotICAgICAg
ICBWZWN0b3I8TGVnYWN5SW5saW5lQm94Kj4gaW5saW5lQm94ZXM7Ci0gICAgICAgIHJvb3QuY29s
bGVjdExlYWZCb3hlc0luTG9naWNhbE9yZGVyKGlubGluZUJveGVzKTsKLSAgICAgICAgcmV0dXJu
IHJlaW50ZXJwcmV0X2Nhc3Q8VmVjdG9yPGNvbnN0IExlZ2FjeUlubGluZUJveCo+Jj4oaW5saW5l
Qm94ZXMpOwotICAgIH0KLSAgICB2b2lkIGluaXRpYWxpemVMb2dpY2FsT3JkZXJDYWNoZUZvckxp
bmUoKQotICAgIHsKLSAgICAgICAgaWYgKCFtX2lubGluZUJveCB8fCAhbV9sb2dpY2FsT3JkZXJD
YWNoZS5pc0VtcHR5KCkpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIG1fbG9naWNhbE9y
ZGVyQ2FjaGUgPSBpbmxpbmVCb3hlc0luTG9naWNhbE9yZGVyKG1faW5saW5lQm94LT5yb290KCkp
OwotICAgICAgICBmb3IgKG1fbG9naWNhbE9yZGVyQ2FjaGVJbmRleCA9IDA7IG1fbG9naWNhbE9y
ZGVyQ2FjaGVJbmRleCA8IG1fbG9naWNhbE9yZGVyQ2FjaGUuc2l6ZSgpOyArK21fbG9naWNhbE9y
ZGVyQ2FjaGVJbmRleCkgewotICAgICAgICAgICAgaWYgKG1fbG9naWNhbE9yZGVyQ2FjaGVbbV9s
b2dpY2FsT3JkZXJDYWNoZUluZGV4XSA9PSBtX2lubGluZUJveCkKLSAgICAgICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgfQot
Ci0gICAgdm9pZCB0cmF2ZXJzZU5leHRJbmxpbmVCb3hJbkNhY2hlT3JkZXIoKTsKLSAgICB2b2lk
IHRyYXZlcnNlUHJldmlvdXNJbmxpbmVCb3hJbkNhY2hlT3JkZXIoKTsKLQogICAgIGNvbnN0IExl
Z2FjeUlubGluZUJveCogbV9pbmxpbmVCb3ggeyBudWxscHRyIH07Ci0gICAgUmVmQ291bnRlZEFy
cmF5PGNvbnN0IExlZ2FjeUlubGluZUJveCo+IG1fbG9naWNhbE9yZGVyQ2FjaGU7Ci0gICAgc2l6
ZV90IG1fbG9naWNhbE9yZGVyQ2FjaGVJbmRleCB7IDAgfTsKIH07CiAKLQotaW5saW5lIHZvaWQg
Qm94TGVnYWN5UGF0aDo6dHJhdmVyc2VOZXh0SW5saW5lQm94SW5DYWNoZU9yZGVyKCkKLXsKLSAg
ICBBU1NFUlQoIW1fbG9naWNhbE9yZGVyQ2FjaGUuaXNFbXB0eSgpKTsKLSAgICArK21fbG9naWNh
bE9yZGVyQ2FjaGVJbmRleDsKLSAgICBtX2lubGluZUJveCA9IG1fbG9naWNhbE9yZGVyQ2FjaGVJ
bmRleCA8IG1fbG9naWNhbE9yZGVyQ2FjaGUuc2l6ZSgpID8gbV9sb2dpY2FsT3JkZXJDYWNoZVtt
X2xvZ2ljYWxPcmRlckNhY2hlSW5kZXhdIDogbnVsbHB0cjsKLX0KLQotaW5saW5lIHZvaWQgQm94
TGVnYWN5UGF0aDo6dHJhdmVyc2VQcmV2aW91c0lubGluZUJveEluQ2FjaGVPcmRlcigpCi17Ci0g
ICAgQVNTRVJUKCFtX2xvZ2ljYWxPcmRlckNhY2hlLmlzRW1wdHkoKSk7Ci0gICAgaWYgKCFtX2xv
Z2ljYWxPcmRlckNhY2hlSW5kZXgpIHsKLSAgICAgICAgbV9pbmxpbmVCb3ggPSBudWxscHRyOwot
ICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIG1faW5saW5lQm94ID0gbV9sb2dpY2FsT3JkZXJD
YWNoZVstLW1fbG9naWNhbE9yZGVyQ2FjaGVJbmRleF07Ci19Ci0KIH0KIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9JbmxpbmVJdGVyYXRvckJveE1vZGVy
blBhdGguaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9JbmxpbmVJdGVyYXRv
ckJveE1vZGVyblBhdGguaAppbmRleCA2MTU0M2IwY2Y0YzQ4YjBhYmQ5ZDJjNDI1ZTk0ZTE3YWRm
ZjQ2MDUyLi5kN2RjOTRjYzg2ODdkZjNmMmMwNjQ2MzhjZWVmNTJlZWMxOWVlYTRiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vSW5saW5lSXRlcmF0b3JCb3hN
b2Rlcm5QYXRoLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0lubGlu
ZUl0ZXJhdG9yQm94TW9kZXJuUGF0aC5oCkBAIC0xNjAsMTYgKzE2MCw2IEBAIHB1YmxpYzoKICAg
ICAgICAgICAgIHNldEF0RW5kKCk7CiAgICAgfQogCi0gICAgdm9pZCB0cmF2ZXJzZU5leHRPbkxp
bmVJbkxvZ2ljYWxPcmRlcigpCi0gICAgewotICAgICAgICB0cmF2ZXJzZU5leHRPbkxpbmUoKTsK
LSAgICB9Ci0KLSAgICB2b2lkIHRyYXZlcnNlUHJldmlvdXNPbkxpbmVJbkxvZ2ljYWxPcmRlcigp
Ci0gICAgewotICAgICAgICB0cmF2ZXJzZVByZXZpb3VzT25MaW5lKCk7Ci0gICAgfQotCiAgICAg
dm9pZCB0cmF2ZXJzZU5leHRJbmxpbmVCb3goKQogICAgIHsKICAgICAgICAgQVNTRVJUKGJveCgp
LmlzSW5saW5lQm94KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVn
cmF0aW9uL0lubGluZUl0ZXJhdG9yTGluZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50
ZWdyYXRpb24vSW5saW5lSXRlcmF0b3JMaW5lLmNwcAppbmRleCBmNGViNmE2OGZkM2RiYjgxNTcz
MjAzZjliNjA3ZjRkMWY0NThhYzU2Li44ZmM2NDU0ZjM2MTIwYmNlZmJmMTM4NTkzMzhmNmE5YjM0
YTZhN2IwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vSW5s
aW5lSXRlcmF0b3JMaW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRp
b24vSW5saW5lSXRlcmF0b3JMaW5lLmNwcApAQCAtMTE1LDM4ICsxMTUsNiBAQCBMZWFmQm94SXRl
cmF0b3IgTGluZTo6bGFzdFJ1bigpIGNvbnN0CiAgICAgfSk7CiB9CiAKLUxlYWZCb3hJdGVyYXRv
ciBMaW5lOjpsb2dpY2FsU3RhcnRSdW4oKSBjb25zdAotewotICAgIHJldHVybiBXVEY6OnN3aXRj
aE9uKG1fcGF0aFZhcmlhbnQsIFtdKGF1dG8mIHBhdGgpIC0+IExlYWZCb3hJdGVyYXRvciB7Ci0g
ICAgICAgIHJldHVybiB7IHBhdGgubG9naWNhbFN0YXJ0UnVuKCkgfTsKLSAgICB9KTsKLX0KLQot
TGVhZkJveEl0ZXJhdG9yIExpbmU6OmxvZ2ljYWxFbmRSdW4oKSBjb25zdAotewotICAgIHJldHVy
biBXVEY6OnN3aXRjaE9uKG1fcGF0aFZhcmlhbnQsIFtdKGF1dG8mIHBhdGgpIC0+IExlYWZCb3hJ
dGVyYXRvciB7Ci0gICAgICAgIHJldHVybiB7IHBhdGgubG9naWNhbEVuZFJ1bigpIH07Ci0gICAg
fSk7Ci19Ci0KLUxlYWZCb3hJdGVyYXRvciBMaW5lOjpsb2dpY2FsU3RhcnRSdW5XaXRoTm9kZSgp
IGNvbnN0Ci17Ci0gICAgZm9yIChhdXRvIHJ1biA9IGxvZ2ljYWxTdGFydFJ1bigpOyBydW47IHJ1
bi50cmF2ZXJzZU5leHRPbkxpbmVJbkxvZ2ljYWxPcmRlcigpKSB7Ci0gICAgICAgIGlmIChydW4t
PnJlbmRlcmVyKCkubm9kZSgpKQotICAgICAgICAgICAgcmV0dXJuIHJ1bjsKLSAgICB9Ci0gICAg
cmV0dXJuIHsgfTsKLX0KLQotTGVhZkJveEl0ZXJhdG9yIExpbmU6OmxvZ2ljYWxFbmRSdW5XaXRo
Tm9kZSgpIGNvbnN0Ci17Ci0gICAgZm9yIChhdXRvIHJ1biA9IGxvZ2ljYWxFbmRSdW4oKTsgcnVu
OyBydW4udHJhdmVyc2VQcmV2aW91c09uTGluZUluTG9naWNhbE9yZGVyKCkpIHsKLSAgICAgICAg
aWYgKHJ1bi0+cmVuZGVyZXIoKS5ub2RlKCkpCi0gICAgICAgICAgICByZXR1cm4gcnVuOwotICAg
IH0KLSAgICByZXR1cm4geyB9OwotfQotCiBMZWFmQm94SXRlcmF0b3IgTGluZTo6Y2xvc2VzdFJ1
bkZvclBvaW50KGNvbnN0IEludFBvaW50JiBwb2ludEluQ29udGVudHMsIGJvb2wgZWRpdGFibGVP
bmx5KSBjb25zdAogewogICAgIHJldHVybiBjbG9zZXN0UnVuRm9yTG9naWNhbExlZnRQb3NpdGlv
bihpc0hvcml6b250YWwoKSA/IHBvaW50SW5Db250ZW50cy54KCkgOiBwb2ludEluQ29udGVudHMu
eSgpLCBlZGl0YWJsZU9ubHkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lu
dGVncmF0aW9uL0lubGluZUl0ZXJhdG9yTGluZS5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lu
dGVncmF0aW9uL0lubGluZUl0ZXJhdG9yTGluZS5oCmluZGV4IDJkMzI4OTNlNzVkN2I3YmIxNmY3
ZDRkYWFhNDQ5ZTBmNTk5ZjEwNDAuLjY3ZDYzNWEzNmIwZWQyYWMyYzlmOWEwNWFkOTY1MTU2ODg1
MDYxMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9Jbmxp
bmVJdGVyYXRvckxpbmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24v
SW5saW5lSXRlcmF0b3JMaW5lLmgKQEAgLTg5LDExICs4OSw2IEBAIHB1YmxpYzoKIAogICAgIExl
YWZCb3hJdGVyYXRvciBjbG9zZXN0UnVuRm9yUG9pbnQoY29uc3QgSW50UG9pbnQmIHBvaW50SW5D
b250ZW50cywgYm9vbCBlZGl0YWJsZU9ubHkpIGNvbnN0OwogICAgIExlYWZCb3hJdGVyYXRvciBj
bG9zZXN0UnVuRm9yTG9naWNhbExlZnRQb3NpdGlvbihpbnQgcG9zaXRpb24sIGJvb2wgZWRpdGFi
bGVPbmx5ID0gZmFsc2UpIGNvbnN0OwotCi0gICAgTGVhZkJveEl0ZXJhdG9yIGxvZ2ljYWxTdGFy
dFJ1bigpIGNvbnN0OwotICAgIExlYWZCb3hJdGVyYXRvciBsb2dpY2FsRW5kUnVuKCkgY29uc3Q7
Ci0gICAgTGVhZkJveEl0ZXJhdG9yIGxvZ2ljYWxTdGFydFJ1bldpdGhOb2RlKCkgY29uc3Q7Ci0g
ICAgTGVhZkJveEl0ZXJhdG9yIGxvZ2ljYWxFbmRSdW5XaXRoTm9kZSgpIGNvbnN0OwogICAgIAog
ICAgIExlYWZCb3hJdGVyYXRvciBmaXJzdFNlbGVjdGVkQm94KCkgY29uc3Q7CiAgICAgTGVhZkJv
eEl0ZXJhdG9yIGxhc3RTZWxlY3RlZEJveCgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0lubGluZUl0ZXJhdG9yTGluZUxlZ2FjeVBhdGguaCBi
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9JbmxpbmVJdGVyYXRvckxpbmVMZWdh
Y3lQYXRoLmgKaW5kZXggZmFjM2EyMmU3NDk0ZDRlNDMxMjE4ZmNlODllNzliNDMyNGE5M2QwOS4u
Yjc0YzZkOWEwMDFlMjU0MjI1ZmY3ZmNhYWRiYWZlMzQ2ZGMwNzAxNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0lubGluZUl0ZXJhdG9yTGluZUxlZ2FjeVBh
dGguaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vSW5saW5lSXRlcmF0
b3JMaW5lTGVnYWN5UGF0aC5oCkBAIC04NSwxNyArODUsNiBAQCBwdWJsaWM6CiAgICAgICAgIHJl
dHVybiB7IG1fcm9vdElubGluZUJveC0+bGFzdExlYWZEZXNjZW5kYW50KCkgfTsKICAgICB9CiAK
LQotICAgIEJveExlZ2FjeVBhdGggbG9naWNhbFN0YXJ0UnVuKCkgY29uc3QKLSAgICB7Ci0gICAg
ICAgIHJldHVybiB7ICptX3Jvb3RJbmxpbmVCb3gsIEJveExlZ2FjeVBhdGg6OkxvZ2ljYWxPcmRl
cjo6U3RhcnQgfTsKLSAgICB9Ci0KLSAgICBCb3hMZWdhY3lQYXRoIGxvZ2ljYWxFbmRSdW4oKSBj
b25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIHsgKm1fcm9vdElubGluZUJveCwgQm94TGVnYWN5
UGF0aDo6TG9naWNhbE9yZGVyOjpFbmQgfTsKLSAgICB9Ci0KIHByaXZhdGU6CiAgICAgY29uc3Qg
TGVnYWN5Um9vdElubGluZUJveCogbV9yb290SW5saW5lQm94OwogfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9JbmxpbmVJdGVyYXRvckxpbmVNb2Rlcm5Q
YXRoLmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vSW5saW5lSXRlcmF0b3JM
aW5lTW9kZXJuUGF0aC5oCmluZGV4IGNhZjgyNmY4NTFlNDdmZmU3ZDVhMGRhYzU5NWZlOWRmMzNj
NDVkZTMuLmI5MWNmY2Y2NDUwZDM5OTVjNWI0NGVlNmY1MDA0ZDA5YTI3ODNkODUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9JbmxpbmVJdGVyYXRvckxpbmVN
b2Rlcm5QYXRoLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0lubGlu
ZUl0ZXJhdG9yTGluZU1vZGVyblBhdGguaApAQCAtMTE2LDE2ICsxMTYsNiBAQCBwdWJsaWM6CiAg
ICAgICAgIHJldHVybiBydW5JdGVyYXRvcjsKICAgICB9CiAKLSAgICBCb3hNb2Rlcm5QYXRoIGxv
Z2ljYWxTdGFydFJ1bigpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gZmlyc3RSdW4oKTsK
LSAgICB9Ci0KLSAgICBCb3hNb2Rlcm5QYXRoIGxvZ2ljYWxFbmRSdW4oKSBjb25zdAotICAgIHsK
LSAgICAgICAgcmV0dXJuIGxhc3RSdW4oKTsKLSAgICB9Ci0KIHByaXZhdGU6CiAgICAgdm9pZCBz
ZXRBdEVuZCgpIHsgbV9saW5lSW5kZXggPSBsaW5lcygpLnNpemUoKTsgfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vSW5saW5lSXRlcmF0b3JMb2dpY2Fs
T3JkZXJUcmF2ZXJzYWwuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0lu
bGluZUl0ZXJhdG9yTG9naWNhbE9yZGVyVHJhdmVyc2FsLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44NWViNTE3
OTlhYTM3ZDg4ZTI2ZDhlOTc1YTg3NTAzMDQ0YmQ1ZjE0Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0lubGluZUl0ZXJhdG9yTG9naWNhbE9yZGVy
VHJhdmVyc2FsLmNwcApAQCAtMCwwICsxLDIyNCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAy
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJJbmxpbmVJdGVyYXRvckxvZ2ljYWxPcmRlclRyYXZlcnNhbC5o
IgorCisjaW5jbHVkZSAiSW5saW5lSXRlcmF0b3JMaW5lLmgiCisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKK25hbWVzcGFjZSBJbmxpbmVJdGVyYXRvciB7CisKK3N0YXRpYyBUZXh0TG9naWNhbE9yZGVy
Q2FjaGUgbWFrZVRleHRMb2dpY2FsT3JkZXJDYWNoZUlmTmVlZGVkKGNvbnN0IFJlbmRlclRleHQm
IHRleHQpCit7CisgICAgaWYgKCF0ZXh0LmNvbnRhaW5zUmV2ZXJzZWRUZXh0KCkpCisgICAgICAg
IHJldHVybiB7IH07CisKKyAgICBhdXRvIGNhY2hlID0gV1RGOjptYWtlVW5pcXVlPFRleHRMb2dp
Y2FsT3JkZXJDYWNoZURhdGE+KCk7CisgICAgZm9yIChhdXRvIHRleHRCb3ggOiB0ZXh0Qm94ZXNG
b3IodGV4dCkpCisgICAgICAgIGNhY2hlLT5ib3hlcy5hcHBlbmQodGV4dEJveCk7CisKKyAgICBp
ZiAoY2FjaGUtPmJveGVzLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAg
ICBzdGQ6OnNvcnQoY2FjaGUtPmJveGVzLmJlZ2luKCksIGNhY2hlLT5ib3hlcy5lbmQoKSwgWyZd
KGF1dG8mIGEsIGF1dG8mIGIpIHsKKyAgICAgICAgcmV0dXJuIGEtPnN0YXJ0KCkgPCBiLT5zdGFy
dCgpOworICAgIH0pOworCisgICAgcmV0dXJuIGNhY2hlOworfQorCitzdGF0aWMgdm9pZCB1cGRh
dGVUZXh0TG9naWNhbE9yZGVyQ2FjaGVJZk5lZWRlZChjb25zdCBUZXh0Qm94SXRlcmF0b3ImIHRl
eHRCb3gsIFRleHRMb2dpY2FsT3JkZXJDYWNoZSYgY2FjaGUpCit7CisgICAgaWYgKCFjYWNoZSAm
JiAhKGNhY2hlID0gbWFrZVRleHRMb2dpY2FsT3JkZXJDYWNoZUlmTmVlZGVkKHRleHRCb3gtPnJl
bmRlcmVyKCkpKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKGNhY2hlLT5pbmRleCA8IGNh
Y2hlLT5ib3hlcy5zaXplKCkgJiYgY2FjaGUtPmJveGVzW2NhY2hlLT5pbmRleF0gPT0gdGV4dEJv
eCkKKyAgICAgICAgcmV0dXJuOworCisgICAgY2FjaGUtPmluZGV4ID0gY2FjaGUtPmJveGVzLmZp
bmQodGV4dEJveCk7CisKKyAgICBpZiAoY2FjaGUtPmluZGV4ID09IG5vdEZvdW5kKSB7CisgICAg
ICAgIGNhY2hlID0geyB9OworICAgICAgICB1cGRhdGVUZXh0TG9naWNhbE9yZGVyQ2FjaGVJZk5l
ZWRlZCh0ZXh0Qm94LCBjYWNoZSk7CisgICAgfQorfQorCitzdGQ6OnBhaXI8VGV4dEJveEl0ZXJh
dG9yLCBUZXh0TG9naWNhbE9yZGVyQ2FjaGU+IGZpcnN0VGV4dEJveEluTG9naWNhbE9yZGVyRm9y
KGNvbnN0IFJlbmRlclRleHQmIHRleHQpCit7CisgICAgaWYgKGF1dG8gY2FjaGUgPSBtYWtlVGV4
dExvZ2ljYWxPcmRlckNhY2hlSWZOZWVkZWQodGV4dCkpCisgICAgICAgIHJldHVybiB7IGNhY2hl
LT5ib3hlcy5maXJzdCgpLCBXVEZNb3ZlKGNhY2hlKSB9OworCisgICAgcmV0dXJuIHsgZmlyc3RU
ZXh0Qm94Rm9yKHRleHQpLCBudWxscHRyIH07Cit9CisKK1RleHRCb3hJdGVyYXRvciBuZXh0VGV4
dEJveEluTG9naWNhbE9yZGVyKGNvbnN0IFRleHRCb3hJdGVyYXRvciYgdGV4dEJveCwgVGV4dExv
Z2ljYWxPcmRlckNhY2hlJiBjYWNoZSkKK3sKKyAgICB1cGRhdGVUZXh0TG9naWNhbE9yZGVyQ2Fj
aGVJZk5lZWRlZCh0ZXh0Qm94LCBjYWNoZSk7CisKKyAgICBpZiAoIWNhY2hlKQorICAgICAgICBy
ZXR1cm4gdGV4dEJveC0+bmV4dFRleHRCb3goKTsKKworICAgIGNhY2hlLT5pbmRleCsrOworCisg
ICAgaWYgKGNhY2hlLT5pbmRleCA8IGNhY2hlLT5ib3hlcy5zaXplKCkpCisgICAgICAgIHJldHVy
biBjYWNoZS0+Ym94ZXNbY2FjaGUtPmluZGV4XTsKKworICAgIHJldHVybiB7IH07Cit9CisKK3N0
YXRpYyBMaW5lTG9naWNhbE9yZGVyQ2FjaGUgbWFrZUxpbmVMb2dpY2FsT3JkZXJDYWNoZShjb25z
dCBMaW5lSXRlcmF0b3ImIGxpbmUpCit7CisgICAgYXV0byBjYWNoZSA9IFdURjo6bWFrZVVuaXF1
ZTxMaW5lTG9naWNhbE9yZGVyQ2FjaGVEYXRhPigpOworICAgIGNhY2hlLT5saW5lID0gbGluZTsK
KworICAgIGF1dG8mIGJveGVzID0gY2FjaGUtPmJveGVzOworCisgICAgdW5zaWduZWQgY2hhciBt
aW5MZXZlbCA9IDEyODsKKyAgICB1bnNpZ25lZCBjaGFyIG1heExldmVsID0gMDsKKworICAgIGZv
ciAoYXV0byBib3ggPSBsaW5lLT5maXJzdFJ1bigpOyBib3g7IGJveCA9IGJveC50cmF2ZXJzZU5l
eHRPbkxpbmUoKSkgeworICAgICAgICBtaW5MZXZlbCA9IHN0ZDo6bWluKG1pbkxldmVsLCBib3gt
PmJpZGlMZXZlbCgpKTsKKyAgICAgICAgbWF4TGV2ZWwgPSBzdGQ6Om1heChtYXhMZXZlbCwgYm94
LT5iaWRpTGV2ZWwoKSk7CisgICAgICAgIGJveGVzLmFwcGVuZChib3gpOworICAgIH0KKworICAg
IGlmICghbWF4TGV2ZWwpCisgICAgICAgIHJldHVybiBjYWNoZTsKKworICAgIGlmIChsaW5lLT5j
b250YWluaW5nQmxvY2soKS5zdHlsZSgpLnJ0bE9yZGVyaW5nKCkgPT0gT3JkZXI6OlZpc3VhbCkK
KyAgICAgICAgcmV0dXJuIGNhY2hlOworCisgICAgLy8gUmV2ZXJzZSBvZiByZW9yZGVyaW5nIG9m
IHRoZSBsaW5lIChMMiBhY2NvcmRpbmcgdG8gQmlkaSBzcGVjKToKKyAgICAvLyBMMi4gRnJvbSB0
aGUgaGlnaGVzdCBsZXZlbCBmb3VuZCBpbiB0aGUgdGV4dCB0byB0aGUgbG93ZXN0IG9kZCBsZXZl
bCBvbiBlYWNoIGxpbmUsCisgICAgLy8gcmV2ZXJzZSBhbnkgY29udGlndW91cyBzZXF1ZW5jZSBv
ZiBjaGFyYWN0ZXJzIHRoYXQgYXJlIGF0IHRoYXQgbGV2ZWwgb3IgaGlnaGVyLgorCisgICAgLy8g
UmV2ZXJzaW5nIHRoZSByZW9yZGVyaW5nIG9mIHRoZSBsaW5lIGlzIG9ubHkgZG9uZSB1cCB0byB0
aGUgbG93ZXN0IG9kZCBsZXZlbC4KKyAgICBpZiAoIShtaW5MZXZlbCAlIDIpKQorICAgICAgICAr
K21pbkxldmVsOworCisgICAgYXV0byBlbmQgPSBib3hlcy5lbmQoKTsKKyAgICBmb3IgKDsgbWlu
TGV2ZWwgPD0gbWF4TGV2ZWw7ICsrbWluTGV2ZWwpIHsKKyAgICAgICAgYXV0byBib3ggPSBib3hl
cy5iZWdpbigpOworICAgICAgICB3aGlsZSAoYm94IDwgZW5kKSB7CisgICAgICAgICAgICB3aGls
ZSAoYm94IDwgZW5kICYmICgqYm94KS0+YmlkaUxldmVsKCkgPCBtaW5MZXZlbCkKKyAgICAgICAg
ICAgICAgICArK2JveDsKKworICAgICAgICAgICAgYXV0byBmaXJzdCA9IGJveDsKKyAgICAgICAg
ICAgIHdoaWxlIChib3ggPCBlbmQgJiYgKCpib3gpLT5iaWRpTGV2ZWwoKSA+PSBtaW5MZXZlbCkK
KyAgICAgICAgICAgICAgICArK2JveDsKKworICAgICAgICAgICAgYXV0byBsYXN0ID0gYm94Owor
ICAgICAgICAgICAgc3RkOjpyZXZlcnNlKGZpcnN0LCBsYXN0KTsKKyAgICAgICAgfQorICAgIH0K
KworICAgIHJldHVybiBjYWNoZTsKK30KKworc3RhdGljIHZvaWQgdXBkYXRlTGluZUxvZ2ljYWxP
cmRlckNhY2hlSWZOZWVkZWQoY29uc3QgTGVhZkJveEl0ZXJhdG9yJiBib3gsIExpbmVMb2dpY2Fs
T3JkZXJDYWNoZSYgY2FjaGUpCit7CisgICAgYXV0byBsaW5lID0gYm94LT5saW5lKCk7CisgICAg
aWYgKCFjYWNoZSB8fCBjYWNoZS0+bGluZSAhPSBsaW5lKQorICAgICAgICBjYWNoZSA9IG1ha2VM
aW5lTG9naWNhbE9yZGVyQ2FjaGUobGluZSk7CisKKyAgICBpZiAoY2FjaGUtPmluZGV4IDwgY2Fj
aGUtPmJveGVzLnNpemUoKSAmJiBjYWNoZS0+Ym94ZXNbY2FjaGUtPmluZGV4XSA9PSBib3gpCisg
ICAgICAgIHJldHVybjsKKworICAgIGNhY2hlLT5pbmRleCA9IGNhY2hlLT5ib3hlcy5maW5kKGJv
eCk7CisKKyAgICBBU1NFUlQoY2FjaGUtPmluZGV4ICE9IG5vdEZvdW5kKTsKK30KKworTGVhZkJv
eEl0ZXJhdG9yIGZpcnN0TGVhZk9uTGluZUluTG9naWNhbE9yZGVyKGNvbnN0IExpbmVJdGVyYXRv
ciYgbGluZSwgTGluZUxvZ2ljYWxPcmRlckNhY2hlJiBjYWNoZSkKK3sKKyAgICBjYWNoZSA9IG1h
a2VMaW5lTG9naWNhbE9yZGVyQ2FjaGUobGluZSk7CisKKyAgICBpZiAoY2FjaGUtPmJveGVzLmlz
RW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIGNhY2hlLT5pbmRleCA9IDA7Cisg
ICAgcmV0dXJuIGNhY2hlLT5ib3hlcy5maXJzdCgpOworfQorCitMZWFmQm94SXRlcmF0b3IgbGFz
dExlYWZPbkxpbmVJbkxvZ2ljYWxPcmRlcihjb25zdCBMaW5lSXRlcmF0b3ImIGxpbmUsIExpbmVM
b2dpY2FsT3JkZXJDYWNoZSYgY2FjaGUpCit7CisgICAgY2FjaGUgPSBtYWtlTGluZUxvZ2ljYWxP
cmRlckNhY2hlKGxpbmUpOworCisgICAgaWYgKGNhY2hlLT5ib3hlcy5pc0VtcHR5KCkpCisgICAg
ICAgIHJldHVybiB7IH07CisKKyAgICBjYWNoZS0+aW5kZXggPSBjYWNoZS0+Ym94ZXMuc2l6ZSgp
IC0gMTsKKyAgICByZXR1cm4gY2FjaGUtPmJveGVzLmxhc3QoKTsKK30KKworTGVhZkJveEl0ZXJh
dG9yIG5leHRMZWFmT25MaW5lSW5Mb2dpY2FsT3JkZXIoY29uc3QgTGVhZkJveEl0ZXJhdG9yJiBi
b3gsIExpbmVMb2dpY2FsT3JkZXJDYWNoZSYgY2FjaGUpCit7CisgICAgdXBkYXRlTGluZUxvZ2lj
YWxPcmRlckNhY2hlSWZOZWVkZWQoYm94LCBjYWNoZSk7CisKKyAgICBpZiAoIWNhY2hlKQorICAg
ICAgICByZXR1cm4gYm94LT5uZXh0T25MaW5lKCk7CisKKyAgICBjYWNoZS0+aW5kZXgrKzsKKwor
ICAgIGlmIChjYWNoZS0+aW5kZXggPCBjYWNoZS0+Ym94ZXMuc2l6ZSgpKQorICAgICAgICByZXR1
cm4gY2FjaGUtPmJveGVzW2NhY2hlLT5pbmRleF07CisKKyAgICByZXR1cm4geyB9OworfQorCitM
ZWFmQm94SXRlcmF0b3IgcHJldmlvdXNMZWFmT25MaW5lSW5Mb2dpY2FsT3JkZXIoY29uc3QgTGVh
ZkJveEl0ZXJhdG9yJiBib3gsIExpbmVMb2dpY2FsT3JkZXJDYWNoZSYgY2FjaGUpCit7CisgICAg
dXBkYXRlTGluZUxvZ2ljYWxPcmRlckNhY2hlSWZOZWVkZWQoYm94LCBjYWNoZSk7CisKKyAgICBp
ZiAoIWNhY2hlKQorICAgICAgICByZXR1cm4gYm94LT5wcmV2aW91c09uTGluZSgpOworCisgICAg
aWYgKCFjYWNoZS0+aW5kZXgpCisgICAgICAgIHJldHVybiB7IH07CisKKyAgICBjYWNoZS0+aW5k
ZXgtLTsKKworICAgIHJldHVybiBjYWNoZS0+Ym94ZXNbY2FjaGUtPmluZGV4XTsKK30KKworTGVh
ZkJveEl0ZXJhdG9yIGZpcnN0TGVhZk9uTGluZUluTG9naWNhbE9yZGVyV2l0aE5vZGUoY29uc3Qg
TGluZUl0ZXJhdG9yJiBsaW5lLCBMaW5lTG9naWNhbE9yZGVyQ2FjaGUmIGNhY2hlKQoreworICAg
IGF1dG8gYm94ID0gZmlyc3RMZWFmT25MaW5lSW5Mb2dpY2FsT3JkZXIobGluZSwgY2FjaGUpOwor
ICAgIHdoaWxlIChib3ggJiYgIWJveC0+cmVuZGVyZXIoKS5ub2RlKCkpCisgICAgICAgIGJveCA9
IG5leHRMZWFmT25MaW5lSW5Mb2dpY2FsT3JkZXIoYm94LCBjYWNoZSk7CisgICAgcmV0dXJuIGJv
eDsKK30KKworTGVhZkJveEl0ZXJhdG9yIGxhc3RMZWFmT25MaW5lSW5Mb2dpY2FsT3JkZXJXaXRo
Tm9kZShjb25zdCBMaW5lSXRlcmF0b3ImIGxpbmUsIExpbmVMb2dpY2FsT3JkZXJDYWNoZSYgY2Fj
aGUpCit7CisgICAgYXV0byBib3ggPSBsYXN0TGVhZk9uTGluZUluTG9naWNhbE9yZGVyKGxpbmUs
IGNhY2hlKTsKKyAgICB3aGlsZSAoYm94ICYmICFib3gtPnJlbmRlcmVyKCkubm9kZSgpKQorICAg
ICAgICBib3ggPSBwcmV2aW91c0xlYWZPbkxpbmVJbkxvZ2ljYWxPcmRlcihib3gsIGNhY2hlKTsK
KyAgICByZXR1cm4gYm94OworfQorCit9Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvaW50ZWdyYXRpb24vSW5saW5lSXRlcmF0b3JMb2dpY2FsT3JkZXJUcmF2ZXJzYWwuaCBi
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9JbmxpbmVJdGVyYXRvckxvZ2ljYWxP
cmRlclRyYXZlcnNhbC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFjZjU4OTRjOTgwODJkNDkyMTRmZjA2N2JlNzYw
OGNlNWFjN2M4OTIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50
ZWdyYXRpb24vSW5saW5lSXRlcmF0b3JMb2dpY2FsT3JkZXJUcmF2ZXJzYWwuaApAQCAtMCwwICsx
LDYzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJJbmxpbmVJdGVy
YXRvckxpbmUuaCIKKyNpbmNsdWRlICJJbmxpbmVJdGVyYXRvclRleHRCb3guaCIKKworbmFtZXNw
YWNlIFdlYkNvcmUgeworbmFtZXNwYWNlIElubGluZUl0ZXJhdG9yIHsKKworc3RydWN0IFRleHRM
b2dpY2FsT3JkZXJDYWNoZURhdGEgeworICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRF
RDsKKworICAgIFZlY3RvcjxUZXh0Qm94SXRlcmF0b3I+IGJveGVzOworICAgIHNpemVfdCBpbmRl
eCB7IDAgfTsKK307Cit1c2luZyBUZXh0TG9naWNhbE9yZGVyQ2FjaGUgPSBzdGQ6OnVuaXF1ZV9w
dHI8VGV4dExvZ2ljYWxPcmRlckNhY2hlRGF0YT47CisKK3N0ZDo6cGFpcjxUZXh0Qm94SXRlcmF0
b3IsIFRleHRMb2dpY2FsT3JkZXJDYWNoZT4gZmlyc3RUZXh0Qm94SW5Mb2dpY2FsT3JkZXJGb3Io
Y29uc3QgUmVuZGVyVGV4dCYpOworVGV4dEJveEl0ZXJhdG9yIG5leHRUZXh0Qm94SW5Mb2dpY2Fs
T3JkZXIoY29uc3QgVGV4dEJveEl0ZXJhdG9yJiwgVGV4dExvZ2ljYWxPcmRlckNhY2hlJik7CisK
K3N0cnVjdCBMaW5lTG9naWNhbE9yZGVyQ2FjaGVEYXRhIHsKKyAgICBXVEZfTUFLRV9TVFJVQ1Rf
RkFTVF9BTExPQ0FURUQ7CisKKyAgICBMaW5lSXRlcmF0b3IgbGluZTsKKyAgICBWZWN0b3I8TGVh
ZkJveEl0ZXJhdG9yPiBib3hlczsKKyAgICBzaXplX3QgaW5kZXggeyAwIH07Cit9OwordXNpbmcg
TGluZUxvZ2ljYWxPcmRlckNhY2hlID0gc3RkOjp1bmlxdWVfcHRyPExpbmVMb2dpY2FsT3JkZXJD
YWNoZURhdGE+OworCitMZWFmQm94SXRlcmF0b3IgZmlyc3RMZWFmT25MaW5lSW5Mb2dpY2FsT3Jk
ZXIoY29uc3QgTGluZUl0ZXJhdG9yJiwgTGluZUxvZ2ljYWxPcmRlckNhY2hlJik7CitMZWFmQm94
SXRlcmF0b3IgbGFzdExlYWZPbkxpbmVJbkxvZ2ljYWxPcmRlcihjb25zdCBMaW5lSXRlcmF0b3Im
LCBMaW5lTG9naWNhbE9yZGVyQ2FjaGUmKTsKK0xlYWZCb3hJdGVyYXRvciBuZXh0TGVhZk9uTGlu
ZUluTG9naWNhbE9yZGVyKGNvbnN0IExlYWZCb3hJdGVyYXRvciYsIExpbmVMb2dpY2FsT3JkZXJD
YWNoZSYpOworTGVhZkJveEl0ZXJhdG9yIHByZXZpb3VzTGVhZk9uTGluZUluTG9naWNhbE9yZGVy
KGNvbnN0IExlYWZCb3hJdGVyYXRvciYsIExpbmVMb2dpY2FsT3JkZXJDYWNoZSYpOworCitMZWFm
Qm94SXRlcmF0b3IgZmlyc3RMZWFmT25MaW5lSW5Mb2dpY2FsT3JkZXJXaXRoTm9kZShjb25zdCBM
aW5lSXRlcmF0b3ImLCBMaW5lTG9naWNhbE9yZGVyQ2FjaGUmKTsKK0xlYWZCb3hJdGVyYXRvciBs
YXN0TGVhZk9uTGluZUluTG9naWNhbE9yZGVyV2l0aE5vZGUoY29uc3QgTGluZUl0ZXJhdG9yJiwg
TGluZUxvZ2ljYWxPcmRlckNhY2hlJik7CisKK30KK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9pbnRlZ3JhdGlvbi9JbmxpbmVJdGVyYXRvclRleHRCb3guY3BwIGIvU291cmNl
L1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0lubGluZUl0ZXJhdG9yVGV4dEJveC5jcHAKaW5k
ZXggMjE1NjhkZjM0ODgyYWZkNTYyYjg1OGE1NDU1MjBhNWVhOThiZjRiOS4uZDI5MWNmMjYzNDc4
ODQwM2UxMThlOGFlMmQxY2ZlYzczMWQyOTM2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2ludGVncmF0aW9uL0lubGluZUl0ZXJhdG9yVGV4dEJveC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0lubGluZUl0ZXJhdG9yVGV4dEJveC5jcHAKQEAg
LTk5LDQzICs5OSw2IEBAIFRleHRCb3hJdGVyYXRvciBmaXJzdFRleHRCb3hGb3IoY29uc3QgUmVu
ZGVyVGV4dCYgdGV4dCkKICAgICByZXR1cm4geyBCb3hMZWdhY3lQYXRoIHsgdGV4dC5maXJzdFRl
eHRCb3goKSB9IH07CiB9CiAKLXN0ZDo6cGFpcjxUZXh0Qm94SXRlcmF0b3IsIExvZ2ljYWxPcmRl
ckNhY2hlPiBmaXJzdFRleHRCb3hJbkxvZ2ljYWxPcmRlckZvcihjb25zdCBSZW5kZXJUZXh0JiB0
ZXh0KQotewotICAgIGlmICghdGV4dC5jb250YWluc1JldmVyc2VkVGV4dCgpKQotICAgICAgICBy
ZXR1cm4geyBmaXJzdFRleHRCb3hGb3IodGV4dCksIG51bGxwdHIgfTsKLQotICAgIGF1dG8gY2Fj
aGUgPSBXVEY6Om1ha2VVbmlxdWU8TG9naWNhbE9yZGVyQ2FjaGVEYXRhPigpOwotICAgIGZvciAo
YXV0byB0ZXh0Qm94IDogdGV4dEJveGVzRm9yKHRleHQpKQotICAgICAgICBjYWNoZS0+Ym94ZXMu
YXBwZW5kKHRleHRCb3gpOwotCi0gICAgaWYgKGNhY2hlLT5ib3hlcy5pc0VtcHR5KCkpCi0gICAg
ICAgIHJldHVybiB7IFRleHRCb3hJdGVyYXRvciB7IH0sIG51bGxwdHIgfTsKLQotICAgIHN0ZDo6
c29ydChjYWNoZS0+Ym94ZXMuYmVnaW4oKSwgY2FjaGUtPmJveGVzLmVuZCgpLCBbJl0oYXV0byYg
YSwgYXV0byYgYikgewotICAgICAgICByZXR1cm4gYS0+c3RhcnQoKSA8IGItPnN0YXJ0KCk7Ci0g
ICAgfSk7Ci0KLSAgICByZXR1cm4geyBjYWNoZS0+Ym94ZXNbMF0sIFdURk1vdmUoY2FjaGUpIH07
Ci19Ci0KLVRleHRCb3hJdGVyYXRvciBuZXh0VGV4dEJveEluTG9naWNhbE9yZGVyKGNvbnN0IFRl
eHRCb3hJdGVyYXRvciYgdGV4dEJveCwgTG9naWNhbE9yZGVyQ2FjaGUmIGNhY2hlKQotewotICAg
IGlmICghY2FjaGUpCi0gICAgICAgIHJldHVybiB0ZXh0Qm94LT5uZXh0VGV4dEJveCgpOwotCi0g
ICAgaWYgKGNhY2hlLT5pbmRleCA9PSBjYWNoZS0+Ym94ZXMuc2l6ZSgpIHx8IGNhY2hlLT5ib3hl
c1tjYWNoZS0+aW5kZXhdICE9IHRleHRCb3gpIHsKLSAgICAgICAgY2FjaGUtPmluZGV4ID0gY2Fj
aGUtPmJveGVzLmZpbmQodGV4dEJveCk7Ci0gICAgICAgIEFTU0VSVChjYWNoZS0+aW5kZXggIT0g
bm90Rm91bmQpOwotICAgIH0KLQotICAgIGNhY2hlLT5pbmRleCsrOwotCi0gICAgaWYgKGNhY2hl
LT5pbmRleCA8IGNhY2hlLT5ib3hlcy5zaXplKCkpCi0gICAgICAgIHJldHVybiBjYWNoZS0+Ym94
ZXNbY2FjaGUtPmluZGV4XTsKLQotICAgIHJldHVybiB7IH07Ci19Ci0KIFRleHRCb3hJdGVyYXRv
ciB0ZXh0Qm94Rm9yKGNvbnN0IExlZ2FjeUlubGluZVRleHRCb3gqIGxlZ2FjeUlubGluZVRleHRC
b3gpCiB7CiAgICAgcmV0dXJuIHsgQm94TGVnYWN5UGF0aCB7IGxlZ2FjeUlubGluZVRleHRCb3gg
fSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0lubGlu
ZUl0ZXJhdG9yVGV4dEJveC5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0lu
bGluZUl0ZXJhdG9yVGV4dEJveC5oCmluZGV4IDQyYjQ3ZTM0OTk3ZjMzYjJhODdkYjVlMGI3YTVi
MWFhMGRlMjgzYjguLmU5MzJjMDY4NzcyNTI1ZTYyZTA4ZmY0NzYwNTJhNjE2Nzk1NWQ1ZmMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9JbmxpbmVJdGVyYXRv
clRleHRCb3guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vSW5saW5l
SXRlcmF0b3JUZXh0Qm94LmgKQEAgLTMyLDkgKzMyLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBuYW1lc3BhY2UgSW5saW5lSXRlcmF0b3IgewogCi1zdHJ1Y3QgTG9naWNhbE9yZGVyQ2FjaGVE
YXRhOwotdXNpbmcgTG9naWNhbE9yZGVyQ2FjaGUgPSBzdGQ6OnVuaXF1ZV9wdHI8TG9naWNhbE9y
ZGVyQ2FjaGVEYXRhPjsKLQogY2xhc3MgVGV4dEJveCA6IHB1YmxpYyBCb3ggewogcHVibGljOgog
ICAgIFRleHRCb3goUGF0aFZhcmlhbnQmJik7CkBAIC02Myw2ICs2MCw3IEBAIHB1YmxpYzoKICAg
ICBjb25zdCBMZWdhY3lJbmxpbmVUZXh0Qm94KiBsZWdhY3lJbmxpbmVCb3goKSBjb25zdCB7IHJl
dHVybiBkb3duY2FzdDxMZWdhY3lJbmxpbmVUZXh0Qm94PihCb3g6OmxlZ2FjeUlubGluZUJveCgp
KTsgfQogCiAgICAgVGV4dEJveEl0ZXJhdG9yIG5leHRUZXh0Qm94KCkgY29uc3Q7CisgICAgVGV4
dEJveEl0ZXJhdG9yIHByZXZpb3VzVGV4dEJveCgpIGNvbnN0OwogfTsKIAogY2xhc3MgVGV4dEJv
eEl0ZXJhdG9yIDogcHVibGljIExlYWZCb3hJdGVyYXRvciB7CkBAIC04Myw4ICs4MSw2IEBAIHBy
aXZhdGU6CiAgICAgQm94SXRlcmF0b3ImIHRyYXZlcnNlUHJldmlvdXNPbkxpbmUoKSA9IGRlbGV0
ZTsKICAgICBCb3hJdGVyYXRvciYgdHJhdmVyc2VOZXh0T25MaW5lSWdub3JpbmdMaW5lQnJlYWso
KSA9IGRlbGV0ZTsKICAgICBCb3hJdGVyYXRvciYgdHJhdmVyc2VQcmV2aW91c09uTGluZUlnbm9y
aW5nTGluZUJyZWFrKCkgPSBkZWxldGU7Ci0gICAgQm94SXRlcmF0b3ImIHRyYXZlcnNlTmV4dE9u
TGluZUluTG9naWNhbE9yZGVyKCkgPSBkZWxldGU7Ci0gICAgQm94SXRlcmF0b3ImIHRyYXZlcnNl
UHJldmlvdXNPbkxpbmVJbkxvZ2ljYWxPcmRlcigpID0gZGVsZXRlOwogCiAgICAgY29uc3QgVGV4
dEJveCYgZ2V0KCkgY29uc3QgeyByZXR1cm4gZG93bmNhc3Q8VGV4dEJveD4obV9ib3gpOyB9CiB9
OwpAQCAtMTExLDE1ICsxMDcsNiBAQCBUZXh0Qm94SXRlcmF0b3IgdGV4dEJveEZvcihjb25zdCBM
YXlvdXRJbnRlZ3JhdGlvbjo6SW5saW5lQ29udGVudCYsIHNpemVfdCBib3hJbgogI2VuZGlmCiBU
ZXh0Qm94UmFuZ2UgdGV4dEJveGVzRm9yKGNvbnN0IFJlbmRlclRleHQmKTsKIAotc3RydWN0IExv
Z2ljYWxPcmRlckNhY2hlRGF0YSB7Ci0gICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVE
OwotICAgIAotICAgIFZlY3RvcjxUZXh0Qm94SXRlcmF0b3I+IGJveGVzOwotICAgIHNpemVfdCBp
bmRleCB7IDAgfTsKLX07Ci1zdGQ6OnBhaXI8VGV4dEJveEl0ZXJhdG9yLCBMb2dpY2FsT3JkZXJD
YWNoZT4gZmlyc3RUZXh0Qm94SW5Mb2dpY2FsT3JkZXJGb3IoY29uc3QgUmVuZGVyVGV4dCYpOwot
VGV4dEJveEl0ZXJhdG9yIG5leHRUZXh0Qm94SW5Mb2dpY2FsT3JkZXIoY29uc3QgVGV4dEJveEl0
ZXJhdG9yJiwgTG9naWNhbE9yZGVyQ2FjaGUmKTsKLQogaW5saW5lIGJvb2wgVGV4dEJveDo6aGFz
SHlwaGVuKCkgY29uc3QKIHsKICAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbihtX3BhdGhWYXJpYW50
LCBbXShhdXRvJiBwYXRoKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQmxvY2tGbG93LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9j
a0Zsb3cuY3BwCmluZGV4IDExOGNjMjBhN2IyZWE1OTEzNTljNzI1MjU2MzQxZGQ3YmYxN2RmYzAu
LmYyYzYyOGY2NzFiYmZlNWNiODhlNTg1Y2NhZGZhMmYyY2U3NTE2ZmQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuY3BwCkBAIC0zNiw2ICszNiw3IEBACiAj
aW5jbHVkZSAiSGl0VGVzdExvY2F0aW9uLmgiCiAjaW5jbHVkZSAiSW5saW5lSXRlcmF0b3JCb3gu
aCIKICNpbmNsdWRlICJJbmxpbmVJdGVyYXRvckxpbmUuaCIKKyNpbmNsdWRlICJJbmxpbmVJdGVy
YXRvckxvZ2ljYWxPcmRlclRyYXZlcnNhbC5oIgogI2luY2x1ZGUgIklubGluZUl0ZXJhdG9yVGV4
dEJveC5oIgogI2luY2x1ZGUgIklubGluZVdhbGtlci5oIgogI2luY2x1ZGUgIkxheW91dEludGVn
cmF0aW9uTGluZUxheW91dC5oIgpAQCAtMzYxOSw3ICszNjIwLDggQEAgVmlzaWJsZVBvc2l0aW9u
IFJlbmRlckJsb2NrRmxvdzo6cG9zaXRpb25Gb3JQb2ludFdpdGhJbmxpbmVDaGlsZHJlbihjb25z
dCBMYXlvdXQKICAgICBpZiAobGFzdExpbmVXaXRoQ2hpbGRyZW4pIHsKICAgICAgICAgLy8gV2Ug
aGl0IHRoaXMgY2FzZSBmb3IgTWFjIGJlaGF2aW9yIHdoZW4gdGhlIFkgY29vcmRpbmF0ZSBpcyBi
ZWxvdyB0aGUgbGFzdCBib3guCiAgICAgICAgIEFTU0VSVChtb3ZlQ2FyZXRUb0JvdW5kYXJ5KTsK
LSAgICAgICAgaWYgKGF1dG8gbG9naWNhbGx5TGFzdFJ1biA9IGxhc3RMaW5lV2l0aENoaWxkcmVu
LT5sb2dpY2FsRW5kUnVuV2l0aE5vZGUoKSkKKyAgICAgICAgSW5saW5lSXRlcmF0b3I6OkxpbmVM
b2dpY2FsT3JkZXJDYWNoZSBvcmRlckNhY2hlOworICAgICAgICBpZiAoYXV0byBsb2dpY2FsbHlM
YXN0UnVuID0gSW5saW5lSXRlcmF0b3I6Omxhc3RMZWFmT25MaW5lSW5Mb2dpY2FsT3JkZXJXaXRo
Tm9kZShsYXN0TGluZVdpdGhDaGlsZHJlbiwgb3JkZXJDYWNoZSkpCiAgICAgICAgICAgICByZXR1
cm4gcG9zaXRpb25Gb3JSdW4oKnRoaXMsIGxvZ2ljYWxseUxhc3RSdW4sIGZhbHNlKTsKICAgICB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmNwcAppbmRleCA1N2RmMTQxZWY0
NzY3N2Q2MmFjMWIxM2Y0YWUyOTU3YzIyNWU4ODRmLi4yODE2NzMwODc3MzNkYjlkM2RmNjk2YzQ0
NjM5OTBkMmYyNmRhNmVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuY3Bw
CkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAiSFRNTFBhcnNlcklkaW9tcy5oIgogI2luY2x1
ZGUgIkh5cGhlbmF0aW9uLmgiCiAjaW5jbHVkZSAiSW5saW5lSXRlcmF0b3JMaW5lLmgiCisjaW5j
bHVkZSAiSW5saW5lSXRlcmF0b3JMb2dpY2FsT3JkZXJUcmF2ZXJzYWwuaCIKICNpbmNsdWRlICJJ
bmxpbmVJdGVyYXRvclRleHRCb3guaCIKICNpbmNsdWRlICJJbmxpbmVSdW5BbmRPZmZzZXQuaCIK
ICNpbmNsdWRlICJMYXlvdXRJbnRlZ3JhdGlvbkxpbmVMYXlvdXQuaCIK
</data>

          </attachment>
      

    </bug>

</bugzilla>