<?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>217117</bug_id>
          
          <creation_ts>2020-09-29 19:02:23 -0700</creation_ts>
          <short_desc>Always use OperationPtrTag for all operations and annotate operations in CSS JIT</short_desc>
          <delta_ts>2020-09-30 00:20:24 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>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="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>allan.jensen</cc>
    
    <cc>cdumez</cc>
    
    <cc>dino</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fmalita</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kangil.han</cc>
    
    <cc>keith_miller</cc>
    
    <cc>macpherson</cc>
    
    <cc>mark.lam</cc>
    
    <cc>menard</cc>
    
    <cc>msaboff</cc>
    
    <cc>pdr</cc>
    
    <cc>saam</cc>
    
    <cc>sabouhallawa</cc>
    
    <cc>schenney</cc>
    
    <cc>sergio</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1693280</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-09-29 19:02:23 -0700</bug_when>
    <thetext>Always use OperationPtrTag for all operations and annotate operations in CSS JIT</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1693282</commentid>
    <comment_count>1</comment_count>
      <attachid>410085</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-09-29 19:04:34 -0700</bug_when>
    <thetext>Created attachment 410085
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1693293</commentid>
    <comment_count>2</comment_count>
      <attachid>410085</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2020-09-29 20:08:20 -0700</bug_when>
    <thetext>Comment on attachment 410085
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1693317</commentid>
    <comment_count>3</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-09-30 00:19:52 -0700</bug_when>
    <thetext>Committed r267783: &lt;https://trac.webkit.org/changeset/267783&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1693318</commentid>
    <comment_count>4</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-09-30 00:20:24 -0700</bug_when>
    <thetext>&lt;rdar://problem/69780634&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>410085</attachid>
            <date>2020-09-29 19:04:34 -0700</date>
            <delta_ts>2020-09-29 20:08:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217117-20200929190433.patch</filename>
            <type>text/plain</type>
            <size>107033</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY3NzYwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
MDFlM2U1YmJiYWI4ZjZhNGNmZmY5ZjNhMTdkNjVkZTA3ZGI5MjQxLi4wOWJhMmVhZGZlM2QwNDFh
OGExMWU4ODI5MTk4MzI3MWFmMDVjMWMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw4MiBAQAorMjAyMC0wOS0yOSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIEFsd2F5cyB1c2UgT3BlcmF0aW9uUHRyVGFnIGZvciBhbGwgb3BlcmF0aW9u
cyBhbmQgYW5ub3RhdGUgb3BlcmF0aW9ucyBpbiBDU1MgSklUCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTcxMTcKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGb3IgSklULWNhZ2luZywgd2Ugd291bGQgbGlr
ZSB0byBhbm5vdGF0ZSBhbGwgb3BlcmF0aW9ucyBjb25zaXN0ZW50bHkgd2l0aCBPcGVyYXRpb25Q
dHJUYWcuCisgICAgICAgIFRoaXMgcGF0Y2ggcmVwbGFjZXMgQjNDQ2FsbFB0clRhZyBhbmQgQ1NT
T3BlcmF0aW9uUHRyVGFnIHdpdGggT3BlcmF0aW9uUHRyVGFnIGFuZCBoYW5kbGUgdGhlc2UKKyAg
ICAgICAgb3BlcmF0aW9ucyBhcyBPcGVyYXRpb24gaW4gSklULWNhZ2luZy4KKworICAgICAgICBX
ZSBhbHNvIGNvbGxlY3QgYW5kIGFubm90YXRlIGFsbCB0aGUgb3BlcmF0aW9ucyBjYWxsZWQgaW4g
Q1NTIEpJVCBhbmQgZGVmaW5lIHRoZW0gd2l0aCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04uCisK
KyAgICAgICAgKiBiMy9CM0xvd2VyTWFjcm9zLmNwcDoKKyAgICAgICAgKiBiMy9CM0xvd2VyTWFj
cm9zQWZ0ZXJPcHRpbWl6YXRpb25zLmNwcDoKKyAgICAgICAgKiBiMy9CM01hdGhFeHRyYXMuY3Bw
OgorICAgICAgICAqIGIzL0IzUmVkdWNlTG9vcFN0cmVuZ3RoLmNwcDoKKyAgICAgICAgKEpTQzo6
QjM6OlJlZHVjZUxvb3BTdHJlbmd0aDo6cmVkdWNlQnl0ZUNvcHlMb29wc1RvTWVtY3B5KToKKyAg
ICAgICAgKiBiMy9CM1JlZHVjZVN0cmVuZ3RoLmNwcDoKKyAgICAgICAgKiBiMy9haXIvQWlyQ0Nh
bGxTcGVjaWFsLmNwcDoKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6Q0NhbGxTcGVjaWFsOjpnZW5l
cmF0ZSk6CisgICAgICAgICogYjMvdGVzdGIzXzUuY3BwOgorICAgICAgICAodGVzdENhbGxTaW1w
bGUpOgorICAgICAgICAodGVzdENhbGxSYXJlKToKKyAgICAgICAgKHRlc3RDYWxsUmFyZUxpdmUp
OgorICAgICAgICAodGVzdENhbGxTaW1wbGVQdXJlKToKKyAgICAgICAgKHRlc3RDYWxsRnVuY3Rp
b25XaXRoSGVsbGFBcmd1bWVudHMpOgorICAgICAgICAodGVzdENhbGxGdW5jdGlvbldpdGhIZWxs
YUFyZ3VtZW50czIpOgorICAgICAgICAodGVzdENhbGxGdW5jdGlvbldpdGhIZWxsYUFyZ3VtZW50
czMpOgorICAgICAgICAodGVzdENhbGxTaW1wbGVEb3VibGUpOgorICAgICAgICAodGVzdENhbGxT
aW1wbGVGbG9hdCk6CisgICAgICAgICh0ZXN0Q2FsbEZ1bmN0aW9uV2l0aEhlbGxhRG91YmxlQXJn
dW1lbnRzKToKKyAgICAgICAgKHRlc3RDYWxsRnVuY3Rpb25XaXRoSGVsbGFGbG9hdEFyZ3VtZW50
cyk6CisgICAgICAgICh0ZXN0TGluZWFyU2NhbldpdGhDYWxsZWVPblN0YWNrKToKKyAgICAgICAg
KiBiMy90ZXN0YjNfNi5jcHA6CisgICAgICAgICh0ZXN0SW50ZXJwcmV0ZXIpOgorICAgICAgICAq
IGIzL3Rlc3RiM183LmNwcDoKKyAgICAgICAgKHRlc3RMSUNNUHVyZSk6CisgICAgICAgICh0ZXN0
TElDTVB1cmVTaWRlRXhpdHMpOgorICAgICAgICAodGVzdExJQ01QdXJlV3JpdGVzUGlubmVkKToK
KyAgICAgICAgKHRlc3RMSUNNUHVyZVdyaXRlcyk6CisgICAgICAgICh0ZXN0TElDTVJlYWRzTG9j
YWxTdGF0ZSk6CisgICAgICAgICh0ZXN0TElDTVJlYWRzUGlubmVkKToKKyAgICAgICAgKHRlc3RM
SUNNUmVhZHMpOgorICAgICAgICAodGVzdExJQ01QdXJlTm90QmFja3dhcmRzRG9taW5hbnQpOgor
ICAgICAgICAodGVzdExJQ01QdXJlRm9pbGVkQnlDaGlsZCk6CisgICAgICAgICh0ZXN0TElDTVB1
cmVOb3RCYWNrd2FyZHNEb21pbmFudEZvaWxlZEJ5Q2hpbGQpOgorICAgICAgICAodGVzdExJQ01F
eGl0c1NpZGV3YXlzKToKKyAgICAgICAgKHRlc3RMSUNNV3JpdGVzTG9jYWxTdGF0ZSk6CisgICAg
ICAgICh0ZXN0TElDTVdyaXRlcyk6CisgICAgICAgICh0ZXN0TElDTUZlbmNlKToKKyAgICAgICAg
KHRlc3RMSUNNV3JpdGVzUGlubmVkKToKKyAgICAgICAgKHRlc3RMSUNNQ29udHJvbERlcGVuZGVu
dCk6CisgICAgICAgICh0ZXN0TElDTUNvbnRyb2xEZXBlbmRlbnROb3RCYWNrd2FyZHNEb21pbmFu
dCk6CisgICAgICAgICh0ZXN0TElDTUNvbnRyb2xEZXBlbmRlbnRTaWRlRXhpdHMpOgorICAgICAg
ICAodGVzdExJQ01SZWFkc1Bpbm5lZFdyaXRlc1Bpbm5lZCk6CisgICAgICAgICh0ZXN0TElDTVJl
YWRzV3JpdGVzRGlmZmVyZW50SGVhcHMpOgorICAgICAgICAodGVzdExJQ01SZWFkc1dyaXRlc092
ZXJsYXBwaW5nSGVhcHMpOgorICAgICAgICAodGVzdExJQ01EZWZhdWx0Q2FsbCk6CisgICAgICAg
ICh0ZXN0U2h1ZmZsZURvZXNudFRyYXNoQ2FsbGVlU2F2ZXMpOgorICAgICAgICAqIGZ0bC9GVExP
dXRwdXQuaDoKKyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6OmNhbGxXaXRob3V0U2lkZUVmZmVj
dHMpOgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6b3BlcmF0aW9uKToKKyAgICAgICAgKiBy
dW50aW1lL0pTQ1B0clRhZy5oOgorICAgICAgICAqIHdhc20vV2FzbUFpcklSR2VuZXJhdG9yLmNw
cDoKKyAgICAgICAgKEpTQzo6V2FzbTo6QWlySVJHZW5lcmF0b3I6OmVtaXRDQ2FsbCk6CisgICAg
ICAgICogd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6Oldhc206OkIz
SVJHZW5lcmF0b3I6OmFkZFRhYmxlR2V0KToKKyAgICAgICAgKEpTQzo6V2FzbTo6QjNJUkdlbmVy
YXRvcjo6YWRkVGFibGVTZXQpOgorICAgICAgICAoSlNDOjpXYXNtOjpCM0lSR2VuZXJhdG9yOjph
ZGRSZWZGdW5jKToKKyAgICAgICAgKEpTQzo6V2FzbTo6QjNJUkdlbmVyYXRvcjo6YWRkVGFibGVT
aXplKToKKyAgICAgICAgKEpTQzo6V2FzbTo6QjNJUkdlbmVyYXRvcjo6YWRkVGFibGVHcm93KToK
KyAgICAgICAgKEpTQzo6V2FzbTo6QjNJUkdlbmVyYXRvcjo6YWRkVGFibGVGaWxsKToKKyAgICAg
ICAgKEpTQzo6V2FzbTo6QjNJUkdlbmVyYXRvcjo6YWRkR3Jvd01lbW9yeSk6CisgICAgICAgIChK
U0M6Oldhc206OkIzSVJHZW5lcmF0b3I6OnNldEdsb2JhbCk6CisgICAgICAgIChKU0M6Oldhc206
OkIzSVJHZW5lcmF0b3I6OmVtaXRXcml0ZUJhcnJpZXJGb3JKU1dyYXBwZXIpOgorICAgICAgICAo
SlNDOjpXYXNtOjpCM0lSR2VuZXJhdG9yOjphZGRPcDxPcFR5cGU6OkkzMlBvcGNudD4pOgorICAg
ICAgICAoSlNDOjpXYXNtOjpCM0lSR2VuZXJhdG9yOjphZGRPcDxPcFR5cGU6Okk2NFBvcGNudD4p
OgorCiAyMDIwLTA5LTI5ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAg
ICAgICAgW0pTQ10gQW5ub3RhdGUgSklUIG9wZXJhdGlvbiBmdW5jdGlvbnMgY2FsbGVkIGZyb20g
QjMgZXRjLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCmluZGV4IGM5NzU3MTQ3MTRiN2MzZjlkYjlhZjFmMzljOWQzNGY4OGE2
ZjZjNDIuLmY5NzA5ZjJhNzVkOTE0YzQzYTcyNWUyZGM4OTU5YzI4NTlkMjg4YWQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKQEAgLTEsMyArMSw2MyBAQAorMjAyMC0wOS0yOSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lA
YXBwbGUuY29tPgorCisgICAgICAgIEFsd2F5cyB1c2UgT3BlcmF0aW9uUHRyVGFnIGZvciBhbGwg
b3BlcmF0aW9ucyBhbmQgYW5ub3RhdGUgb3BlcmF0aW9ucyBpbiBDU1MgSklUCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTcxMTcKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGNzcy9TZWxlY3RvckNoZWNr
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aXNGcmFtZUZvY3VzZWQpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6ZG9lc1NoYWRvd1RyZWVDb250YWluRm9jdXNlZEVsZW1lbnQpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JDaGVja2VyOjptYXRjaGVzRm9jdXNQc2V1
ZG9DbGFzcyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTZWxlY3RvckNoZWNrZXI6Om1h
dGNoZXNEaXJlY3RGb2N1c1BzZXVkb0NsYXNzKTogRGVsZXRlZC4KKyAgICAgICAgKiBjc3MvU2Vs
ZWN0b3JDaGVja2VyLmg6CisgICAgICAgICogY3NzL1NlbGVjdG9yQ2hlY2tlclRlc3RGdW5jdGlv
bnMuaDoKKyAgICAgICAgKFdlYkNvcmU6OmlzRnJhbWVGb2N1c2VkKToKKyAgICAgICAgKFdlYkNv
cmU6Om1hdGNoZXNEaXJlY3RGb2N1c1BzZXVkb0NsYXNzKToKKyAgICAgICAgKFdlYkNvcmU6OmRv
ZXNTaGFkb3dUcmVlQ29udGFpbkZvY3VzZWRFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6Om1h
dGNoZXNGb2N1c1BzZXVkb0NsYXNzKToKKyAgICAgICAgKiBjc3NqaXQvQ1NTUHRyVGFnLmg6Cisg
ICAgICAgICogY3Nzaml0L0Z1bmN0aW9uQ2FsbC5oOgorICAgICAgICAoV2ViQ29yZTo6RnVuY3Rp
b25DYWxsOjpGdW5jdGlvbkNhbGwpOgorICAgICAgICAoV2ViQ29yZTo6RnVuY3Rpb25DYWxsOjpz
ZXRGdW5jdGlvbkFkZHJlc3MpOgorICAgICAgICAoV2ViQ29yZTo6RnVuY3Rpb25DYWxsOjpwcmVw
YXJlQW5kQ2FsbCk6CisgICAgICAgICogY3Nzaml0L1NlbGVjdG9yQ29tcGlsZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U2VsZWN0b3JDb21waWxlcjo6SlNDX0RFRklORV9KSVRfT1BFUkFUSU9O
KToKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdG9yQ29tcGlsZXI6OmFkZFBzZXVkb0NsYXNzVHlw
ZSk6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3RvckNvbXBpbGVyOjpTZWxlY3RvckNvZGVHZW5l
cmF0b3I6OmdlbmVyYXRlQWRkU3R5bGVSZWxhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTZWxl
Y3RvckNvbXBpbGVyOjpTZWxlY3RvckNvZGVHZW5lcmF0b3I6Om1vZHVsbyk6CisgICAgICAgIChX
ZWJDb3JlOjpTZWxlY3RvckNvbXBpbGVyOjpTZWxlY3RvckNvZGVHZW5lcmF0b3I6OmdlbmVyYXRl
RWxlbWVudE1hdGNoaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdG9yQ29tcGlsZXI6OlNl
bGVjdG9yQ29kZUdlbmVyYXRvcjo6Z2VuZXJhdGVTeW5jaHJvbml6ZVN0eWxlQXR0cmlidXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdG9yQ29tcGlsZXI6OlNlbGVjdG9yQ29kZUdlbmVyYXRv
cjo6Z2VuZXJhdGVTeW5jaHJvbml6ZUFsbEFuaW1hdGVkU1ZHQXR0cmlidXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OlNlbGVjdG9yQ29tcGlsZXI6OmF0dHJpYnV0ZVZhbHVlU3BhY2VTZXBhcmF0ZWRM
aXN0Q29udGFpbnMpOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JDb21waWxlcjo6U2VsZWN0
b3JDb2RlR2VuZXJhdG9yOjpnZW5lcmF0ZUVsZW1lbnRBdHRyaWJ1dGVWYWx1ZU1hdGNoaW5nKToK
KyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdG9yQ29tcGlsZXI6OlNlbGVjdG9yQ29kZUdlbmVyYXRv
cjo6Z2VuZXJhdGVFbGVtZW50QXR0cmlidXRlVmFsdWVFeGFjdE1hdGNoaW5nKToKKyAgICAgICAg
KFdlYkNvcmU6OlNlbGVjdG9yQ29tcGlsZXI6OlNlbGVjdG9yQ29kZUdlbmVyYXRvcjo6Z2VuZXJh
dGVFbGVtZW50QXR0cmlidXRlRnVuY3Rpb25DYWxsVmFsdWVNYXRjaGluZyk6CisgICAgICAgIChX
ZWJDb3JlOjpTZWxlY3RvckNvbXBpbGVyOjpTZWxlY3RvckNvZGVHZW5lcmF0b3I6OmdlbmVyYXRl
RWxlbWVudEZ1bmN0aW9uQ2FsbFRlc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JDb21w
aWxlcjo6U2VsZWN0b3JDb2RlR2VuZXJhdG9yOjpnZW5lcmF0ZUVsZW1lbnRJc0FjdGl2ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpTZWxlY3RvckNvbXBpbGVyOjpTZWxlY3RvckNvZGVHZW5lcmF0b3I6
OmdlbmVyYXRlRWxlbWVudElzSG92ZXJlZCk6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3RvckNv
bXBpbGVyOjpTZWxlY3RvckNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlRWxlbWVudElzSW5MYW5ndWFn
ZSk6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3RvckNvbXBpbGVyOjpTZWxlY3RvckNvZGVHZW5l
cmF0b3I6OmdlbmVyYXRlRWxlbWVudEhhc1BsYWNlaG9sZGVyU2hvd24pOgorICAgICAgICAoV2Vi
Q29yZTo6U2VsZWN0b3JDb21waWxlcjo6U2VsZWN0b3JGcmFnbWVudDo6YXBwZW5kVW5vcHRpbWl6
ZWRQc2V1ZG9DbGFzc1dpdGhDb250ZXh0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNl
bGVjdG9yQ29tcGlsZXI6OmFkZFN0eWxlUmVsYXRpb25GdW5jdGlvbik6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpTZWxlY3RvckNvbXBpbGVyOjptb2R1bG9IZWxwZXIpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JDb21waWxlcjo6YXR0cmlidXRlVmFsdWVTcGFjZVNl
cGFyZXRlZExpc3RDb250YWlucyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTZWxlY3Rv
ckNvbXBpbGVyOjpTZWxlY3RvckNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlQ29udGV4dEZ1bmN0aW9u
Q2FsbFRlc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JDb21waWxlcjo6
ZWxlbWVudElzQWN0aXZlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdG9yQ29t
cGlsZXI6OmVsZW1lbnRJc0hvdmVyZWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U2Vs
ZWN0b3JDb21waWxlcjo6bWFrZUNvbnRleHRTdHlsZVVuaXF1ZUlmTmVjZXNzYXJ5QW5kVGVzdElz
UGxhY2Vob2xkZXJTaG93bik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTZWxlY3RvckNv
bXBpbGVyOjppc1BsYWNlaG9sZGVyU2hvd24pOiBEZWxldGVkLgorICAgICAgICAqIGRvbS9TdHls
ZWRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlZEVsZW1lbnQ6OnN5bmNocm9u
aXplU3R5bGVBdHRyaWJ1dGVJbnRlcm5hbEltcGwpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVk
RWxlbWVudDo6c3luY2hyb25pemVTdHlsZUF0dHJpYnV0ZUludGVybmFsKTogRGVsZXRlZC4KKyAg
ICAgICAgKiBkb20vU3R5bGVkRWxlbWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVkRWxl
bWVudDo6c3luY2hyb25pemVTdHlsZUF0dHJpYnV0ZUludGVybmFsIGNvbnN0KToKKyAgICAgICAg
KiBzdHlsZS9FbGVtZW50UnVsZUNvbGxlY3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHls
ZTo6RWxlbWVudFJ1bGVDb2xsZWN0b3I6OmNvbGxlY3RNYXRjaGluZ1J1bGVzKToKKyAgICAgICAg
KiBzdmcvU1ZHRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbGVtZW50OjpzeW5j
aHJvbml6ZUFsbEFuaW1hdGVkU1ZHQXR0cmlidXRlKTogRGVsZXRlZC4KKyAgICAgICAgKiBzdmcv
U1ZHRWxlbWVudC5oOgorCiAyMDIwLTA5LTI5ICBBZGl0eWEgS2VlcnRoaSAgPGFrZWVydGhpQGFw
cGxlLmNvbT4KIAogICAgICAgICBbbWFjQ2F0YWx5c3RdIEZvY3VzIHJpbmdzIGFyZSBub3QgcGFp
bnRlZApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJNYWNyb3Mu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJNYWNyb3MuY3BwCmluZGV4IDdl
NTE1ZDQ2MDFjMzg0MjFmMDMyYWI3ZGQ0MGQ5YzBiYzg0YzEyNWQuLmE2NjFhMzg3MDYwZTZmN2Yz
NmRiNjViZTAwOWZkYjIwZDE0MTNmMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9CM0xvd2VyTWFjcm9zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNM
b3dlck1hY3Jvcy5jcHAKQEAgLTEyOCw3ICsxMjgsNyBAQCBjbGFzcyBMb3dlck1hY3JvcyB7CiAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIGlmICht
X3ZhbHVlLT50eXBlKCkgPT0gRG91YmxlKSB7Ci0gICAgICAgICAgICAgICAgICAgIFZhbHVlKiBm
dW5jdGlvbkFkZHJlc3MgPSBtX2luc2VydGlvblNldC5pbnNlcnQ8Q29uc3RQdHJWYWx1ZT4obV9p
bmRleCwgbV9vcmlnaW4sIHRhZ0NGdW5jdGlvbjxCM0NDYWxsUHRyVGFnPihNYXRoOjpmbW9kRG91
YmxlKSk7CisgICAgICAgICAgICAgICAgICAgIFZhbHVlKiBmdW5jdGlvbkFkZHJlc3MgPSBtX2lu
c2VydGlvblNldC5pbnNlcnQ8Q29uc3RQdHJWYWx1ZT4obV9pbmRleCwgbV9vcmlnaW4sIHRhZ0NG
dW5jdGlvbjxPcGVyYXRpb25QdHJUYWc+KE1hdGg6OmZtb2REb3VibGUpKTsKICAgICAgICAgICAg
ICAgICAgICAgVmFsdWUqIHJlc3VsdCA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydDxDQ2FsbFZhbHVl
PihtX2luZGV4LCBEb3VibGUsIG1fb3JpZ2luLAogICAgICAgICAgICAgICAgICAgICAgICAgRWZm
ZWN0czo6bm9uZSgpLAogICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb25BZGRyZXNzLApA
QCAtMTM5LDcgKzEzOSw3IEBAIGNsYXNzIExvd2VyTWFjcm9zIHsKICAgICAgICAgICAgICAgICB9
IGVsc2UgaWYgKG1fdmFsdWUtPnR5cGUoKSA9PSBGbG9hdCkgewogICAgICAgICAgICAgICAgICAg
ICBWYWx1ZSogbnVtZXJhdG9yQXNEb3VibGUgPSBtX2luc2VydGlvblNldC5pbnNlcnQ8VmFsdWU+
KG1faW5kZXgsIEZsb2F0VG9Eb3VibGUsIG1fb3JpZ2luLCBtX3ZhbHVlLT5jaGlsZCgwKSk7CiAg
ICAgICAgICAgICAgICAgICAgIFZhbHVlKiBkZW5vbWluYXRvckFzRG91YmxlID0gbV9pbnNlcnRp
b25TZXQuaW5zZXJ0PFZhbHVlPihtX2luZGV4LCBGbG9hdFRvRG91YmxlLCBtX29yaWdpbiwgbV92
YWx1ZS0+Y2hpbGQoMSkpOwotICAgICAgICAgICAgICAgICAgICBWYWx1ZSogZnVuY3Rpb25BZGRy
ZXNzID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0PENvbnN0UHRyVmFsdWU+KG1faW5kZXgsIG1fb3Jp
Z2luLCB0YWdDRnVuY3Rpb248QjNDQ2FsbFB0clRhZz4oTWF0aDo6Zm1vZERvdWJsZSkpOworICAg
ICAgICAgICAgICAgICAgICBWYWx1ZSogZnVuY3Rpb25BZGRyZXNzID0gbV9pbnNlcnRpb25TZXQu
aW5zZXJ0PENvbnN0UHRyVmFsdWU+KG1faW5kZXgsIG1fb3JpZ2luLCB0YWdDRnVuY3Rpb248T3Bl
cmF0aW9uUHRyVGFnPihNYXRoOjpmbW9kRG91YmxlKSk7CiAgICAgICAgICAgICAgICAgICAgIFZh
bHVlKiBkb3VibGVNb2QgPSBtX2luc2VydGlvblNldC5pbnNlcnQ8Q0NhbGxWYWx1ZT4obV9pbmRl
eCwgRG91YmxlLCBtX29yaWdpbiwKICAgICAgICAgICAgICAgICAgICAgICAgIEVmZmVjdHM6Om5v
bmUoKSwKICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uQWRkcmVzcywKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyTWFjcm9zQWZ0ZXJPcHRpbWl6YXRp
b25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyTWFjcm9zQWZ0ZXJPcHRp
bWl6YXRpb25zLmNwcAppbmRleCBiNmY3MjcwMTZiMzNhMmU3ZGU1YTY3M2FiYjkxNDMxMzQ5YTM0
YzY4Li4xYmMzYTYwMDYxMDUxODZhMGEyNDIxM2NhNTAwNGE3MGRiYTQ5ZGUwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlck1hY3Jvc0FmdGVyT3B0aW1pemF0aW9u
cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJNYWNyb3NBZnRlck9w
dGltaXphdGlvbnMuY3BwCkBAIC05OCw5ICs5OCw5IEBAIGNsYXNzIExvd2VyTWFjcm9zQWZ0ZXJP
cHRpbWl6YXRpb25zIHsKIAogICAgICAgICAgICAgICAgIFZhbHVlKiBmdW5jdGlvbkFkZHJlc3Mg
PSBudWxscHRyOwogICAgICAgICAgICAgICAgIGlmIChtX3ZhbHVlLT50eXBlKCkgPT0gRG91Ymxl
KQotICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbkFkZHJlc3MgPSBtX2luc2VydGlvblNldC5p
bnNlcnQ8Q29uc3RQdHJWYWx1ZT4obV9pbmRleCwgbV9vcmlnaW4sIHRhZ0NGdW5jdGlvbjxCM0ND
YWxsUHRyVGFnPihNYXRoOjpjZWlsRG91YmxlKSk7CisgICAgICAgICAgICAgICAgICAgIGZ1bmN0
aW9uQWRkcmVzcyA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydDxDb25zdFB0clZhbHVlPihtX2luZGV4
LCBtX29yaWdpbiwgdGFnQ0Z1bmN0aW9uPE9wZXJhdGlvblB0clRhZz4oTWF0aDo6Y2VpbERvdWJs
ZSkpOwogICAgICAgICAgICAgICAgIGVsc2UgaWYgKG1fdmFsdWUtPnR5cGUoKSA9PSBGbG9hdCkK
LSAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb25BZGRyZXNzID0gbV9pbnNlcnRpb25TZXQuaW5z
ZXJ0PENvbnN0UHRyVmFsdWU+KG1faW5kZXgsIG1fb3JpZ2luLCB0YWdDRnVuY3Rpb248QjNDQ2Fs
bFB0clRhZz4oTWF0aDo6Y2VpbEZsb2F0KSk7CisgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9u
QWRkcmVzcyA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydDxDb25zdFB0clZhbHVlPihtX2luZGV4LCBt
X29yaWdpbiwgdGFnQ0Z1bmN0aW9uPE9wZXJhdGlvblB0clRhZz4oTWF0aDo6Y2VpbEZsb2F0KSk7
CiAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VS
VF9OT1RfUkVBQ0hFRCgpOwogCkBAIC0xMTksOSArMTE5LDkgQEAgY2xhc3MgTG93ZXJNYWNyb3NB
ZnRlck9wdGltaXphdGlvbnMgewogCiAgICAgICAgICAgICAgICAgVmFsdWUqIGZ1bmN0aW9uQWRk
cmVzcyA9IG51bGxwdHI7CiAgICAgICAgICAgICAgICAgaWYgKG1fdmFsdWUtPnR5cGUoKSA9PSBE
b3VibGUpCi0gICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uQWRkcmVzcyA9IG1faW5zZXJ0aW9u
U2V0Lmluc2VydDxDb25zdFB0clZhbHVlPihtX2luZGV4LCBtX29yaWdpbiwgdGFnQ0Z1bmN0aW9u
PEIzQ0NhbGxQdHJUYWc+KE1hdGg6OmZsb29yRG91YmxlKSk7CisgICAgICAgICAgICAgICAgICAg
IGZ1bmN0aW9uQWRkcmVzcyA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydDxDb25zdFB0clZhbHVlPiht
X2luZGV4LCBtX29yaWdpbiwgdGFnQ0Z1bmN0aW9uPE9wZXJhdGlvblB0clRhZz4oTWF0aDo6Zmxv
b3JEb3VibGUpKTsKICAgICAgICAgICAgICAgICBlbHNlIGlmIChtX3ZhbHVlLT50eXBlKCkgPT0g
RmxvYXQpCi0gICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uQWRkcmVzcyA9IG1faW5zZXJ0aW9u
U2V0Lmluc2VydDxDb25zdFB0clZhbHVlPihtX2luZGV4LCBtX29yaWdpbiwgdGFnQ0Z1bmN0aW9u
PEIzQ0NhbGxQdHJUYWc+KE1hdGg6OmZsb29yRmxvYXQpKTsKKyAgICAgICAgICAgICAgICAgICAg
ZnVuY3Rpb25BZGRyZXNzID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0PENvbnN0UHRyVmFsdWU+KG1f
aW5kZXgsIG1fb3JpZ2luLCB0YWdDRnVuY3Rpb248T3BlcmF0aW9uUHRyVGFnPihNYXRoOjpmbG9v
ckZsb2F0KSk7CiAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICBSRUxF
QVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvQjNNYXRoRXh0cmFzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM01h
dGhFeHRyYXMuY3BwCmluZGV4IDY5MDc0MzExYzlmZDY3ZjZlYTlkNjEyNmY3YTJkZmIwNDAzOGZk
ZDkuLjU4ZGJkNGZmN2VhNTFlN2VlMmQyYjkwZDJlMjFlNGIwZDI2MDAwMzEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM01hdGhFeHRyYXMuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9CM01hdGhFeHRyYXMuY3BwCkBAIC01OSw3ICs1OSw3IEBAIHN0ZDo6
cGFpcjxCYXNpY0Jsb2NrKiwgVmFsdWUqPiBwb3dEb3VibGVJbnQzMihQcm9jZWR1cmUmIHByb2Nl
ZHVyZSwgQmFzaWNCbG9jayoKICAgICBWYWx1ZSogeUFzRG91YmxlID0gZnVuY3Rpb25DYWxsQ2Fz
ZS0+YXBwZW5kTmV3PFZhbHVlPihwcm9jZWR1cmUsIElUb0QsIG9yaWdpbiwgeSk7CiAgICAgVmFs
dWUqIHBvd1Jlc3VsdCA9IGZ1bmN0aW9uQ2FsbENhc2UtPmFwcGVuZE5ldzxDQ2FsbFZhbHVlPigK
ICAgICAgICAgcHJvY2VkdXJlLCBEb3VibGUsIG9yaWdpbiwKLSAgICAgICAgZnVuY3Rpb25DYWxs
Q2FzZS0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2NlZHVyZSwgb3JpZ2luLCBiaXR3aXNl
X2Nhc3Q8dm9pZCo+KHRhZ0NGdW5jdGlvbjxCM0NDYWxsUHRyVGFnPihNYXRoOjpzdGRQb3dEb3Vi
bGUpKSksCisgICAgICAgIGZ1bmN0aW9uQ2FsbENhc2UtPmFwcGVuZE5ldzxDb25zdFB0clZhbHVl
Pihwcm9jZWR1cmUsIG9yaWdpbiwgYml0d2lzZV9jYXN0PHZvaWQqPih0YWdDRnVuY3Rpb248T3Bl
cmF0aW9uUHRyVGFnPihNYXRoOjpzdGRQb3dEb3VibGUpKSksCiAgICAgICAgIHgsIHlBc0RvdWJs
ZSk7CiAgICAgVXBzaWxvblZhbHVlKiBwb3dSZXN1bHRVcHNpbG9uID0gZnVuY3Rpb25DYWxsQ2Fz
ZS0+YXBwZW5kTmV3PFVwc2lsb25WYWx1ZT4ocHJvY2VkdXJlLCBvcmlnaW4sIHBvd1Jlc3VsdCk7
CiAgICAgZnVuY3Rpb25DYWxsQ2FzZS0+YXBwZW5kTmV3PFZhbHVlPihwcm9jZWR1cmUsIEp1bXAs
IG9yaWdpbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNSZWR1Y2VM
b29wU3RyZW5ndGguY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUmVkdWNlTG9vcFN0
cmVuZ3RoLmNwcAppbmRleCBjYTJkMDQzYzNmYTQ3NjY3NWZlNWM2ZTMzOTBmMDQyZDc4N2ViN2Zl
Li5jNzk3Y2Q2YzI2YzgxZTU5NjdmNGU2MjZmNzI4Mzc3Njk0NGZlNzNhIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNSZWR1Y2VMb29wU3RyZW5ndGguY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1JlZHVjZUxvb3BTdHJlbmd0aC5jcHAKQEAgLTM1MSw3
ICszNTEsNyBAQCBjbGFzcyBSZWR1Y2VMb29wU3RyZW5ndGggewogCiAgICAgICAgIEVmZmVjdHMg
ZWZmZWN0cyA9IEVmZmVjdHM6OmZvckNhbGwoKTsKICAgICAgICAgbWVtY3B5LT5hcHBlbmROZXc8
Q0NhbGxWYWx1ZT4obV9wcm9jLCBCMzo6Vm9pZCwgb3JpZ2luLCBlZmZlY3RzLAotICAgICAgICAg
ICAgbWVtY3B5LT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4obV9wcm9jLCBvcmlnaW4sIHRhZ0NG
dW5jdGlvbjxCM0NDYWxsUHRyVGFnPihvcGVyYXRpb25GYXN0Rm9yd2FyZENvcHkzMikpLAorICAg
ICAgICAgICAgbWVtY3B5LT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4obV9wcm9jLCBvcmlnaW4s
IHRhZ0NGdW5jdGlvbjxPcGVyYXRpb25QdHJUYWc+KG9wZXJhdGlvbkZhc3RGb3J3YXJkQ29weTMy
KSksCiAgICAgICAgICAgICBkZXN0aW5hdGlvbi0+YXBwZW5kQWRkcihtX3Byb2MsIG1lbWNweSwg
ZGVzdGluYXRpb24tPmFycmF5QmFzZSksCiAgICAgICAgICAgICBzb3VyY2UtPmFwcGVuZEFkZHIo
bV9wcm9jLCBtZW1jcHksIHNvdXJjZS0+YXJyYXlCYXNlKSwKICAgICAgICAgICAgIGxvb3BCb3Vu
ZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNSZWR1Y2VTdHJlbmd0
aC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNSZWR1Y2VTdHJlbmd0aC5jcHAKaW5k
ZXggMDJlNTJlNjQ4ZTY4ZDVhMGYxNWVlNDljOGRmNjBlMjU3N2RmOGY2MS4uOTFjOWRmMzg5OGEw
ZGIzNzZmYmEyMzEwYzE5MjYxYzY1Y2U2ZDI2OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL0IzUmVkdWNlU3RyZW5ndGguY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9CM1JlZHVjZVN0cmVuZ3RoLmNwcApAQCAtMTgxNCw3ICsxODE0LDcgQEAgY2xhc3MgUmVk
dWNlU3RyZW5ndGggewogICAgICAgICAgICAgLy8gSW50byB0aGlzOiBmY2FsbC1jb25zdGFudChj
b25zdGFudDEsIGNvbnN0YW50MikKICAgICAgICAgICAgIGlmIChtX3ZhbHVlLT50eXBlKCkgPT0g
RG91YmxlCiAgICAgICAgICAgICAgICAgJiYgbV92YWx1ZS0+bnVtQ2hpbGRyZW4oKSA9PSAzCi0g
ICAgICAgICAgICAgICAgJiYgbV92YWx1ZS0+Y2hpbGQoMCktPmlzSW50UHRyKHJlaW50ZXJwcmV0
X2Nhc3Q8aW50cHRyX3Q+KHRhZ0NGdW5jdGlvbjxCM0NDYWxsUHRyVGFnPihNYXRoOjpmbW9kRG91
YmxlKSkpCisgICAgICAgICAgICAgICAgJiYgbV92YWx1ZS0+Y2hpbGQoMCktPmlzSW50UHRyKHJl
aW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KHRhZ0NGdW5jdGlvbjxPcGVyYXRpb25QdHJUYWc+KE1h
dGg6OmZtb2REb3VibGUpKSkKICAgICAgICAgICAgICAgICAmJiBtX3ZhbHVlLT5jaGlsZCgxKS0+
dHlwZSgpID09IERvdWJsZQogICAgICAgICAgICAgICAgICYmIG1fdmFsdWUtPmNoaWxkKDIpLT50
eXBlKCkgPT0gRG91YmxlKSB7CiAgICAgICAgICAgICAgICAgcmVwbGFjZVdpdGhOZXdWYWx1ZSht
X3ZhbHVlLT5jaGlsZCgxKS0+bW9kQ29uc3RhbnQobV9wcm9jLCBtX3ZhbHVlLT5jaGlsZCgyKSkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJDQ2FsbFNwZWNp
YWwuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJDQ2FsbFNwZWNpYWwuY3Bw
CmluZGV4IDYxOTE5NWJiNzBlYTZmYzAwMjc3OTZhNDBlNzI2OGIwNTVmYTIwOTQuLjhmZTBhYWU5
N2I0NWJlYTM0NTljNzg3NjZlZmQ5ZDMxYTBmMDVhN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9haXIvQWlyQ0NhbGxTcGVjaWFsLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvYWlyL0FpckNDYWxsU3BlY2lhbC5jcHAKQEAgLTEzNiwxNCArMTM2LDE0IEBA
IENDYWxsSGVscGVyczo6SnVtcCBDQ2FsbFNwZWNpYWw6OmdlbmVyYXRlKEluc3QmIGluc3QsIEND
YWxsSGVscGVycyYgaml0LCBHZW5lcmF0CiAgICAgY2FzZSBBcmc6OkltbToKICAgICBjYXNlIEFy
Zzo6QmlnSW1tOgogICAgICAgICBqaXQubW92ZShpbnN0LmFyZ3NbY2FsbGVlQXJnT2Zmc2V0XS5h
c1RydXN0ZWRJbW1QdHIoKSwgc2NyYXRjaFJlZ2lzdGVyKTsKLSAgICAgICAgaml0LmNhbGwoc2Ny
YXRjaFJlZ2lzdGVyLCBCM0NDYWxsUHRyVGFnKTsKKyAgICAgICAgaml0LmNhbGwoc2NyYXRjaFJl
Z2lzdGVyLCBPcGVyYXRpb25QdHJUYWcpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEFyZzo6
VG1wOgotICAgICAgICBqaXQuY2FsbChpbnN0LmFyZ3NbY2FsbGVlQXJnT2Zmc2V0XS5ncHIoKSwg
QjNDQ2FsbFB0clRhZyk7CisgICAgICAgIGppdC5jYWxsKGluc3QuYXJnc1tjYWxsZWVBcmdPZmZz
ZXRdLmdwcigpLCBPcGVyYXRpb25QdHJUYWcpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEFy
Zzo6QWRkcjoKICAgICBjYXNlIEFyZzo6RXh0ZW5kZWRPZmZzZXRBZGRyOgotICAgICAgICBqaXQu
Y2FsbChpbnN0LmFyZ3NbY2FsbGVlQXJnT2Zmc2V0XS5hc0FkZHJlc3MoKSwgQjNDQ2FsbFB0clRh
Zyk7CisgICAgICAgIGppdC5jYWxsKGluc3QuYXJnc1tjYWxsZWVBcmdPZmZzZXRdLmFzQWRkcmVz
cygpLCBPcGVyYXRpb25QdHJUYWcpOwogICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgogICAg
ICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL3Rlc3RiM181LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90
ZXN0YjNfNS5jcHAKaW5kZXggZWQ0ZjgxMTZiZmU5YWIxNDdhY2Y3ZmU0YjgyNTY5MzQ2OGQxN2Mz
Yy4uZDRkN2MzOTA2ZTY1NjBiOTEyZDhmZDI0ZTQxZjA2ZmUyMDY5MGY5YiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiM181LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvdGVzdGIzXzUuY3BwCkBAIC0xOTQ4LDcgKzE5NDgsNyBAQCB2b2lkIHRlc3RD
YWxsU2ltcGxlKGludCBhLCBpbnQgYikKICAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwK
ICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENDYWxsVmFsdWU+KAogICAgICAgICAgICAgcHJvYywg
SW50MzIsIE9yaWdpbigpLAotICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0UHRyVmFs
dWU+KHByb2MsIE9yaWdpbigpLCB0YWdDRnVuY3Rpb248QjNDQ2FsbFB0clRhZz4oc2ltcGxlRnVu
Y3Rpb24pKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9j
LCBPcmlnaW4oKSwgdGFnQ0Z1bmN0aW9uPE9wZXJhdGlvblB0clRhZz4oc2ltcGxlRnVuY3Rpb24p
KSwKICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBP
cmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSwKICAgICAgICAgICAgIHJvb3QtPmFwcGVu
ZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRH
UFIxKSkpOwogCkBAIC0xOTc1LDcgKzE5NzUsNyBAQCB2b2lkIHRlc3RDYWxsUmFyZShpbnQgYSwg
aW50IGIpCiAgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCiAgICAgICAgIHJhcmUtPmFw
cGVuZE5ldzxDQ2FsbFZhbHVlPigKICAgICAgICAgICAgIHByb2MsIEludDMyLCBPcmlnaW4oKSwK
LSAgICAgICAgICAgIHJhcmUtPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBPcmlnaW4o
KSwgdGFnQ0Z1bmN0aW9uPEIzQ0NhbGxQdHJUYWc+KHNpbXBsZUZ1bmN0aW9uKSksCisgICAgICAg
ICAgICByYXJlLT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIHRhZ0NG
dW5jdGlvbjxPcGVyYXRpb25QdHJUYWc+KHNpbXBsZUZ1bmN0aW9uKSksCiAgICAgICAgICAgICBy
YXJlLT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86
OmFyZ3VtZW50R1BSMSksCiAgICAgICAgICAgICByYXJlLT5hcHBlbmROZXc8QXJndW1lbnRSZWdW
YWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMikpKTsKIApAQCAtMjAw
NCw3ICsyMDA0LDcgQEAgdm9pZCB0ZXN0Q2FsbFJhcmVMaXZlKGludCBhLCBpbnQgYiwgaW50IGMp
CiAgICAgICAgICAgICBwcm9jLCBBZGQsIE9yaWdpbigpLAogICAgICAgICAgICAgcmFyZS0+YXBw
ZW5kTmV3PENDYWxsVmFsdWU+KAogICAgICAgICAgICAgICAgIHByb2MsIEludDMyLCBPcmlnaW4o
KSwKLSAgICAgICAgICAgICAgICByYXJlLT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywg
T3JpZ2luKCksIHRhZ0NGdW5jdGlvbjxCM0NDYWxsUHRyVGFnPihzaW1wbGVGdW5jdGlvbikpLAor
ICAgICAgICAgICAgICAgIHJhcmUtPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBPcmln
aW4oKSwgdGFnQ0Z1bmN0aW9uPE9wZXJhdGlvblB0clRhZz4oc2ltcGxlRnVuY3Rpb24pKSwKICAg
ICAgICAgICAgICAgICByYXJlLT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3Jp
Z2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSksCiAgICAgICAgICAgICAgICAgcmFyZS0+YXBw
ZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVu
dEdQUjIpKSwKICAgICAgICAgICAgIHJhcmUtPmFwcGVuZE5ldzxWYWx1ZT4oCkBAIC0yMDIyLDcg
KzIwMjIsNyBAQCB2b2lkIHRlc3RDYWxsU2ltcGxlUHVyZShpbnQgYSwgaW50IGIpCiAgICAgICAg
IHByb2MsIFJldHVybiwgT3JpZ2luKCksCiAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDQ2FsbFZh
bHVlPigKICAgICAgICAgICAgIHByb2MsIEludDMyLCBPcmlnaW4oKSwgRWZmZWN0czo6bm9uZSgp
LAotICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdp
bigpLCB0YWdDRnVuY3Rpb248QjNDQ2FsbFB0clRhZz4oc2ltcGxlRnVuY3Rpb24pKSwKKyAgICAg
ICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBPcmlnaW4oKSwgdGFn
Q0Z1bmN0aW9uPE9wZXJhdGlvblB0clRhZz4oc2ltcGxlRnVuY3Rpb24pKSwKICAgICAgICAgICAg
IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5m
bzo6YXJndW1lbnRHUFIwKSwKICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJl
Z1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKSkpOwogCkBAIC0y
MDQ1LDcgKzIwNDUsNyBAQCB2b2lkIHRlc3RDYWxsRnVuY3Rpb25XaXRoSGVsbGFBcmd1bWVudHMo
KQogCiAgICAgQ0NhbGxWYWx1ZSogY2FsbCA9IHJvb3QtPmFwcGVuZE5ldzxDQ2FsbFZhbHVlPigK
ICAgICAgICAgcHJvYywgSW50MzIsIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8
Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIHRhZ0NGdW5jdGlvbjxCM0NDYWxsUHRyVGFn
PihmdW5jdGlvbldpdGhIZWxsYUFyZ3VtZW50cykpKTsKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3
PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCB0YWdDRnVuY3Rpb248T3BlcmF0aW9uUHRy
VGFnPihmdW5jdGlvbldpdGhIZWxsYUFyZ3VtZW50cykpKTsKICAgICBjYWxsLT5hcHBlbmRBcmdz
KGFyZ3MpOwogCiAgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwg
T3JpZ2luKCksIGNhbGwpOwpAQCAtMjA3MSw3ICsyMDcxLDcgQEAgdm9pZCB0ZXN0Q2FsbEZ1bmN0
aW9uV2l0aEhlbGxhQXJndW1lbnRzMigpCiAKICAgICBDQ2FsbFZhbHVlKiBjYWxsID0gcm9vdC0+
YXBwZW5kTmV3PENDYWxsVmFsdWU+KAogICAgICAgICBwcm9jLCBJbnQ2NCwgT3JpZ2luKCksCi0g
ICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBPcmlnaW4oKSwgdGFn
Q0Z1bmN0aW9uPEIzQ0NhbGxQdHJUYWc+KGZ1bmN0aW9uV2l0aEhlbGxhQXJndW1lbnRzMikpKTsK
KyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCB0
YWdDRnVuY3Rpb248T3BlcmF0aW9uUHRyVGFnPihmdW5jdGlvbldpdGhIZWxsYUFyZ3VtZW50czIp
KSk7CiAgICAgY2FsbC0+YXBwZW5kQXJncyhhcmdzKTsKIAogICAgIHJvb3QtPmFwcGVuZE5ld0Nv
bnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCBjYWxsKTsKQEAgLTIwOTMsNyArMjA5
Myw3IEBAIHZvaWQgdGVzdENhbGxGdW5jdGlvbldpdGhIZWxsYUFyZ3VtZW50czMoKQogCiAgICAg
Q0NhbGxWYWx1ZSogY2FsbCA9IHJvb3QtPmFwcGVuZE5ldzxDQ2FsbFZhbHVlPigKICAgICAgICAg
cHJvYywgSW50MzIsIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3RQdHJW
YWx1ZT4ocHJvYywgT3JpZ2luKCksIHRhZ0NGdW5jdGlvbjxCM0NDYWxsUHRyVGFnPihmdW5jdGlv
bldpdGhIZWxsYUFyZ3VtZW50czMpKSk7CisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdFB0
clZhbHVlPihwcm9jLCBPcmlnaW4oKSwgdGFnQ0Z1bmN0aW9uPE9wZXJhdGlvblB0clRhZz4oZnVu
Y3Rpb25XaXRoSGVsbGFBcmd1bWVudHMzKSkpOwogICAgIGNhbGwtPmFwcGVuZEFyZ3MoYXJncyk7
CiAKICAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4o
KSwgY2FsbCk7CkBAIC0yMTQ0LDcgKzIxNDQsNyBAQCB2b2lkIHRlc3RDYWxsU2ltcGxlRG91Ymxl
KGRvdWJsZSBhLCBkb3VibGUgYikKICAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKICAg
ICAgICAgcm9vdC0+YXBwZW5kTmV3PENDYWxsVmFsdWU+KAogICAgICAgICAgICAgcHJvYywgRG91
YmxlLCBPcmlnaW4oKSwKLSAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdFB0clZhbHVl
Pihwcm9jLCBPcmlnaW4oKSwgdGFnQ0Z1bmN0aW9uPEIzQ0NhbGxQdHJUYWc+KHNpbXBsZUZ1bmN0
aW9uRG91YmxlKSksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4o
cHJvYywgT3JpZ2luKCksIHRhZ0NGdW5jdGlvbjxPcGVyYXRpb25QdHJUYWc+KHNpbXBsZUZ1bmN0
aW9uRG91YmxlKSksCiAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1
ZT4ocHJvYywgT3JpZ2luKCksIEZQUkluZm86OmFyZ3VtZW50RlBSMCksCiAgICAgICAgICAgICBy
b290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEZQUkluZm86
OmFyZ3VtZW50RlBSMSkpKTsKIApAQCAtMjE3MCw3ICsyMTcwLDcgQEAgdm9pZCB0ZXN0Q2FsbFNp
bXBsZUZsb2F0KGZsb2F0IGEsIGZsb2F0IGIpCiAgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2lu
KCksCiAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDQ2FsbFZhbHVlPigKICAgICAgICAgICAgIHBy
b2MsIEZsb2F0LCBPcmlnaW4oKSwKLSAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdFB0
clZhbHVlPihwcm9jLCBPcmlnaW4oKSwgdGFnQ0Z1bmN0aW9uPEIzQ0NhbGxQdHJUYWc+KHNpbXBs
ZUZ1bmN0aW9uRmxvYXQpKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdFB0clZh
bHVlPihwcm9jLCBPcmlnaW4oKSwgdGFnQ0Z1bmN0aW9uPE9wZXJhdGlvblB0clRhZz4oc2ltcGxl
RnVuY3Rpb25GbG9hdCkpLAogICAgICAgICAgICAgZmxvYXRWYWx1ZTEsCiAgICAgICAgICAgICBm
bG9hdFZhbHVlMikpOwogCkBAIC0yMTkzLDcgKzIxOTMsNyBAQCB2b2lkIHRlc3RDYWxsRnVuY3Rp
b25XaXRoSGVsbGFEb3VibGVBcmd1bWVudHMoKQogCiAgICAgQ0NhbGxWYWx1ZSogY2FsbCA9IHJv
b3QtPmFwcGVuZE5ldzxDQ2FsbFZhbHVlPigKICAgICAgICAgcHJvYywgRG91YmxlLCBPcmlnaW4o
KSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigp
LCB0YWdDRnVuY3Rpb248QjNDQ2FsbFB0clRhZz4oZnVuY3Rpb25XaXRoSGVsbGFEb3VibGVBcmd1
bWVudHMpKSk7CisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBP
cmlnaW4oKSwgdGFnQ0Z1bmN0aW9uPE9wZXJhdGlvblB0clRhZz4oZnVuY3Rpb25XaXRoSGVsbGFE
b3VibGVBcmd1bWVudHMpKSk7CiAgICAgY2FsbC0+YXBwZW5kQXJncyhhcmdzKTsKIAogICAgIHJv
b3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCBjYWxsKTsK
QEAgLTIyMTcsNyArMjIxNyw3IEBAIHZvaWQgdGVzdENhbGxGdW5jdGlvbldpdGhIZWxsYUZsb2F0
QXJndW1lbnRzKCkKIAogICAgIENDYWxsVmFsdWUqIGNhbGwgPSByb290LT5hcHBlbmROZXc8Q0Nh
bGxWYWx1ZT4oCiAgICAgICAgIHByb2MsIEZsb2F0LCBPcmlnaW4oKSwKLSAgICAgICAgcm9vdC0+
YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCB0YWdDRnVuY3Rpb248QjND
Q2FsbFB0clRhZz4oZnVuY3Rpb25XaXRoSGVsbGFGbG9hdEFyZ3VtZW50cykpKTsKKyAgICAgICAg
cm9vdC0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCB0YWdDRnVuY3Rp
b248T3BlcmF0aW9uUHRyVGFnPihmdW5jdGlvbldpdGhIZWxsYUZsb2F0QXJndW1lbnRzKSkpOwog
ICAgIGNhbGwtPmFwcGVuZEFyZ3MoYXJncyk7CiAKICAgICByb290LT5hcHBlbmROZXdDb250cm9s
VmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgY2FsbCk7CkBAIC0yMjQwLDcgKzIyNDAsNyBA
QCB2b2lkIHRlc3RMaW5lYXJTY2FuV2l0aENhbGxlZU9uU3RhY2soKQogICAgICAgICBwcm9jLCBS
ZXR1cm4sIE9yaWdpbigpLAogICAgICAgICByb290LT5hcHBlbmROZXc8Q0NhbGxWYWx1ZT4oCiAg
ICAgICAgICAgICBwcm9jLCBJbnQzMiwgT3JpZ2luKCksCi0gICAgICAgICAgICByb290LT5hcHBl
bmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIHRhZ0NGdW5jdGlvbjxCM0NDYWxs
UHRyVGFnPihzaW1wbGVGdW5jdGlvbikpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENv
bnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCB0YWdDRnVuY3Rpb248T3BlcmF0aW9uUHRyVGFn
PihzaW1wbGVGdW5jdGlvbikpLAogICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50
UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApLAogICAgICAg
ICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBH
UFJJbmZvOjphcmd1bWVudEdQUjEpKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy90ZXN0YjNfNi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIzXzYu
Y3BwCmluZGV4IGI2YzZlMmNhMWZlYzBmODgxNzM3NzljYWZhNjU4YmU0NzdhOWU5M2MuLjNlZDI2
N2FjM2VlMjJkOWQyMGJjZjQ3ODA2NTE1NDA1MjZhNzVkYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy90ZXN0YjNfNi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL3Rlc3RiM182LmNwcApAQCAtMTc2OCw3ICsxNzY4LDcgQEAgdm9pZCB0ZXN0SW50ZXJwcmV0
ZXIoKQogICAgIHByaW50LT5hcHBlbmROZXc8Q0NhbGxWYWx1ZT4oCiAgICAgICAgIHByb2MsIFZv
aWQsIE9yaWdpbigpLAogICAgICAgICBwcmludC0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KAot
ICAgICAgICAgICAgcHJvYywgT3JpZ2luKCksIHRhZ0NGdW5jdGlvbjxCM0NDYWxsUHRyVGFnPihp
bnRlcnByZXRlclByaW50KSksCisgICAgICAgICAgICBwcm9jLCBPcmlnaW4oKSwgdGFnQ0Z1bmN0
aW9uPE9wZXJhdGlvblB0clRhZz4oaW50ZXJwcmV0ZXJQcmludCkpLAogICAgICAgICBjb250ZXh0
LAogICAgICAgICBwcmludC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihwcm9jLCBMb2FkLCBwb2lu
dGVyVHlwZSgpLCBPcmlnaW4oKSwgZGF0YVBvaW50ZXJWYWx1ZSkpOwogICAgIHByaW50LT5hcHBl
bmROZXc8VmFyaWFibGVWYWx1ZT4oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvdGVzdGIzXzcuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiM183LmNwcApp
bmRleCBiOTdkNjBjN2ZiNDI5MjE1YzQ0MjBiNGM0MzBiOGZiOTQwMzliYWIxLi4zNGFmZmNiYzM0
ZjI0ZTdlODM0MzA4YmYwOTEyZmYzMDg4ODFjYzNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvdGVzdGIzXzcuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90
ZXN0YjNfNy5jcHAKQEAgLTU3MSw3ICs1NzEsNyBAQCB2b2lkIHRlc3RMSUNNUHVyZSgpCiAgICAg
ICAgIFsmXSAoQmFzaWNCbG9jayogbG9vcCwgVmFsdWUqKSAtPiBWYWx1ZSogewogICAgICAgICAg
ICAgcmV0dXJuIGxvb3AtPmFwcGVuZE5ldzxDQ2FsbFZhbHVlPigKICAgICAgICAgICAgICAgICBw
cm9jLCBJbnQzMiwgT3JpZ2luKCksIEVmZmVjdHM6Om5vbmUoKSwKLSAgICAgICAgICAgICAgICBs
b29wLT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIHRhZ0NGdW5jdGlv
bjxCM0NDYWxsUHRyVGFnPihvbmVGdW5jdGlvbikpLAorICAgICAgICAgICAgICAgIGxvb3AtPmFw
cGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBPcmlnaW4oKSwgdGFnQ0Z1bmN0aW9uPE9wZXJh
dGlvblB0clRhZz4ob25lRnVuY3Rpb24pKSwKICAgICAgICAgICAgICAgICBsb29wLT5hcHBlbmRO
ZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BS
MCkpOwogICAgICAgICB9KTsKIApAQCAtNTkyLDExICs1OTIsMTEgQEAgdm9pZCB0ZXN0TElDTVB1
cmVTaWRlRXhpdHMoKQogICAgICAgICAgICAgZWZmZWN0cy5leGl0c1NpZGV3YXlzID0gdHJ1ZTsK
ICAgICAgICAgICAgIGxvb3AtPmFwcGVuZE5ldzxDQ2FsbFZhbHVlPigKICAgICAgICAgICAgICAg
ICBwcm9jLCBWb2lkLCBPcmlnaW4oKSwgZWZmZWN0cywKLSAgICAgICAgICAgICAgICBsb29wLT5h
cHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIHRhZ0NGdW5jdGlvbjxCM0ND
YWxsUHRyVGFnPihub09wRnVuY3Rpb24pKSk7CisgICAgICAgICAgICAgICAgbG9vcC0+YXBwZW5k
TmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCB0YWdDRnVuY3Rpb248T3BlcmF0aW9u
UHRyVGFnPihub09wRnVuY3Rpb24pKSk7CiAKICAgICAgICAgICAgIHJldHVybiBsb29wLT5hcHBl
bmROZXc8Q0NhbGxWYWx1ZT4oCiAgICAgICAgICAgICAgICAgcHJvYywgSW50MzIsIE9yaWdpbigp
LCBFZmZlY3RzOjpub25lKCksCi0gICAgICAgICAgICAgICAgbG9vcC0+YXBwZW5kTmV3PENvbnN0
UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCB0YWdDRnVuY3Rpb248QjNDQ2FsbFB0clRhZz4ob25l
RnVuY3Rpb24pKSwKKyAgICAgICAgICAgICAgICBsb29wLT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1
ZT4ocHJvYywgT3JpZ2luKCksIHRhZ0NGdW5jdGlvbjxPcGVyYXRpb25QdHJUYWc+KG9uZUZ1bmN0
aW9uKSksCiAgICAgICAgICAgICAgICAgbG9vcC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+
KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKTsKICAgICAgICAgfSk7CiAK
QEAgLTYxNywxMSArNjE3LDExIEBAIHZvaWQgdGVzdExJQ01QdXJlV3JpdGVzUGlubmVkKCkKICAg
ICAgICAgICAgIGVmZmVjdHMud3JpdGVzUGlubmVkID0gdHJ1ZTsKICAgICAgICAgICAgIGxvb3At
PmFwcGVuZE5ldzxDQ2FsbFZhbHVlPigKICAgICAgICAgICAgICAgICBwcm9jLCBWb2lkLCBPcmln
aW4oKSwgZWZmZWN0cywKLSAgICAgICAgICAgICAgICBsb29wLT5hcHBlbmROZXc8Q29uc3RQdHJW
YWx1ZT4ocHJvYywgT3JpZ2luKCksIHRhZ0NGdW5jdGlvbjxCM0NDYWxsUHRyVGFnPihub09wRnVu
Y3Rpb24pKSk7CisgICAgICAgICAgICAgICAgbG9vcC0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+
KHByb2MsIE9yaWdpbigpLCB0YWdDRnVuY3Rpb248T3BlcmF0aW9uUHRyVGFnPihub09wRnVuY3Rp
b24pKSk7CiAKICAgICAgICAgICAgIHJldHVybiBsb29wLT5hcHBlbmROZXc8Q0NhbGxWYWx1ZT4o
CiAgICAgICAgICAgICAgICAgcHJvYywgSW50MzIsIE9yaWdpbigpLCBFZmZlY3RzOjpub25lKCks
Ci0gICAgICAgICAgICAgICAgbG9vcC0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9y
aWdpbigpLCB0YWdDRnVuY3Rpb248QjNDQ2FsbFB0clRhZz4ob25lRnVuY3Rpb24pKSwKKyAgICAg
ICAgICAgICAgICBsb29wLT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCks
IHRhZ0NGdW5jdGlvbjxPcGVyYXRpb25QdHJUYWc+KG9uZUZ1bmN0aW9uKSksCiAgICAgICAgICAg
ICAgICAgbG9vcC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBH
UFJJbmZvOjphcmd1bWVudEdQUjApKTsKICAgICAgICAgfSk7CiAKQEAgLTY0MiwxMSArNjQyLDEx
IEBAIHZvaWQgdGVzdExJQ01QdXJlV3JpdGVzKCkKICAgICAgICAgICAgIGVmZmVjdHMud3JpdGVz
ID0gSGVhcFJhbmdlKDYzNDc5KTsKICAgICAgICAgICAgIGxvb3AtPmFwcGVuZE5ldzxDQ2FsbFZh
bHVlPigKICAgICAgICAgICAgICAgICBwcm9jLCBWb2lkLCBPcmlnaW4oKSwgZWZmZWN0cywKLSAg
ICAgICAgICAgICAgICBsb29wLT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2lu
KCksIHRhZ0NGdW5jdGlvbjxCM0NDYWxsUHRyVGFnPihub09wRnVuY3Rpb24pKSk7CisgICAgICAg
ICAgICAgICAgbG9vcC0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCB0
YWdDRnVuY3Rpb248T3BlcmF0aW9uUHRyVGFnPihub09wRnVuY3Rpb24pKSk7CiAKICAgICAgICAg
ICAgIHJldHVybiBsb29wLT5hcHBlbmROZXc8Q0NhbGxWYWx1ZT4oCiAgICAgICAgICAgICAgICAg
cHJvYywgSW50MzIsIE9yaWdpbigpLCBFZmZlY3RzOjpub25lKCksCi0gICAgICAgICAgICAgICAg
bG9vcC0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCB0YWdDRnVuY3Rp
b248QjNDQ2FsbFB0clRhZz4ob25lRnVuY3Rpb24pKSwKKyAgICAgICAgICAgICAgICBsb29wLT5h
cHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIHRhZ0NGdW5jdGlvbjxPcGVy
YXRpb25QdHJUYWc+KG9uZUZ1bmN0aW9uKSksCiAgICAgICAgICAgICAgICAgbG9vcC0+YXBwZW5k
TmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQ
UjApKTsKICAgICAgICAgfSk7CiAKQEAgLTY2NSw3ICs2NjUsNyBAQCB2b2lkIHRlc3RMSUNNUmVh
ZHNMb2NhbFN0YXRlKCkKICAgICAgICAgICAgIGVmZmVjdHMucmVhZHNMb2NhbFN0YXRlID0gdHJ1
ZTsKICAgICAgICAgICAgIHJldHVybiBsb29wLT5hcHBlbmROZXc8Q0NhbGxWYWx1ZT4oCiAgICAg
ICAgICAgICAgICAgcHJvYywgSW50MzIsIE9yaWdpbigpLCBlZmZlY3RzLAotICAgICAgICAgICAg
ICAgIGxvb3AtPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBPcmlnaW4oKSwgdGFnQ0Z1
bmN0aW9uPEIzQ0NhbGxQdHJUYWc+KG9uZUZ1bmN0aW9uKSksCisgICAgICAgICAgICAgICAgbG9v
cC0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCB0YWdDRnVuY3Rpb248
T3BlcmF0aW9uUHRyVGFnPihvbmVGdW5jdGlvbikpLAogICAgICAgICAgICAgICAgIGxvb3AtPmFw
cGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1l
bnRHUFIwKSk7CiAgICAgICAgIH0pOwogCkBAIC02ODYsNyArNjg2LDcgQEAgdm9pZCB0ZXN0TElD
TVJlYWRzUGlubmVkKCkKICAgICAgICAgICAgIGVmZmVjdHMucmVhZHNQaW5uZWQgPSB0cnVlOwog
ICAgICAgICAgICAgcmV0dXJuIGxvb3AtPmFwcGVuZE5ldzxDQ2FsbFZhbHVlPigKICAgICAgICAg
ICAgICAgICBwcm9jLCBJbnQzMiwgT3JpZ2luKCksIGVmZmVjdHMsCi0gICAgICAgICAgICAgICAg
bG9vcC0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCB0YWdDRnVuY3Rp
b248QjNDQ2FsbFB0clRhZz4ob25lRnVuY3Rpb24pKSwKKyAgICAgICAgICAgICAgICBsb29wLT5h
cHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIHRhZ0NGdW5jdGlvbjxPcGVy
YXRpb25QdHJUYWc+KG9uZUZ1bmN0aW9uKSksCiAgICAgICAgICAgICAgICAgbG9vcC0+YXBwZW5k
TmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQ
UjApKTsKICAgICAgICAgfSk7CiAKQEAgLTcwNyw3ICs3MDcsNyBAQCB2b2lkIHRlc3RMSUNNUmVh
ZHMoKQogICAgICAgICAgICAgZWZmZWN0cy5yZWFkcyA9IEhlYXBSYW5nZTo6dG9wKCk7CiAgICAg
ICAgICAgICByZXR1cm4gbG9vcC0+YXBwZW5kTmV3PENDYWxsVmFsdWU+KAogICAgICAgICAgICAg
ICAgIHByb2MsIEludDMyLCBPcmlnaW4oKSwgZWZmZWN0cywKLSAgICAgICAgICAgICAgICBsb29w
LT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIHRhZ0NGdW5jdGlvbjxC
M0NDYWxsUHRyVGFnPihvbmVGdW5jdGlvbikpLAorICAgICAgICAgICAgICAgIGxvb3AtPmFwcGVu
ZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBPcmlnaW4oKSwgdGFnQ0Z1bmN0aW9uPE9wZXJhdGlv
blB0clRhZz4ob25lRnVuY3Rpb24pKSwKICAgICAgICAgICAgICAgICBsb29wLT5hcHBlbmROZXc8
QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkp
OwogICAgICAgICB9KTsKIApAQCAtNzI3LDcgKzcyNyw3IEBAIHZvaWQgdGVzdExJQ01QdXJlTm90
QmFja3dhcmRzRG9taW5hbnQoKQogICAgICAgICBbJl0gKEJhc2ljQmxvY2sqIGxvb3AsIFZhbHVl
KikgLT4gVmFsdWUqIHsKICAgICAgICAgICAgIHJldHVybiBsb29wLT5hcHBlbmROZXc8Q0NhbGxW
YWx1ZT4oCiAgICAgICAgICAgICAgICAgcHJvYywgSW50MzIsIE9yaWdpbigpLCBFZmZlY3RzOjpu
b25lKCksCi0gICAgICAgICAgICAgICAgbG9vcC0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHBy
b2MsIE9yaWdpbigpLCB0YWdDRnVuY3Rpb248QjNDQ2FsbFB0clRhZz4ob25lRnVuY3Rpb24pKSwK
KyAgICAgICAgICAgICAgICBsb29wLT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3Jp
Z2luKCksIHRhZ0NGdW5jdGlvbjxPcGVyYXRpb25QdHJUYWc+KG9uZUZ1bmN0aW9uKSksCiAgICAg
ICAgICAgICAgICAgbG9vcC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdp
bigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKTsKICAgICAgICAgfSk7CiAKQEAgLTc0NCw3ICs3
NDQsNyBAQCB2b2lkIHRlc3RMSUNNUHVyZUZvaWxlZEJ5Q2hpbGQoKQogICAgICAgICBbJl0gKEJh
c2ljQmxvY2sqIGxvb3AsIFZhbHVlKiBpbmRleCkgLT4gVmFsdWUqIHsKICAgICAgICAgICAgIHJl
dHVybiBsb29wLT5hcHBlbmROZXc8Q0NhbGxWYWx1ZT4oCiAgICAgICAgICAgICAgICAgcHJvYywg
SW50MzIsIE9yaWdpbigpLCBFZmZlY3RzOjpub25lKCksCi0gICAgICAgICAgICAgICAgbG9vcC0+
YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCB0YWdDRnVuY3Rpb248QjND
Q2FsbFB0clRhZz4ob25lRnVuY3Rpb24pKSwKKyAgICAgICAgICAgICAgICBsb29wLT5hcHBlbmRO
ZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIHRhZ0NGdW5jdGlvbjxPcGVyYXRpb25Q
dHJUYWc+KG9uZUZ1bmN0aW9uKSksCiAgICAgICAgICAgICAgICAgbG9vcC0+YXBwZW5kTmV3PEFy
Z3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApLAog
ICAgICAgICAgICAgICAgIGluZGV4KTsKICAgICAgICAgfSk7CkBAIC03NjUsNyArNzY1LDcgQEAg
dm9pZCB0ZXN0TElDTVB1cmVOb3RCYWNrd2FyZHNEb21pbmFudEZvaWxlZEJ5Q2hpbGQoKQogICAg
ICAgICBbJl0gKEJhc2ljQmxvY2sqIGxvb3AsIFZhbHVlKiBpbmRleCkgLT4gVmFsdWUqIHsKICAg
ICAgICAgICAgIHJldHVybiBsb29wLT5hcHBlbmROZXc8Q0NhbGxWYWx1ZT4oCiAgICAgICAgICAg
ICAgICAgcHJvYywgSW50MzIsIE9yaWdpbigpLCBFZmZlY3RzOjpub25lKCksCi0gICAgICAgICAg
ICAgICAgbG9vcC0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCB0YWdD
RnVuY3Rpb248QjNDQ2FsbFB0clRhZz4ob25lRnVuY3Rpb24pKSwKKyAgICAgICAgICAgICAgICBs
b29wLT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIHRhZ0NGdW5jdGlv
bjxPcGVyYXRpb25QdHJUYWc+KG9uZUZ1bmN0aW9uKSksCiAgICAgICAgICAgICAgICAgbG9vcC0+
YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1
bWVudEdQUjApLAogICAgICAgICAgICAgICAgIGluZGV4KTsKICAgICAgICAgfSk7CkBAIC03ODUs
NyArNzg1LDcgQEAgdm9pZCB0ZXN0TElDTUV4aXRzU2lkZXdheXMoKQogICAgICAgICAgICAgZWZm
ZWN0cy5leGl0c1NpZGV3YXlzID0gdHJ1ZTsKICAgICAgICAgICAgIHJldHVybiBsb29wLT5hcHBl
bmROZXc8Q0NhbGxWYWx1ZT4oCiAgICAgICAgICAgICAgICAgcHJvYywgSW50MzIsIE9yaWdpbigp
LCBlZmZlY3RzLAotICAgICAgICAgICAgICAgIGxvb3AtPmFwcGVuZE5ldzxDb25zdFB0clZhbHVl
Pihwcm9jLCBPcmlnaW4oKSwgdGFnQ0Z1bmN0aW9uPEIzQ0NhbGxQdHJUYWc+KG9uZUZ1bmN0aW9u
KSksCisgICAgICAgICAgICAgICAgbG9vcC0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2Ms
IE9yaWdpbigpLCB0YWdDRnVuY3Rpb248T3BlcmF0aW9uUHRyVGFnPihvbmVGdW5jdGlvbikpLAog
ICAgICAgICAgICAgICAgIGxvb3AtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBP
cmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7CiAgICAgICAgIH0pOwogCkBAIC04MDQs
NyArODA0LDcgQEAgdm9pZCB0ZXN0TElDTVdyaXRlc0xvY2FsU3RhdGUoKQogICAgICAgICAgICAg
ZWZmZWN0cy53cml0ZXNMb2NhbFN0YXRlID0gdHJ1ZTsKICAgICAgICAgICAgIHJldHVybiBsb29w
LT5hcHBlbmROZXc8Q0NhbGxWYWx1ZT4oCiAgICAgICAgICAgICAgICAgcHJvYywgSW50MzIsIE9y
aWdpbigpLCBlZmZlY3RzLAotICAgICAgICAgICAgICAgIGxvb3AtPmFwcGVuZE5ldzxDb25zdFB0
clZhbHVlPihwcm9jLCBPcmlnaW4oKSwgdGFnQ0Z1bmN0aW9uPEIzQ0NhbGxQdHJUYWc+KG9uZUZ1
bmN0aW9uKSksCisgICAgICAgICAgICAgICAgbG9vcC0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+
KHByb2MsIE9yaWdpbigpLCB0YWdDRnVuY3Rpb248T3BlcmF0aW9uUHRyVGFnPihvbmVGdW5jdGlv
bikpLAogICAgICAgICAgICAgICAgIGxvb3AtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihw
cm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7CiAgICAgICAgIH0pOwogCkBA
IC04MjMsNyArODIzLDcgQEAgdm9pZCB0ZXN0TElDTVdyaXRlcygpCiAgICAgICAgICAgICBlZmZl
Y3RzLndyaXRlcyA9IEhlYXBSYW5nZSg2NjYpOwogICAgICAgICAgICAgcmV0dXJuIGxvb3AtPmFw
cGVuZE5ldzxDQ2FsbFZhbHVlPigKICAgICAgICAgICAgICAgICBwcm9jLCBJbnQzMiwgT3JpZ2lu
KCksIGVmZmVjdHMsCi0gICAgICAgICAgICAgICAgbG9vcC0+YXBwZW5kTmV3PENvbnN0UHRyVmFs
dWU+KHByb2MsIE9yaWdpbigpLCB0YWdDRnVuY3Rpb248QjNDQ2FsbFB0clRhZz4ob25lRnVuY3Rp
b24pKSwKKyAgICAgICAgICAgICAgICBsb29wLT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJv
YywgT3JpZ2luKCksIHRhZ0NGdW5jdGlvbjxPcGVyYXRpb25QdHJUYWc+KG9uZUZ1bmN0aW9uKSks
CiAgICAgICAgICAgICAgICAgbG9vcC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2Ms
IE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKTsKICAgICAgICAgfSk7CiAKQEAgLTg0
Miw3ICs4NDIsNyBAQCB2b2lkIHRlc3RMSUNNRmVuY2UoKQogICAgICAgICAgICAgZWZmZWN0cy5m
ZW5jZSA9IHRydWU7CiAgICAgICAgICAgICByZXR1cm4gbG9vcC0+YXBwZW5kTmV3PENDYWxsVmFs
dWU+KAogICAgICAgICAgICAgICAgIHByb2MsIEludDMyLCBPcmlnaW4oKSwgZWZmZWN0cywKLSAg
ICAgICAgICAgICAgICBsb29wLT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2lu
KCksIHRhZ0NGdW5jdGlvbjxCM0NDYWxsUHRyVGFnPihvbmVGdW5jdGlvbikpLAorICAgICAgICAg
ICAgICAgIGxvb3AtPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBPcmlnaW4oKSwgdGFn
Q0Z1bmN0aW9uPE9wZXJhdGlvblB0clRhZz4ob25lRnVuY3Rpb24pKSwKICAgICAgICAgICAgICAg
ICBsb29wLT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUklu
Zm86OmFyZ3VtZW50R1BSMCkpOwogICAgICAgICB9KTsKIApAQCAtODYxLDcgKzg2MSw3IEBAIHZv
aWQgdGVzdExJQ01Xcml0ZXNQaW5uZWQoKQogICAgICAgICAgICAgZWZmZWN0cy53cml0ZXNQaW5u
ZWQgPSB0cnVlOwogICAgICAgICAgICAgcmV0dXJuIGxvb3AtPmFwcGVuZE5ldzxDQ2FsbFZhbHVl
PigKICAgICAgICAgICAgICAgICBwcm9jLCBJbnQzMiwgT3JpZ2luKCksIGVmZmVjdHMsCi0gICAg
ICAgICAgICAgICAgbG9vcC0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigp
LCB0YWdDRnVuY3Rpb248QjNDQ2FsbFB0clRhZz4ob25lRnVuY3Rpb24pKSwKKyAgICAgICAgICAg
ICAgICBsb29wLT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIHRhZ0NG
dW5jdGlvbjxPcGVyYXRpb25QdHJUYWc+KG9uZUZ1bmN0aW9uKSksCiAgICAgICAgICAgICAgICAg
bG9vcC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZv
Ojphcmd1bWVudEdQUjApKTsKICAgICAgICAgfSk7CiAKQEAgLTg4Miw3ICs4ODIsNyBAQCB2b2lk
IHRlc3RMSUNNQ29udHJvbERlcGVuZGVudCgpCiAgICAgICAgICAgICBlZmZlY3RzLmNvbnRyb2xE
ZXBlbmRlbnQgPSB0cnVlOwogICAgICAgICAgICAgcmV0dXJuIGxvb3AtPmFwcGVuZE5ldzxDQ2Fs
bFZhbHVlPigKICAgICAgICAgICAgICAgICBwcm9jLCBJbnQzMiwgT3JpZ2luKCksIGVmZmVjdHMs
Ci0gICAgICAgICAgICAgICAgbG9vcC0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9y
aWdpbigpLCB0YWdDRnVuY3Rpb248QjNDQ2FsbFB0clRhZz4ob25lRnVuY3Rpb24pKSwKKyAgICAg
ICAgICAgICAgICBsb29wLT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCks
IHRhZ0NGdW5jdGlvbjxPcGVyYXRpb25QdHJUYWc+KG9uZUZ1bmN0aW9uKSksCiAgICAgICAgICAg
ICAgICAgbG9vcC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBH
UFJJbmZvOjphcmd1bWVudEdQUjApKTsKICAgICAgICAgfSk7CiAKQEAgLTkwNCw3ICs5MDQsNyBA
QCB2b2lkIHRlc3RMSUNNQ29udHJvbERlcGVuZGVudE5vdEJhY2t3YXJkc0RvbWluYW50KCkKICAg
ICAgICAgICAgIGVmZmVjdHMuY29udHJvbERlcGVuZGVudCA9IHRydWU7CiAgICAgICAgICAgICBy
ZXR1cm4gbG9vcC0+YXBwZW5kTmV3PENDYWxsVmFsdWU+KAogICAgICAgICAgICAgICAgIHByb2Ms
IEludDMyLCBPcmlnaW4oKSwgZWZmZWN0cywKLSAgICAgICAgICAgICAgICBsb29wLT5hcHBlbmRO
ZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIHRhZ0NGdW5jdGlvbjxCM0NDYWxsUHRy
VGFnPihvbmVGdW5jdGlvbikpLAorICAgICAgICAgICAgICAgIGxvb3AtPmFwcGVuZE5ldzxDb25z
dFB0clZhbHVlPihwcm9jLCBPcmlnaW4oKSwgdGFnQ0Z1bmN0aW9uPE9wZXJhdGlvblB0clRhZz4o
b25lRnVuY3Rpb24pKSwKICAgICAgICAgICAgICAgICBsb29wLT5hcHBlbmROZXc8QXJndW1lbnRS
ZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpOwogICAgICAg
ICB9KTsKIApAQCAtOTIzLDEzICs5MjMsMTMgQEAgdm9pZCB0ZXN0TElDTUNvbnRyb2xEZXBlbmRl
bnRTaWRlRXhpdHMoKQogICAgICAgICAgICAgZWZmZWN0cy5leGl0c1NpZGV3YXlzID0gdHJ1ZTsK
ICAgICAgICAgICAgIGxvb3AtPmFwcGVuZE5ldzxDQ2FsbFZhbHVlPigKICAgICAgICAgICAgICAg
ICBwcm9jLCBWb2lkLCBPcmlnaW4oKSwgZWZmZWN0cywKLSAgICAgICAgICAgICAgICBsb29wLT5h
cHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIHRhZ0NGdW5jdGlvbjxCM0ND
YWxsUHRyVGFnPihub09wRnVuY3Rpb24pKSk7CisgICAgICAgICAgICAgICAgbG9vcC0+YXBwZW5k
TmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCB0YWdDRnVuY3Rpb248T3BlcmF0aW9u
UHRyVGFnPihub09wRnVuY3Rpb24pKSk7CiAgICAgICAgIAogICAgICAgICAgICAgZWZmZWN0cyA9
IEVmZmVjdHM6Om5vbmUoKTsKICAgICAgICAgICAgIGVmZmVjdHMuY29udHJvbERlcGVuZGVudCA9
IHRydWU7CiAgICAgICAgICAgICByZXR1cm4gbG9vcC0+YXBwZW5kTmV3PENDYWxsVmFsdWU+KAog
ICAgICAgICAgICAgICAgIHByb2MsIEludDMyLCBPcmlnaW4oKSwgZWZmZWN0cywKLSAgICAgICAg
ICAgICAgICBsb29wLT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIHRh
Z0NGdW5jdGlvbjxCM0NDYWxsUHRyVGFnPihvbmVGdW5jdGlvbikpLAorICAgICAgICAgICAgICAg
IGxvb3AtPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBPcmlnaW4oKSwgdGFnQ0Z1bmN0
aW9uPE9wZXJhdGlvblB0clRhZz4ob25lRnVuY3Rpb24pKSwKICAgICAgICAgICAgICAgICBsb29w
LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFy
Z3VtZW50R1BSMCkpOwogICAgICAgICB9KTsKIApAQCAtOTQ4LDEzICs5NDgsMTMgQEAgdm9pZCB0
ZXN0TElDTVJlYWRzUGlubmVkV3JpdGVzUGlubmVkKCkKICAgICAgICAgICAgIGVmZmVjdHMud3Jp
dGVzUGlubmVkID0gdHJ1ZTsKICAgICAgICAgICAgIGxvb3AtPmFwcGVuZE5ldzxDQ2FsbFZhbHVl
PigKICAgICAgICAgICAgICAgICBwcm9jLCBWb2lkLCBPcmlnaW4oKSwgZWZmZWN0cywKLSAgICAg
ICAgICAgICAgICBsb29wLT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCks
IHRhZ0NGdW5jdGlvbjxCM0NDYWxsUHRyVGFnPihub09wRnVuY3Rpb24pKSk7CisgICAgICAgICAg
ICAgICAgbG9vcC0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCB0YWdD
RnVuY3Rpb248T3BlcmF0aW9uUHRyVGFnPihub09wRnVuY3Rpb24pKSk7CiAgICAgICAgIAogICAg
ICAgICAgICAgZWZmZWN0cyA9IEVmZmVjdHM6Om5vbmUoKTsKICAgICAgICAgICAgIGVmZmVjdHMu
cmVhZHNQaW5uZWQgPSB0cnVlOwogICAgICAgICAgICAgcmV0dXJuIGxvb3AtPmFwcGVuZE5ldzxD
Q2FsbFZhbHVlPigKICAgICAgICAgICAgICAgICBwcm9jLCBJbnQzMiwgT3JpZ2luKCksIGVmZmVj
dHMsCi0gICAgICAgICAgICAgICAgbG9vcC0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2Ms
IE9yaWdpbigpLCB0YWdDRnVuY3Rpb248QjNDQ2FsbFB0clRhZz4ob25lRnVuY3Rpb24pKSwKKyAg
ICAgICAgICAgICAgICBsb29wLT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2lu
KCksIHRhZ0NGdW5jdGlvbjxPcGVyYXRpb25QdHJUYWc+KG9uZUZ1bmN0aW9uKSksCiAgICAgICAg
ICAgICAgICAgbG9vcC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigp
LCBHUFJJbmZvOjphcmd1bWVudEdQUjApKTsKICAgICAgICAgfSk7CiAKQEAgLTk3NSwxMyArOTc1
LDEzIEBAIHZvaWQgdGVzdExJQ01SZWFkc1dyaXRlc0RpZmZlcmVudEhlYXBzKCkKICAgICAgICAg
ICAgIGVmZmVjdHMud3JpdGVzID0gSGVhcFJhbmdlKDY0MzYpOwogICAgICAgICAgICAgbG9vcC0+
YXBwZW5kTmV3PENDYWxsVmFsdWU+KAogICAgICAgICAgICAgICAgIHByb2MsIFZvaWQsIE9yaWdp
bigpLCBlZmZlY3RzLAotICAgICAgICAgICAgICAgIGxvb3AtPmFwcGVuZE5ldzxDb25zdFB0clZh
bHVlPihwcm9jLCBPcmlnaW4oKSwgdGFnQ0Z1bmN0aW9uPEIzQ0NhbGxQdHJUYWc+KG5vT3BGdW5j
dGlvbikpKTsKKyAgICAgICAgICAgICAgICBsb29wLT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4o
cHJvYywgT3JpZ2luKCksIHRhZ0NGdW5jdGlvbjxPcGVyYXRpb25QdHJUYWc+KG5vT3BGdW5jdGlv
bikpKTsKICAgICAgICAgCiAgICAgICAgICAgICBlZmZlY3RzID0gRWZmZWN0czo6bm9uZSgpOwog
ICAgICAgICAgICAgZWZmZWN0cy5yZWFkcyA9IEhlYXBSYW5nZSg0ODg2KTsKICAgICAgICAgICAg
IHJldHVybiBsb29wLT5hcHBlbmROZXc8Q0NhbGxWYWx1ZT4oCiAgICAgICAgICAgICAgICAgcHJv
YywgSW50MzIsIE9yaWdpbigpLCBlZmZlY3RzLAotICAgICAgICAgICAgICAgIGxvb3AtPmFwcGVu
ZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBPcmlnaW4oKSwgdGFnQ0Z1bmN0aW9uPEIzQ0NhbGxQ
dHJUYWc+KG9uZUZ1bmN0aW9uKSksCisgICAgICAgICAgICAgICAgbG9vcC0+YXBwZW5kTmV3PENv
bnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCB0YWdDRnVuY3Rpb248T3BlcmF0aW9uUHRyVGFn
PihvbmVGdW5jdGlvbikpLAogICAgICAgICAgICAgICAgIGxvb3AtPmFwcGVuZE5ldzxBcmd1bWVu
dFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7CiAgICAg
ICAgIH0pOwogCkBAIC0xMDAwLDEzICsxMDAwLDEzIEBAIHZvaWQgdGVzdExJQ01SZWFkc1dyaXRl
c092ZXJsYXBwaW5nSGVhcHMoKQogICAgICAgICAgICAgZWZmZWN0cy53cml0ZXMgPSBIZWFwUmFu
Z2UoNjQzNiwgNzQ0NTgpOwogICAgICAgICAgICAgbG9vcC0+YXBwZW5kTmV3PENDYWxsVmFsdWU+
KAogICAgICAgICAgICAgICAgIHByb2MsIFZvaWQsIE9yaWdpbigpLCBlZmZlY3RzLAotICAgICAg
ICAgICAgICAgIGxvb3AtPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBPcmlnaW4oKSwg
dGFnQ0Z1bmN0aW9uPEIzQ0NhbGxQdHJUYWc+KG5vT3BGdW5jdGlvbikpKTsKKyAgICAgICAgICAg
ICAgICBsb29wLT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIHRhZ0NG
dW5jdGlvbjxPcGVyYXRpb25QdHJUYWc+KG5vT3BGdW5jdGlvbikpKTsKICAgICAgICAgCiAgICAg
ICAgICAgICBlZmZlY3RzID0gRWZmZWN0czo6bm9uZSgpOwogICAgICAgICAgICAgZWZmZWN0cy5y
ZWFkcyA9IEhlYXBSYW5nZSg0ODg2NCwgNzgyMzkpOwogICAgICAgICAgICAgcmV0dXJuIGxvb3At
PmFwcGVuZE5ldzxDQ2FsbFZhbHVlPigKICAgICAgICAgICAgICAgICBwcm9jLCBJbnQzMiwgT3Jp
Z2luKCksIGVmZmVjdHMsCi0gICAgICAgICAgICAgICAgbG9vcC0+YXBwZW5kTmV3PENvbnN0UHRy
VmFsdWU+KHByb2MsIE9yaWdpbigpLCB0YWdDRnVuY3Rpb248QjNDQ2FsbFB0clRhZz4ob25lRnVu
Y3Rpb24pKSwKKyAgICAgICAgICAgICAgICBsb29wLT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4o
cHJvYywgT3JpZ2luKCksIHRhZ0NGdW5jdGlvbjxPcGVyYXRpb25QdHJUYWc+KG9uZUZ1bmN0aW9u
KSksCiAgICAgICAgICAgICAgICAgbG9vcC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHBy
b2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKTsKICAgICAgICAgfSk7CiAKQEAg
LTEwMjMsNyArMTAyMyw3IEBAIHZvaWQgdGVzdExJQ01EZWZhdWx0Q2FsbCgpCiAgICAgICAgIFsm
XSAoQmFzaWNCbG9jayogbG9vcCwgVmFsdWUqKSAtPiBWYWx1ZSogewogICAgICAgICAgICAgcmV0
dXJuIGxvb3AtPmFwcGVuZE5ldzxDQ2FsbFZhbHVlPigKICAgICAgICAgICAgICAgICBwcm9jLCBJ
bnQzMiwgT3JpZ2luKCksCi0gICAgICAgICAgICAgICAgbG9vcC0+YXBwZW5kTmV3PENvbnN0UHRy
VmFsdWU+KHByb2MsIE9yaWdpbigpLCB0YWdDRnVuY3Rpb248QjNDQ2FsbFB0clRhZz4ob25lRnVu
Y3Rpb24pKSwKKyAgICAgICAgICAgICAgICBsb29wLT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4o
cHJvYywgT3JpZ2luKCksIHRhZ0NGdW5jdGlvbjxPcGVyYXRpb25QdHJUYWc+KG9uZUZ1bmN0aW9u
KSksCiAgICAgICAgICAgICAgICAgbG9vcC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHBy
b2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKTsKICAgICAgICAgfSk7CiAKQEAg
LTE0MTAsNyArMTQxMCw3IEBAIHZvaWQgdGVzdFNodWZmbGVEb2VzbnRUcmFzaENhbGxlZVNhdmVz
KCkKIAogICAgIHVubGlrZWx5LT5hcHBlbmROZXc8Q0NhbGxWYWx1ZT4oCiAgICAgICAgIHByb2Ms
IFZvaWQsIE9yaWdpbigpLAotICAgICAgICB1bmxpa2VseS0+YXBwZW5kTmV3PENvbnN0UHRyVmFs
dWU+KHByb2MsIE9yaWdpbigpLCB0YWdDRnVuY3Rpb248QjNDQ2FsbFB0clRhZz4oZnVuY3Rpb25O
aW5lQXJncykpLAorICAgICAgICB1bmxpa2VseS0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHBy
b2MsIE9yaWdpbigpLCB0YWdDRnVuY3Rpb248T3BlcmF0aW9uUHRyVGFnPihmdW5jdGlvbk5pbmVB
cmdzKSksCiAgICAgICAgIGNvbnN0TnVtYmVyLCBhcmcxLCBhcmcyLCBhcmczLCBhcmc0LCBhcmc1
LCBhcmc2LCBhcmc3LCBhcmc4KTsKIAogICAgIFBhdGNocG9pbnRWYWx1ZSogdm9pZFBhdGNoID0g
dW5saWtlbHktPmFwcGVuZE5ldzxQYXRjaHBvaW50VmFsdWU+KHByb2MsIFZvaWQsIE9yaWdpbigp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT3V0cHV0LmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE91dHB1dC5oCmluZGV4IGQyZTc1NzI0YmMwZTY4
OWJlMzVjOTRiNGE5NWMzNWM3Y2VhNjQ5NWYuLmYxNTVmNmM5NjExZTg0ODJlN2Y2NmRkYzFiNmIz
ZDY4YWEyNjFlOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT3V0
cHV0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPdXRwdXQuaApAQCAtMzk1
LDEzICszOTUsMTMgQEAgY2xhc3MgT3V0cHV0IDogcHVibGljIENvbW1vblZhbHVlcyB7CiAgICAg
ewogICAgICAgICBzdGF0aWNfYXNzZXJ0KCFzdGQ6OmlzX3NhbWU8RnVuY3Rpb24sIExWYWx1ZT46
OnZhbHVlKTsKICAgICAgICAgcmV0dXJuIG1fYmxvY2stPmFwcGVuZE5ldzxCMzo6Q0NhbGxWYWx1
ZT4obV9wcm9jLCB0eXBlLCBvcmlnaW4oKSwgQjM6OkVmZmVjdHM6Om5vbmUoKSwKLSAgICAgICAg
ICAgIGNvbnN0SW50UHRyKHRhZ0NGdW5jdGlvblB0cjx2b2lkKj4oZnVuY3Rpb24sIEIzQ0NhbGxQ
dHJUYWcpKSwgYXJnMSwgYXJncy4uLik7CisgICAgICAgICAgICBjb25zdEludFB0cih0YWdDRnVu
Y3Rpb25QdHI8dm9pZCo+KGZ1bmN0aW9uLCBPcGVyYXRpb25QdHJUYWcpKSwgYXJnMSwgYXJncy4u
Lik7CiAgICAgfQogCiAgICAgLy8gRklYTUU6IENvbnNpZGVyIGVuaGFuY2luZyB0aGlzIHRvIGFs
bG93IHRoZSBjbGllbnQgdG8gY2hvb3NlIHRoZSB0YXJnZXQgUHRyVGFnIHRvIHVzZS4KICAgICAv
LyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg0MzI0CiAgICAgdGVt
cGxhdGU8dHlwZW5hbWUgRnVuY3Rpb25UeXBlPgotICAgIExWYWx1ZSBvcGVyYXRpb24oRnVuY3Rp
b25UeXBlIGZ1bmN0aW9uKSB7IHJldHVybiBjb25zdEludFB0cih0YWdDRnVuY3Rpb25QdHI8dm9p
ZCo+KGZ1bmN0aW9uLCBCM0NDYWxsUHRyVGFnKSk7IH0KKyAgICBMVmFsdWUgb3BlcmF0aW9uKEZ1
bmN0aW9uVHlwZSBmdW5jdGlvbikgeyByZXR1cm4gY29uc3RJbnRQdHIodGFnQ0Z1bmN0aW9uUHRy
PHZvaWQqPihmdW5jdGlvbiwgT3BlcmF0aW9uUHRyVGFnKSk7IH0KIAogICAgIHZvaWQganVtcChM
QmFzaWNCbG9jayk7CiAgICAgdm9pZCBicmFuY2goTFZhbHVlIGNvbmRpdGlvbiwgTEJhc2ljQmxv
Y2sgdGFrZW4sIFdlaWdodCB0YWtlbldlaWdodCwgTEJhc2ljQmxvY2sgbm90VGFrZW4sIFdlaWdo
dCBub3RUYWtlbldlaWdodCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0NQdHJUYWcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ1B0clRh
Zy5oCmluZGV4IDEwNDg0NjM5YzAzZGRiNTM1ZTI2MDFkZjU3ZjA2NjUzOWI0NjdkMGQuLjNmMmYx
ZDI3N2ZhMDU4NDM3Nzc3MGNkYzU5MDYyYzM2NTA0NGI1YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ1B0clRhZy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQ1B0clRhZy5oCkBAIC0zMiw3ICszMiw2IEBAIG5hbWVzcGFjZSBKU0Mg
ewogdXNpbmcgUHRyVGFnID0gV1RGOjpQdHJUYWc7CiAKICNkZWZpbmUgRk9SX0VBQ0hfSlNDX1BU
UlRBRyh2KSBcCi0gICAgdihCM0NDYWxsUHRyVGFnKSBcCiAgICAgdihCM0NvbXBpbGF0aW9uUHRy
VGFnKSBcCiAgICAgdihCeXRlY29kZVB0clRhZykgXAogICAgIHYoRE9NSklURnVuY3Rpb25QdHJU
YWcpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21BaXJJUkdl
bmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQWlySVJHZW5lcmF0
b3IuY3BwCmluZGV4IGUzNTMyY2UwOGM1OTdhNTZlYmMxNTIzMGZjNjcwNmI2NzNkN2ZiMzkuLmM1
ZTBjNmRjODkzY2E2NjJlMjdhMWRhZDRlMzVmYzQ1Y2Y4NjI3NjggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21BaXJJUkdlbmVyYXRvci5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUFpcklSR2VuZXJhdG9yLmNwcApAQCAtNTk4LDcgKzU5
OCw3IEBAIGNsYXNzIEFpcklSR2VuZXJhdG9yIHsKICAgICAgICAgSW5zdCBpbnN0KENDYWxsLCBv
cmlnaW4pOwogCiAgICAgICAgIFRtcCBjYWxsZWUgPSBnNjQoKTsKLSAgICAgICAgYXBwZW5kKGJs
b2NrLCBNb3ZlLCBBcmc6OmltbVB0cih0YWdDRnVuY3Rpb25QdHI8dm9pZCo+KGZ1bmMsIEIzQ0Nh
bGxQdHJUYWcpKSwgY2FsbGVlKTsKKyAgICAgICAgYXBwZW5kKGJsb2NrLCBNb3ZlLCBBcmc6Omlt
bVB0cih0YWdDRnVuY3Rpb25QdHI8dm9pZCo+KGZ1bmMsIE9wZXJhdGlvblB0clRhZykpLCBjYWxs
ZWUpOwogICAgICAgICBpbnN0LmFyZ3MuYXBwZW5kKGNhbGxlZSk7CiAKICAgICAgICAgaWYgKHJl
c3VsdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CM0lSR2Vu
ZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CM0lSR2VuZXJhdG9y
LmNwcAppbmRleCA5ZDcyMmIyNTIzNTM3NDAzZTljZGMzN2I1Y2I1ZjdmYWFiNGQ2ZDdhLi5jZmYw
NTQ3MjlmYzk0NzE3YjhlYzE2NTE2M2RiODQwNTc5MTkxOWI1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vV2FzbUIzSVJHZW5lcmF0b3IuY3BwCkBAIC02OTQsNyArNjk0LDcg
QEAgYXV0byBCM0lSR2VuZXJhdG9yOjphZGRUYWJsZUdldCh1bnNpZ25lZCB0YWJsZUluZGV4LCBF
eHByZXNzaW9uVHlwZSBpbmRleCwgRXhwcmUKIHsKICAgICAvLyBGSVhNRTogRW1pdCB0aGlzIGlu
bGluZSA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5ODUwNj4uCiAg
ICAgcmVzdWx0ID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxDQ2FsbFZhbHVlPihtX3Byb2Ms
IHRvQjNUeXBlKEFueXJlZiksIG9yaWdpbigpLAotICAgICAgICBtX2N1cnJlbnRCbG9jay0+YXBw
ZW5kTmV3PENvbnN0UHRyVmFsdWU+KG1fcHJvYywgb3JpZ2luKCksIHRhZ0NGdW5jdGlvbjxCM0ND
YWxsUHRyVGFnPihvcGVyYXRpb25HZXRXYXNtVGFibGVFbGVtZW50KSksCisgICAgICAgIG1fY3Vy
cmVudEJsb2NrLT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4obV9wcm9jLCBvcmlnaW4oKSwgdGFn
Q0Z1bmN0aW9uPE9wZXJhdGlvblB0clRhZz4ob3BlcmF0aW9uR2V0V2FzbVRhYmxlRWxlbWVudCkp
LAogICAgICAgICBpbnN0YW5jZVZhbHVlKCksIG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8Q29u
c3QzMlZhbHVlPihtX3Byb2MsIG9yaWdpbigpLCB0YWJsZUluZGV4KSwgaW5kZXgpOwogCiAgICAg
ewpAQCAtNzEzLDcgKzcxMyw3IEBAIGF1dG8gQjNJUkdlbmVyYXRvcjo6YWRkVGFibGVTZXQodW5z
aWduZWQgdGFibGVJbmRleCwgRXhwcmVzc2lvblR5cGUgaW5kZXgsIEV4cHJlCiB7CiAgICAgLy8g
RklYTUU6IEVtaXQgdGhpcyBpbmxpbmUgPGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xOTg1MDY+LgogICAgIGF1dG8gc2hvdWxkVGhyb3cgPSBtX2N1cnJlbnRCbG9jay0+
YXBwZW5kTmV3PENDYWxsVmFsdWU+KG1fcHJvYywgQjM6OkludDMyLCBvcmlnaW4oKSwKLSAgICAg
ICAgbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihtX3Byb2MsIG9yaWdp
bigpLCB0YWdDRnVuY3Rpb248QjNDQ2FsbFB0clRhZz4ob3BlcmF0aW9uU2V0V2FzbVRhYmxlRWxl
bWVudCkpLAorICAgICAgICBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+
KG1fcHJvYywgb3JpZ2luKCksIHRhZ0NGdW5jdGlvbjxPcGVyYXRpb25QdHJUYWc+KG9wZXJhdGlv
blNldFdhc21UYWJsZUVsZW1lbnQpKSwKICAgICAgICAgaW5zdGFuY2VWYWx1ZSgpLCBtX2N1cnJl
bnRCbG9jay0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4obV9wcm9jLCBvcmlnaW4oKSwgdGFibGVJ
bmRleCksIGluZGV4LCB2YWx1ZSk7CiAKICAgICB7CkBAIC03MzMsNyArNzMzLDcgQEAgYXV0byBC
M0lSR2VuZXJhdG9yOjphZGRSZWZGdW5jKHVpbnQzMl90IGluZGV4LCBFeHByZXNzaW9uVHlwZSYg
cmVzdWx0KSAtPiBQYXJ0aWEKICAgICAvLyBGSVhNRTogRW1pdCB0aGlzIGlubGluZSA8aHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5ODUwNj4uCiAKICAgICByZXN1bHQg
PSBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PENDYWxsVmFsdWU+KG1fcHJvYywgQjM6OkludDY0
LCBvcmlnaW4oKSwKLSAgICAgICAgbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxDb25zdFB0clZh
bHVlPihtX3Byb2MsIG9yaWdpbigpLCB0YWdDRnVuY3Rpb248QjNDQ2FsbFB0clRhZz4ob3BlcmF0
aW9uV2FzbVJlZkZ1bmMpKSwKKyAgICAgICAgbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxDb25z
dFB0clZhbHVlPihtX3Byb2MsIG9yaWdpbigpLCB0YWdDRnVuY3Rpb248T3BlcmF0aW9uUHRyVGFn
PihvcGVyYXRpb25XYXNtUmVmRnVuYykpLAogICAgICAgICBpbnN0YW5jZVZhbHVlKCksIGFkZENv
bnN0YW50KFR5cGU6OkkzMiwgaW5kZXgpKTsKIAogICAgIHJldHVybiB7IH07CkBAIC03NDMsNyAr
NzQzLDcgQEAgYXV0byBCM0lSR2VuZXJhdG9yOjphZGRUYWJsZVNpemUodW5zaWduZWQgdGFibGVJ
bmRleCwgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCkgLT4KIHsKICAgICAvLyBGSVhNRTogRW1pdCB0
aGlzIGlubGluZSA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5ODUw
Nj4uCiAgICAgcmVzdWx0ID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxDQ2FsbFZhbHVlPiht
X3Byb2MsIHRvQjNUeXBlKEkzMiksIG9yaWdpbigpLAotICAgICAgICBtX2N1cnJlbnRCbG9jay0+
YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KG1fcHJvYywgb3JpZ2luKCksIHRhZ0NGdW5jdGlvbjxC
M0NDYWxsUHRyVGFnPihvcGVyYXRpb25HZXRXYXNtVGFibGVTaXplKSksCisgICAgICAgIG1fY3Vy
cmVudEJsb2NrLT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4obV9wcm9jLCBvcmlnaW4oKSwgdGFn
Q0Z1bmN0aW9uPE9wZXJhdGlvblB0clRhZz4ob3BlcmF0aW9uR2V0V2FzbVRhYmxlU2l6ZSkpLAog
ICAgICAgICBpbnN0YW5jZVZhbHVlKCksIG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8Q29uc3Qz
MlZhbHVlPihtX3Byb2MsIG9yaWdpbigpLCB0YWJsZUluZGV4KSk7CiAKICAgICByZXR1cm4geyB9
OwpAQCAtNzUyLDcgKzc1Miw3IEBAIGF1dG8gQjNJUkdlbmVyYXRvcjo6YWRkVGFibGVTaXplKHVu
c2lnbmVkIHRhYmxlSW5kZXgsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpIC0+CiBhdXRvIEIzSVJH
ZW5lcmF0b3I6OmFkZFRhYmxlR3Jvdyh1bnNpZ25lZCB0YWJsZUluZGV4LCBFeHByZXNzaW9uVHlw
ZSBmaWxsLCBFeHByZXNzaW9uVHlwZSBkZWx0YSwgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCkgLT4g
UGFydGlhbFJlc3VsdAogewogICAgIHJlc3VsdCA9IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8
Q0NhbGxWYWx1ZT4obV9wcm9jLCB0b0IzVHlwZShJMzIpLCBvcmlnaW4oKSwKLSAgICAgICAgbV9j
dXJyZW50QmxvY2stPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihtX3Byb2MsIG9yaWdpbigpLCB0
YWdDRnVuY3Rpb248QjNDQ2FsbFB0clRhZz4ob3BlcmF0aW9uV2FzbVRhYmxlR3JvdykpLAorICAg
ICAgICBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KG1fcHJvYywgb3Jp
Z2luKCksIHRhZ0NGdW5jdGlvbjxPcGVyYXRpb25QdHJUYWc+KG9wZXJhdGlvbldhc21UYWJsZUdy
b3cpKSwKICAgICAgICAgaW5zdGFuY2VWYWx1ZSgpLCBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3
PENvbnN0MzJWYWx1ZT4obV9wcm9jLCBvcmlnaW4oKSwgdGFibGVJbmRleCksIGZpbGwsIGRlbHRh
KTsKIAogICAgIHJldHVybiB7IH07CkBAIC03NjEsNyArNzYxLDcgQEAgYXV0byBCM0lSR2VuZXJh
dG9yOjphZGRUYWJsZUdyb3codW5zaWduZWQgdGFibGVJbmRleCwgRXhwcmVzc2lvblR5cGUgZmls
bCwgRXhwcmUKIGF1dG8gQjNJUkdlbmVyYXRvcjo6YWRkVGFibGVGaWxsKHVuc2lnbmVkIHRhYmxl
SW5kZXgsIEV4cHJlc3Npb25UeXBlIG9mZnNldCwgRXhwcmVzc2lvblR5cGUgZmlsbCwgRXhwcmVz
c2lvblR5cGUgY291bnQpIC0+IFBhcnRpYWxSZXN1bHQKIHsKICAgICBhdXRvIHJlc3VsdCA9IG1f
Y3VycmVudEJsb2NrLT5hcHBlbmROZXc8Q0NhbGxWYWx1ZT4obV9wcm9jLCB0b0IzVHlwZShJMzIp
LCBvcmlnaW4oKSwKLSAgICAgICAgbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxDb25zdFB0clZh
bHVlPihtX3Byb2MsIG9yaWdpbigpLCB0YWdDRnVuY3Rpb248QjNDQ2FsbFB0clRhZz4ob3BlcmF0
aW9uV2FzbVRhYmxlRmlsbCkpLAorICAgICAgICBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PENv
bnN0UHRyVmFsdWU+KG1fcHJvYywgb3JpZ2luKCksIHRhZ0NGdW5jdGlvbjxPcGVyYXRpb25QdHJU
YWc+KG9wZXJhdGlvbldhc21UYWJsZUZpbGwpKSwKICAgICAgICAgaW5zdGFuY2VWYWx1ZSgpLCBt
X2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4obV9wcm9jLCBvcmlnaW4oKSwg
dGFibGVJbmRleCksIG9mZnNldCwgZmlsbCwgY291bnQpOwogCiAgICAgewpAQCAtNzk2LDcgKzc5
Niw3IEBAIGF1dG8gQjNJUkdlbmVyYXRvcjo6YWRkVW5yZWFjaGFibGUoKSAtPiBQYXJ0aWFsUmVz
dWx0CiBhdXRvIEIzSVJHZW5lcmF0b3I6OmFkZEdyb3dNZW1vcnkoRXhwcmVzc2lvblR5cGUgZGVs
dGEsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpIC0+IFBhcnRpYWxSZXN1bHQKIHsKICAgICByZXN1
bHQgPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PENDYWxsVmFsdWU+KG1fcHJvYywgSW50MzIs
IG9yaWdpbigpLAotICAgICAgICBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PENvbnN0UHRyVmFs
dWU+KG1fcHJvYywgb3JpZ2luKCksIHRhZ0NGdW5jdGlvbjxCM0NDYWxsUHRyVGFnPihvcGVyYXRp
b25Hcm93TWVtb3J5KSksCisgICAgICAgIG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8Q29uc3RQ
dHJWYWx1ZT4obV9wcm9jLCBvcmlnaW4oKSwgdGFnQ0Z1bmN0aW9uPE9wZXJhdGlvblB0clRhZz4o
b3BlcmF0aW9uR3Jvd01lbW9yeSkpLAogICAgICAgICBmcmFtZVBvaW50ZXIoKSwgaW5zdGFuY2VW
YWx1ZSgpLCBkZWx0YSk7CiAKICAgICByZXN0b3JlV2ViQXNzZW1ibHlHbG9iYWxTdGF0ZShSZXN0
b3JlQ2FjaGVkU3RhY2tMaW1pdDo6Tm8sIG1faW5mby5tZW1vcnksIGluc3RhbmNlVmFsdWUoKSwg
bV9wcm9jLCBtX2N1cnJlbnRCbG9jayk7CkBAIC05MDAsNyArOTAwLDcgQEAgYXV0byBCM0lSR2Vu
ZXJhdG9yOjpzZXRHbG9iYWwodWludDMyX3QgaW5kZXgsIEV4cHJlc3Npb25UeXBlIHZhbHVlKSAt
PiBQYXJ0aWFsUmUKICAgICAgICAgICAgIGNvbnRpbnVhdGlvbi0+YWRkUHJlZGVjZXNzb3IobV9j
dXJyZW50QmxvY2spOwogICAgICAgICAgICAgbV9jdXJyZW50QmxvY2sgPSBkb1Nsb3dQYXRoOwog
Ci0gICAgICAgICAgICBWYWx1ZSogd3JpdGVCYXJyaWVyQWRkcmVzcyA9IG1fY3VycmVudEJsb2Nr
LT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4obV9wcm9jLCBvcmlnaW4oKSwgdGFnQ0Z1bmN0aW9u
PEIzQ0NhbGxQdHJUYWc+KG9wZXJhdGlvbldhc21Xcml0ZUJhcnJpZXJTbG93UGF0aCkpOworICAg
ICAgICAgICAgVmFsdWUqIHdyaXRlQmFycmllckFkZHJlc3MgPSBtX2N1cnJlbnRCbG9jay0+YXBw
ZW5kTmV3PENvbnN0UHRyVmFsdWU+KG1fcHJvYywgb3JpZ2luKCksIHRhZ0NGdW5jdGlvbjxPcGVy
YXRpb25QdHJUYWc+KG9wZXJhdGlvbldhc21Xcml0ZUJhcnJpZXJTbG93UGF0aCkpOwogICAgICAg
ICAgICAgbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxDQ2FsbFZhbHVlPihtX3Byb2MsIEIzOjpW
b2lkLCBvcmlnaW4oKSwgd3JpdGVCYXJyaWVyQWRkcmVzcywgY2VsbCwgdm0pOwogICAgICAgICAg
ICAgbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShtX3Byb2MsIEp1bXAsIG9y
aWdpbigpLCBjb250aW51YXRpb24pOwogCkBAIC05NTMsNyArOTUzLDcgQEAgaW5saW5lIHZvaWQg
QjNJUkdlbmVyYXRvcjo6ZW1pdFdyaXRlQmFycmllckZvckpTV3JhcHBlcigpCiAgICAgY29udGlu
dWF0aW9uLT5hZGRQcmVkZWNlc3NvcihtX2N1cnJlbnRCbG9jayk7CiAgICAgbV9jdXJyZW50Qmxv
Y2sgPSBkb1Nsb3dQYXRoOwogCi0gICAgVmFsdWUqIHdyaXRlQmFycmllckFkZHJlc3MgPSBtX2N1
cnJlbnRCbG9jay0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KG1fcHJvYywgb3JpZ2luKCksIHRh
Z0NGdW5jdGlvbjxCM0NDYWxsUHRyVGFnPihvcGVyYXRpb25XYXNtV3JpdGVCYXJyaWVyU2xvd1Bh
dGgpKTsKKyAgICBWYWx1ZSogd3JpdGVCYXJyaWVyQWRkcmVzcyA9IG1fY3VycmVudEJsb2NrLT5h
cHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4obV9wcm9jLCBvcmlnaW4oKSwgdGFnQ0Z1bmN0aW9uPE9w
ZXJhdGlvblB0clRhZz4ob3BlcmF0aW9uV2FzbVdyaXRlQmFycmllclNsb3dQYXRoKSk7CiAgICAg
bV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxDQ2FsbFZhbHVlPihtX3Byb2MsIEIzOjpWb2lkLCBv
cmlnaW4oKSwgd3JpdGVCYXJyaWVyQWRkcmVzcywgY2VsbCwgdm0pOwogICAgIG1fY3VycmVudEJs
b2NrLT5hcHBlbmROZXdDb250cm9sVmFsdWUobV9wcm9jLCBKdW1wLCBvcmlnaW4oKSwgY29udGlu
dWF0aW9uKTsKIApAQCAtMjE0Niw3ICsyMTQ2LDcgQEAgYXV0byBCM0lSR2VuZXJhdG9yOjphZGRP
cDxPcFR5cGU6OkkzMlBvcGNudD4oRXhwcmVzc2lvblR5cGUgYXJnLCBFeHByZXNzaW9uVHlwZSYK
ICAgICB9CiAjZW5kaWYKIAotICAgIFZhbHVlKiBmdW5jQWRkcmVzcyA9IG1fY3VycmVudEJsb2Nr
LT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4obV9wcm9jLCBvcmlnaW4oKSwgdGFnQ0Z1bmN0aW9u
PEIzQ0NhbGxQdHJUYWc+KG9wZXJhdGlvblBvcGNvdW50MzIpKTsKKyAgICBWYWx1ZSogZnVuY0Fk
ZHJlc3MgPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KG1fcHJvYywg
b3JpZ2luKCksIHRhZ0NGdW5jdGlvbjxPcGVyYXRpb25QdHJUYWc+KG9wZXJhdGlvblBvcGNvdW50
MzIpKTsKICAgICByZXN1bHQgPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PENDYWxsVmFsdWU+
KG1fcHJvYywgSW50MzIsIG9yaWdpbigpLCBFZmZlY3RzOjpub25lKCksIGZ1bmNBZGRyZXNzLCBh
cmcpOwogICAgIHJldHVybiB7IH07CiB9CkBAIC0yMTY3LDcgKzIxNjcsNyBAQCBhdXRvIEIzSVJH
ZW5lcmF0b3I6OmFkZE9wPE9wVHlwZTo6STY0UG9wY250PihFeHByZXNzaW9uVHlwZSBhcmcsIEV4
cHJlc3Npb25UeXBlJgogICAgIH0KICNlbmRpZgogCi0gICAgVmFsdWUqIGZ1bmNBZGRyZXNzID0g
bV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihtX3Byb2MsIG9yaWdpbigp
LCB0YWdDRnVuY3Rpb248QjNDQ2FsbFB0clRhZz4ob3BlcmF0aW9uUG9wY291bnQ2NCkpOworICAg
IFZhbHVlKiBmdW5jQWRkcmVzcyA9IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8Q29uc3RQdHJW
YWx1ZT4obV9wcm9jLCBvcmlnaW4oKSwgdGFnQ0Z1bmN0aW9uPE9wZXJhdGlvblB0clRhZz4ob3Bl
cmF0aW9uUG9wY291bnQ2NCkpOwogICAgIHJlc3VsdCA9IG1fY3VycmVudEJsb2NrLT5hcHBlbmRO
ZXc8Q0NhbGxWYWx1ZT4obV9wcm9jLCBJbnQ2NCwgb3JpZ2luKCksIEVmZmVjdHM6Om5vbmUoKSwg
ZnVuY0FkZHJlc3MsIGFyZyk7CiAgICAgcmV0dXJuIHsgfTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1Nl
bGVjdG9yQ2hlY2tlci5jcHAKaW5kZXggNzI0OTY3ZTJjZDlkZDgwNDlhOTEwNjMxNjc1MTZlMGQz
OTNlZGI1Yi4uN2M3MjllZmYxNjdhYzAyYTllNGZiOWJkNzE4NDQ5YTMxMTJiNDYwMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlci5jcHAKQEAgLTEyNDUsMzMgKzEyNDUsNCBAQCB1
bnNpZ25lZCBTZWxlY3RvckNoZWNrZXI6OmRldGVybWluZUxpbmtNYXRjaFR5cGUoY29uc3QgQ1NT
U2VsZWN0b3IqIHNlbGVjdG9yKQogICAgIHJldHVybiBsaW5rTWF0Y2hUeXBlOwogfQogCi1zdGF0
aWMgYm9vbCBpc0ZyYW1lRm9jdXNlZChjb25zdCBFbGVtZW50JiBlbGVtZW50KQotewotICAgIHJl
dHVybiBlbGVtZW50LmRvY3VtZW50KCkuZnJhbWUoKSAmJiBlbGVtZW50LmRvY3VtZW50KCkuZnJh
bWUoKS0+c2VsZWN0aW9uKCkuaXNGb2N1c2VkQW5kQWN0aXZlKCk7Ci19Ci0KLXN0YXRpYyBib29s
IGRvZXNTaGFkb3dUcmVlQ29udGFpbkZvY3VzZWRFbGVtZW50KGNvbnN0IEVsZW1lbnQmIGVsZW1l
bnQpCi17Ci0gICAgYXV0byogc2hhZG93Um9vdCA9IGVsZW1lbnQuc2hhZG93Um9vdCgpOwotICAg
IHJldHVybiBzaGFkb3dSb290ICYmIHNoYWRvd1Jvb3QtPmNvbnRhaW5zRm9jdXNlZEVsZW1lbnQo
KTsKLX0KLQotYm9vbCBTZWxlY3RvckNoZWNrZXI6Om1hdGNoZXNGb2N1c1BzZXVkb0NsYXNzKGNv
bnN0IEVsZW1lbnQmIGVsZW1lbnQpCi17Ci0gICAgaWYgKEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6Zm9yY2VQc2V1ZG9TdGF0ZShlbGVtZW50LCBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NGb2N1
cykpCi0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgcmV0dXJuIChlbGVtZW50LmZvY3VzZWQo
KSB8fCBkb2VzU2hhZG93VHJlZUNvbnRhaW5Gb2N1c2VkRWxlbWVudChlbGVtZW50KSkgJiYgaXNG
cmFtZUZvY3VzZWQoZWxlbWVudCk7Ci19Ci0KLS8vIFRoaXMgbmVlZHMgdG8gbWF0Y2ggYSBzdWJz
ZXQgb2YgZWxlbWVudHMgbWF0Y2hlc0ZvY3VzUHNldWRvQ2xhc3MgbWF0Y2ggc2luY2UgZGlyZWN0
IGZvY3VzIGlzIHRyZWF0ZWQKLS8vIGFzIGEgcGFydCBvZiBmb2N1cyBwc2V1ZG8gY2xhc3Mgc2Vs
ZWN0b3JzIGluIEVsZW1lbnRSdWxlQ29sbGVjdG9yOjpjb2xsZWN0TWF0Y2hpbmdSdWxlcy4KLWJv
b2wgU2VsZWN0b3JDaGVja2VyOjptYXRjaGVzRGlyZWN0Rm9jdXNQc2V1ZG9DbGFzcyhjb25zdCBF
bGVtZW50JiBlbGVtZW50KQotewotICAgIGlmIChJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmZv
cmNlUHNldWRvU3RhdGUoZWxlbWVudCwgQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzRm9jdXMpKQot
ICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgIHJldHVybiBlbGVtZW50LmZvY3VzZWQoKSAmJiBp
c0ZyYW1lRm9jdXNlZChlbGVtZW50KTsKLX0KLQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3NzL1NlbGVjdG9yQ2hlY2tlci5oIGIvU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hl
Y2tlci5oCmluZGV4IGRiZWRhY2QwZDRkNTQ3NzAxNDEwMjJmMWJmODJiYmMxZjZkMDdhZmIuLmQx
YTNmN2E3ZDBhMDQxOTRhYWU4NzFmNGI1ODA4MWRmZmQzYjcyMDggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
U2VsZWN0b3JDaGVja2VyLmgKQEAgLTEwNiw4ICsxMDYsNiBAQCBjbGFzcyBTZWxlY3RvckNoZWNr
ZXIgewogICAgIGJvb2wgbWF0Y2hIb3N0UHNldWRvQ2xhc3MoY29uc3QgQ1NTU2VsZWN0b3ImLCBj
b25zdCBFbGVtZW50JiwgQ2hlY2tpbmdDb250ZXh0JikgY29uc3Q7CiAKICAgICBzdGF0aWMgYm9v
bCBpc0NvbW1vblBzZXVkb0NsYXNzU2VsZWN0b3IoY29uc3QgQ1NTU2VsZWN0b3IqKTsKLSAgICBz
dGF0aWMgYm9vbCBtYXRjaGVzRm9jdXNQc2V1ZG9DbGFzcyhjb25zdCBFbGVtZW50Jik7Ci0gICAg
c3RhdGljIGJvb2wgbWF0Y2hlc0RpcmVjdEZvY3VzUHNldWRvQ2xhc3MoY29uc3QgRWxlbWVudCYp
OwogICAgIHN0YXRpYyBib29sIGF0dHJpYnV0ZVNlbGVjdG9yTWF0Y2hlcyhjb25zdCBFbGVtZW50
JiwgY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21TdHJpbmcmIGF0dHJpYnV0ZVZhbHVl
LCBjb25zdCBDU1NTZWxlY3RvciYpOwogCiAgICAgZW51bSBMaW5rTWF0Y2hNYXNrIHsgTWF0Y2hE
ZWZhdWx0ID0gMCwgTWF0Y2hMaW5rID0gMSwgTWF0Y2hWaXNpdGVkID0gMiwgTWF0Y2hBbGwgPSBN
YXRjaExpbmsgfCBNYXRjaFZpc2l0ZWQgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9TZWxlY3RvckNoZWNrZXJUZXN0RnVuY3Rpb25zLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU2Vs
ZWN0b3JDaGVja2VyVGVzdEZ1bmN0aW9ucy5oCmluZGV4IDIxY2M5ZjJkZWZkMDMzYTFkMTQ0ZWM5
YTI5NGU2YWE4NTdjN2QxZWYuLjEwYTBiMzAwYWVjNTZlZThlMDhjM2JiNzQ5ZDUxNWM2MmMzNjQ1
ZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXJUZXN0RnVu
Y3Rpb25zLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlclRlc3RGdW5j
dGlvbnMuaApAQCAtMjcsMTIgKzI3LDE4IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkZv
Y3VzQ29udHJvbGxlci5oIgorI2luY2x1ZGUgIkZyYW1lLmgiCisjaW5jbHVkZSAiRnJhbWVTZWxl
Y3Rpb24uaCIKICNpbmNsdWRlICJGdWxsc2NyZWVuTWFuYWdlci5oIgogI2luY2x1ZGUgIkhUTUxG
cmFtZUVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MSUZyYW1lRWxlbWVudC5oIgorI2luY2x1ZGUg
IkhUTUxJbWFnZUVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MSW5wdXRFbGVtZW50LmgiCiAjaW5j
bHVkZSAiSFRNTE9wdGlvbkVsZW1lbnQuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb24uaCIKKyNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiU2VsZWN0b3JDaGVja2VyLmgi
CisjaW5jbHVkZSAiU2hhZG93Um9vdC5oIgogI2luY2x1ZGUgPHd0Zi9Db21waWxlci5oPgogCiAj
aWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKQEAgLTQzNyw0ICs0NDMsMzMgQEAgQUxXQVlT
X0lOTElORSBib29sIG1hdGNoZXNQYXN0Q3VlUHNldWRvQ2xhc3MoY29uc3QgRWxlbWVudCYgZWxl
bWVudCkKIAogI2VuZGlmCiAKK0FMV0FZU19JTkxJTkUgYm9vbCBpc0ZyYW1lRm9jdXNlZChjb25z
dCBFbGVtZW50JiBlbGVtZW50KQoreworICAgIHJldHVybiBlbGVtZW50LmRvY3VtZW50KCkuZnJh
bWUoKSAmJiBlbGVtZW50LmRvY3VtZW50KCkuZnJhbWUoKS0+c2VsZWN0aW9uKCkuaXNGb2N1c2Vk
QW5kQWN0aXZlKCk7Cit9CisKKy8vIFRoaXMgbmVlZHMgdG8gbWF0Y2ggYSBzdWJzZXQgb2YgZWxl
bWVudHMgbWF0Y2hlc0ZvY3VzUHNldWRvQ2xhc3MgbWF0Y2ggc2luY2UgZGlyZWN0IGZvY3VzIGlz
IHRyZWF0ZWQKKy8vIGFzIGEgcGFydCBvZiBmb2N1cyBwc2V1ZG8gY2xhc3Mgc2VsZWN0b3JzIGlu
IEVsZW1lbnRSdWxlQ29sbGVjdG9yOjpjb2xsZWN0TWF0Y2hpbmdSdWxlcy4KK0FMV0FZU19JTkxJ
TkUgYm9vbCBtYXRjaGVzRGlyZWN0Rm9jdXNQc2V1ZG9DbGFzcyhjb25zdCBFbGVtZW50JiBlbGVt
ZW50KQoreworICAgIGlmIChJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmZvcmNlUHNldWRvU3Rh
dGUoZWxlbWVudCwgQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzRm9jdXMpKQorICAgICAgICByZXR1
cm4gdHJ1ZTsKKworICAgIHJldHVybiBlbGVtZW50LmZvY3VzZWQoKSAmJiBpc0ZyYW1lRm9jdXNl
ZChlbGVtZW50KTsKK30KKworQUxXQVlTX0lOTElORSBib29sIGRvZXNTaGFkb3dUcmVlQ29udGFp
bkZvY3VzZWRFbGVtZW50KGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQpCit7CisgICAgYXV0byogc2hh
ZG93Um9vdCA9IGVsZW1lbnQuc2hhZG93Um9vdCgpOworICAgIHJldHVybiBzaGFkb3dSb290ICYm
IHNoYWRvd1Jvb3QtPmNvbnRhaW5zRm9jdXNlZEVsZW1lbnQoKTsKK30KKworQUxXQVlTX0lOTElO
RSBib29sIG1hdGNoZXNGb2N1c1BzZXVkb0NsYXNzKGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQpCit7
CisgICAgaWYgKEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6Zm9yY2VQc2V1ZG9TdGF0ZShlbGVt
ZW50LCBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NGb2N1cykpCisgICAgICAgIHJldHVybiB0cnVl
OworCisgICAgcmV0dXJuIChlbGVtZW50LmZvY3VzZWQoKSB8fCBkb2VzU2hhZG93VHJlZUNvbnRh
aW5Gb2N1c2VkRWxlbWVudChlbGVtZW50KSkgJiYgaXNGcmFtZUZvY3VzZWQoZWxlbWVudCk7Cit9
CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nz
c2ppdC9DU1NQdHJUYWcuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzc2ppdC9DU1NQdHJUYWcuaAppbmRl
eCA3OGQwZTgzNWU3OWZmNDc2MGM2ZTBlZmE1OWVhNWNmMDI1ZmI5MmU5Li40YjI1M2NkNjM5MWMw
M2MwZmUxOTk4Yjc2MjQ0NTgyNWZmNTU5YzY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
c3NqaXQvQ1NTUHRyVGFnLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3Nzaml0L0NTU1B0clRhZy5o
CkBAIC0zMyw3ICszMyw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogI2RlZmluZSBGT1JfRUFD
SF9DU1NfUFRSVEFHKHYpIFwKICAgICB2KENTU1NlbGVjdG9yUHRyVGFnKSBcCi0gICAgdihDU1NP
cGVyYXRpb25QdHJUYWcpIFwKIAogI2lmIENPTVBJTEVSKE1TVkMpCiAjcHJhZ21hIHdhcm5pbmco
cHVzaCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzc2ppdC9GdW5jdGlvbkNhbGwuaCBi
L1NvdXJjZS9XZWJDb3JlL2Nzc2ppdC9GdW5jdGlvbkNhbGwuaAppbmRleCAxNjQyMWU4YjI0MmQw
ODA1Mzg3ZGUyZjU2MzJkMDNhMzI4YmExNTA3Li43YTdkM2E2NjhkNGVlYzg2ZWY4ZGRkZTg0YWY3
MmJjYjkzZjJlMTJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3NqaXQvRnVuY3Rpb25D
YWxsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3Nzaml0L0Z1bmN0aW9uQ2FsbC5oCkBAIC0zNyw3
ICszNyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRnVuY3Rpb25DYWxsIHsKIHB1
YmxpYzoKLSAgICBGdW5jdGlvbkNhbGwoSlNDOjpNYWNyb0Fzc2VtYmxlciYgYXNzZW1ibGVyLCBS
ZWdpc3RlckFsbG9jYXRvciYgcmVnaXN0ZXJBbGxvY2F0b3IsIFN0YWNrQWxsb2NhdG9yJiBzdGFj
a0FsbG9jYXRvciwgVmVjdG9yPHN0ZDo6cGFpcjxKU0M6Ok1hY3JvQXNzZW1ibGVyOjpDYWxsLCBK
U0M6OkZ1bmN0aW9uUHRyPENTU09wZXJhdGlvblB0clRhZz4+LCAzMj4mIGNhbGxSZWdpc3RyeSkK
KyAgICBGdW5jdGlvbkNhbGwoSlNDOjpNYWNyb0Fzc2VtYmxlciYgYXNzZW1ibGVyLCBSZWdpc3Rl
ckFsbG9jYXRvciYgcmVnaXN0ZXJBbGxvY2F0b3IsIFN0YWNrQWxsb2NhdG9yJiBzdGFja0FsbG9j
YXRvciwgVmVjdG9yPHN0ZDo6cGFpcjxKU0M6Ok1hY3JvQXNzZW1ibGVyOjpDYWxsLCBKU0M6OkZ1
bmN0aW9uUHRyPEpTQzo6T3BlcmF0aW9uUHRyVGFnPj4sIDMyPiYgY2FsbFJlZ2lzdHJ5KQogICAg
ICAgICA6IG1fYXNzZW1ibGVyKGFzc2VtYmxlcikKICAgICAgICAgLCBtX3JlZ2lzdGVyQWxsb2Nh
dG9yKHJlZ2lzdGVyQWxsb2NhdG9yKQogICAgICAgICAsIG1fc3RhY2tBbGxvY2F0b3Ioc3RhY2tB
bGxvY2F0b3IpCkBAIC00OCw3ICs0OCw3IEBAIGNsYXNzIEZ1bmN0aW9uQ2FsbCB7CiAgICAgewog
ICAgIH0KIAotICAgIHZvaWQgc2V0RnVuY3Rpb25BZGRyZXNzKEpTQzo6RnVuY3Rpb25QdHI8Q1NT
T3BlcmF0aW9uUHRyVGFnPiBmdW5jdGlvbkFkZHJlc3MpCisgICAgdm9pZCBzZXRGdW5jdGlvbkFk
ZHJlc3MoSlNDOjpGdW5jdGlvblB0cjxKU0M6Ok9wZXJhdGlvblB0clRhZz4gZnVuY3Rpb25BZGRy
ZXNzKQogICAgIHsKICAgICAgICAgbV9mdW5jdGlvbkFkZHJlc3MgPSBmdW5jdGlvbkFkZHJlc3M7
CiAgICAgfQpAQCAtMTQ4LDcgKzE0OCw3IEBAIGNsYXNzIEZ1bmN0aW9uQ2FsbCB7CiAgICAgICAg
ICAgICAgICAgbV9hc3NlbWJsZXIubW92ZShtX2ZpcnN0QXJndW1lbnQsIEpTQzo6R1BSSW5mbzo6
YXJndW1lbnRHUFIwKTsKICAgICAgICAgfQogCi0gICAgICAgIEpTQzo6TWFjcm9Bc3NlbWJsZXI6
OkNhbGwgY2FsbCA9IG1fYXNzZW1ibGVyLmNhbGwoQ1NTT3BlcmF0aW9uUHRyVGFnKTsKKyAgICAg
ICAgSlNDOjpNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBjYWxsID0gbV9hc3NlbWJsZXIuY2FsbChKU0M6
Ok9wZXJhdGlvblB0clRhZyk7CiAgICAgICAgIG1fY2FsbFJlZ2lzdHJ5LmFwcGVuZChzdGQ6Om1h
a2VfcGFpcihjYWxsLCBtX2Z1bmN0aW9uQWRkcmVzcykpOwogICAgIH0KIApAQCAtMTc5LDEyICsx
NzksMTIgQEAgY2xhc3MgRnVuY3Rpb25DYWxsIHsKICAgICBKU0M6Ok1hY3JvQXNzZW1ibGVyJiBt
X2Fzc2VtYmxlcjsKICAgICBSZWdpc3RlckFsbG9jYXRvciYgbV9yZWdpc3RlckFsbG9jYXRvcjsK
ICAgICBTdGFja0FsbG9jYXRvciYgbV9zdGFja0FsbG9jYXRvcjsKLSAgICBWZWN0b3I8c3RkOjpw
YWlyPEpTQzo6TWFjcm9Bc3NlbWJsZXI6OkNhbGwsIEpTQzo6RnVuY3Rpb25QdHI8Q1NTT3BlcmF0
aW9uUHRyVGFnPj4sIDMyPiYgbV9jYWxsUmVnaXN0cnk7CisgICAgVmVjdG9yPHN0ZDo6cGFpcjxK
U0M6Ok1hY3JvQXNzZW1ibGVyOjpDYWxsLCBKU0M6OkZ1bmN0aW9uUHRyPEpTQzo6T3BlcmF0aW9u
UHRyVGFnPj4sIDMyPiYgbV9jYWxsUmVnaXN0cnk7CiAKICAgICBSZWdpc3RlclZlY3RvciBtX3Nh
dmVkUmVnaXN0ZXJzOwogICAgIFN0YWNrQWxsb2NhdG9yOjpTdGFja1JlZmVyZW5jZVZlY3RvciBt
X3NhdmVkUmVnaXN0ZXJTdGFja1JlZmVyZW5jZXM7CiAgICAgCi0gICAgSlNDOjpGdW5jdGlvblB0
cjxDU1NPcGVyYXRpb25QdHJUYWc+IG1fZnVuY3Rpb25BZGRyZXNzOworICAgIEpTQzo6RnVuY3Rp
b25QdHI8SlNDOjpPcGVyYXRpb25QdHJUYWc+IG1fZnVuY3Rpb25BZGRyZXNzOwogICAgIHVuc2ln
bmVkIG1fYXJndW1lbnRDb3VudDsKICAgICBKU0M6Ok1hY3JvQXNzZW1ibGVyOjpSZWdpc3RlcklE
IG1fZmlyc3RBcmd1bWVudDsKICAgICBKU0M6Ok1hY3JvQXNzZW1ibGVyOjpSZWdpc3RlcklEIG1f
c2Vjb25kQXJndW1lbnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3NqaXQvU2VsZWN0
b3JDb21waWxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3NqaXQvU2VsZWN0b3JDb21waWxlci5j
cHAKaW5kZXggNzMwOTBhNWUxYzk0NDgxMmRjZTYxYmY1NjM1MWZlZmJjZmJhNjJmZS4uMjE0OTI0
YmZlNWMzZTg5ZWU1ZTBjNzQ2NTRlNWQwMTg2MWFiMDFhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3Nzaml0L1NlbGVjdG9yQ29tcGlsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nz
c2ppdC9TZWxlY3RvckNvbXBpbGVyLmNwcApAQCAtNjQsNiArNjQsNjggQEAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIG5hbWVzcGFjZSBTZWxlY3RvckNvbXBpbGVyIHsKIAorc3RhdGljIEpTQ19ERUNM
QVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uQWRkU3R5bGVSZWxhdGlvbkZ1bmN0aW9uLCB2b2lk
LCAoU2VsZWN0b3JDaGVja2VyOjpDaGVja2luZ0NvbnRleHQqLCBjb25zdCBFbGVtZW50KikpOwor
c3RhdGljIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uRWxlbWVudElzQWN0aXZl
LCBib29sLCAoY29uc3QgRWxlbWVudCopKTsKK3N0YXRpYyBKU0NfREVDTEFSRV9KSVRfT1BFUkFU
SU9OKG9wZXJhdGlvbkVsZW1lbnRJc0hvdmVyZWQsIGJvb2wsIChjb25zdCBFbGVtZW50KikpOwor
c3RhdGljIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uSXNQbGFjZWhvbGRlclNo
b3duLCBib29sLCAoY29uc3QgRWxlbWVudCopKTsKK3N0YXRpYyBKU0NfREVDTEFSRV9KSVRfT1BF
UkFUSU9OKG9wZXJhdGlvbk1ha2VDb250ZXh0U3R5bGVVbmlxdWVJZk5lY2Vzc2FyeUFuZFRlc3RJ
c1BsYWNlaG9sZGVyU2hvd24sIGJvb2wsIChjb25zdCBFbGVtZW50KiwgU2VsZWN0b3JDaGVja2Vy
OjpDaGVja2luZ0NvbnRleHQqKSk7CisjaWYgQ1BVKEFSTV9USFVNQjIpICYmICFDUFUoQVBQTEVf
QVJNVjdTKQorc3RhdGljIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTW9kdWxv
SGVscGVyLCBpbnQsIChpbnQgZGl2aWRlbmQsIGludCBkaXZpc29yKSk7CisjZW5kaWYKK3N0YXRp
YyBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvblN5bmNocm9uaXplQWxsQW5pbWF0
ZWRTVkdBdHRyaWJ1dGUsIHZvaWQsIChTVkdFbGVtZW50JikpOworc3RhdGljIEpTQ19ERUNMQVJF
X0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uU3luY2hyb25pemVTdHlsZUF0dHJpYnV0ZUludGVybmFs
LCB2b2lkLCAoU3R5bGVkRWxlbWVudCogc3R5bGVkRWxlbWVudCkpOworc3RhdGljIEpTQ19ERUNM
QVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uRXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZU5vbk51bGws
IGJvb2wsIChjb25zdCBTdHJpbmdJbXBsKiwgY29uc3QgU3RyaW5nSW1wbCopKTsKK3N0YXRpYyBK
U0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbklzQXV0b2ZpbGxlZCwgYm9vbCwgKGNv
bnN0IEVsZW1lbnQmKSk7CitzdGF0aWMgSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRp
b25Jc0F1dG9maWxsZWRTdHJvbmdQYXNzd29yZCwgYm9vbCwgKGNvbnN0IEVsZW1lbnQmKSk7Citz
dGF0aWMgSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25Jc0F1dG9maWxsZWRTdHJv
bmdQYXNzd29yZFZpZXdhYmxlLCBib29sLCAoY29uc3QgRWxlbWVudCYpKTsKK3N0YXRpYyBKU0Nf
REVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbklzQ2hlY2tlZCwgYm9vbCwgKGNvbnN0IEVs
ZW1lbnQmKSk7CitzdGF0aWMgSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25NYXRj
aGVzRGVmYXVsdFBzZXVkb0NsYXNzLCBib29sLCAoY29uc3QgRWxlbWVudCYpKTsKK3N0YXRpYyBK
U0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk1hdGNoZXNEaXNhYmxlZFBzZXVkb0Ns
YXNzLCBib29sLCAoY29uc3QgRWxlbWVudCYpKTsKK3N0YXRpYyBKU0NfREVDTEFSRV9KSVRfT1BF
UkFUSU9OKG9wZXJhdGlvbk1hdGNoZXNFbmFibGVkUHNldWRvQ2xhc3MsIGJvb2wsIChjb25zdCBF
bGVtZW50JikpOworc3RhdGljIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uSXNE
ZWZpbmVkRWxlbWVudCwgYm9vbCwgKGNvbnN0IEVsZW1lbnQmKSk7CitzdGF0aWMgSlNDX0RFQ0xB
UkVfSklUX09QRVJBVElPTihvcGVyYXRpb25NYXRjaGVzRGlyZWN0Rm9jdXNQc2V1ZG9DbGFzcywg
Ym9vbCwgKGNvbnN0IEVsZW1lbnQmKSk7CitzdGF0aWMgSlNDX0RFQ0xBUkVfSklUX09QRVJBVElP
TihvcGVyYXRpb25NYXRjaGVzRm9jdXNQc2V1ZG9DbGFzcywgYm9vbCwgKGNvbnN0IEVsZW1lbnQm
KSk7CitzdGF0aWMgSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25Jc01lZGlhRG9j
dW1lbnQsIGJvb2wsIChjb25zdCBFbGVtZW50JikpOworc3RhdGljIEpTQ19ERUNMQVJFX0pJVF9P
UEVSQVRJT04ob3BlcmF0aW9uSXNJblJhbmdlLCBib29sLCAoY29uc3QgRWxlbWVudCYpKTsKK3N0
YXRpYyBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk1hdGNoZXNJbmRldGVybWlu
YXRlUHNldWRvQ2xhc3MsIGJvb2wsIChjb25zdCBFbGVtZW50JikpOworc3RhdGljIEpTQ19ERUNM
QVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uSXNJbnZhbGlkLCBib29sLCAoY29uc3QgRWxlbWVu
dCYpKTsKK3N0YXRpYyBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbklzT3B0aW9u
YWxGb3JtQ29udHJvbCwgYm9vbCwgKGNvbnN0IEVsZW1lbnQmKSk7CitzdGF0aWMgSlNDX0RFQ0xB
UkVfSklUX09QRVJBVElPTihvcGVyYXRpb25Jc091dE9mUmFuZ2UsIGJvb2wsIChjb25zdCBFbGVt
ZW50JikpOworc3RhdGljIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTWF0Y2hl
c1JlYWRPbmx5UHNldWRvQ2xhc3MsIGJvb2wsIChjb25zdCBFbGVtZW50JikpOworc3RhdGljIEpT
Q19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTWF0Y2hlc1JlYWRXcml0ZVBzZXVkb0Ns
YXNzLCBib29sLCAoY29uc3QgRWxlbWVudCYpKTsKK3N0YXRpYyBKU0NfREVDTEFSRV9KSVRfT1BF
UkFUSU9OKG9wZXJhdGlvbklzUmVxdWlyZWRGb3JtQ29udHJvbCwgYm9vbCwgKGNvbnN0IEVsZW1l
bnQmKSk7CitzdGF0aWMgSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25Jc1ZhbGlk
LCBib29sLCAoY29uc3QgRWxlbWVudCYpKTsKK3N0YXRpYyBKU0NfREVDTEFSRV9KSVRfT1BFUkFU
SU9OKG9wZXJhdGlvbklzV2luZG93SW5hY3RpdmUsIGJvb2wsIChjb25zdCBFbGVtZW50JikpOwor
c3RhdGljIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTWF0Y2hlc0xhbmdQc2V1
ZG9DbGFzcywgYm9vbCwgKGNvbnN0IEVsZW1lbnQmLCBjb25zdCBWZWN0b3I8QXRvbVN0cmluZz4m
KSk7CisjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQorc3RhdGljIEpTQ19ERUNMQVJFX0pJVF9P
UEVSQVRJT04ob3BlcmF0aW9uTWF0Y2hlc0Z1bGxTY3JlZW5Qc2V1ZG9DbGFzcywgYm9vbCwgKGNv
bnN0IEVsZW1lbnQmKSk7CitzdGF0aWMgSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRp
b25NYXRjaGVzRnVsbFNjcmVlbkRvY3VtZW50UHNldWRvQ2xhc3MsIGJvb2wsIChjb25zdCBFbGVt
ZW50JikpOworc3RhdGljIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTWF0Y2hl
c0Z1bGxTY3JlZW5BbmNlc3RvclBzZXVkb0NsYXNzLCBib29sLCAoY29uc3QgRWxlbWVudCYpKTsK
K3N0YXRpYyBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk1hdGNoZXNGdWxsU2Ny
ZWVuQW5pbWF0aW5nRnVsbFNjcmVlblRyYW5zaXRpb25Qc2V1ZG9DbGFzcywgYm9vbCwgKGNvbnN0
IEVsZW1lbnQmKSk7CitzdGF0aWMgSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25N
YXRjaGVzRnVsbFNjcmVlbkNvbnRyb2xzSGlkZGVuUHNldWRvQ2xhc3MsIGJvb2wsIChjb25zdCBF
bGVtZW50JikpOworI2VuZGlmCisjaWYgRU5BQkxFKFBJQ1RVUkVfSU5fUElDVFVSRV9BUEkpCitz
dGF0aWMgSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25NYXRjaGVzUGljdHVyZUlu
UGljdHVyZVBzZXVkb0NsYXNzLCBib29sLCAoY29uc3QgRWxlbWVudCYpKTsKKyNlbmRpZgorI2lm
IEVOQUJMRShWSURFTykKK3N0YXRpYyBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlv
bk1hdGNoZXNGdXR1cmVDdWVQc2V1ZG9DbGFzcywgYm9vbCwgKGNvbnN0IEVsZW1lbnQmKSk7Citz
dGF0aWMgSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25NYXRjaGVzUGFzdEN1ZVBz
ZXVkb0NsYXNzLCBib29sLCAoY29uc3QgRWxlbWVudCYpKTsKKyNlbmRpZgorI2lmIEVOQUJMRShB
VFRBQ0hNRU5UX0VMRU1FTlQpCitzdGF0aWMgSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVy
YXRpb25IYXNBdHRhY2htZW50LCBib29sLCAoY29uc3QgRWxlbWVudCYpKTsKKyNlbmRpZgorCitz
dGF0aWMgSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25BdHRyaWJ1dGVWYWx1ZUJl
Z2luc1dpdGhDYXNlU2Vuc2l0aXZlLCBib29sLCAoY29uc3QgQXR0cmlidXRlKiBhdHRyaWJ1dGUs
IEF0b21TdHJpbmdJbXBsKiBleHBlY3RlZFN0cmluZykpOworc3RhdGljIEpTQ19ERUNMQVJFX0pJ
VF9PUEVSQVRJT04ob3BlcmF0aW9uQXR0cmlidXRlVmFsdWVCZWdpbnNXaXRoQ2FzZUluc2Vuc2l0
aXZlLCBib29sLCAoY29uc3QgQXR0cmlidXRlKiBhdHRyaWJ1dGUsIEF0b21TdHJpbmdJbXBsKiBl
eHBlY3RlZFN0cmluZykpOworc3RhdGljIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0
aW9uQXR0cmlidXRlVmFsdWVDb250YWluc0Nhc2VTZW5zaXRpdmUsIGJvb2wsIChjb25zdCBBdHRy
aWJ1dGUqIGF0dHJpYnV0ZSwgQXRvbVN0cmluZ0ltcGwqIGV4cGVjdGVkU3RyaW5nKSk7CitzdGF0
aWMgSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25BdHRyaWJ1dGVWYWx1ZUNvbnRh
aW5zQ2FzZUluc2Vuc2l0aXZlLCBib29sLCAoY29uc3QgQXR0cmlidXRlKiBhdHRyaWJ1dGUsIEF0
b21TdHJpbmdJbXBsKiBleHBlY3RlZFN0cmluZykpOworc3RhdGljIEpTQ19ERUNMQVJFX0pJVF9P
UEVSQVRJT04ob3BlcmF0aW9uQXR0cmlidXRlVmFsdWVFbmRzV2l0aENhc2VTZW5zaXRpdmUsIGJv
b2wsIChjb25zdCBBdHRyaWJ1dGUqIGF0dHJpYnV0ZSwgQXRvbVN0cmluZ0ltcGwqIGV4cGVjdGVk
U3RyaW5nKSk7CitzdGF0aWMgSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25BdHRy
aWJ1dGVWYWx1ZUVuZHNXaXRoQ2FzZUluc2Vuc2l0aXZlLCBib29sLCAoY29uc3QgQXR0cmlidXRl
KiBhdHRyaWJ1dGUsIEF0b21TdHJpbmdJbXBsKiBleHBlY3RlZFN0cmluZykpOworc3RhdGljIEpT
Q19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uQXR0cmlidXRlVmFsdWVNYXRjaEh5cGhl
blJ1bGVDYXNlU2Vuc2l0aXZlLCBib29sLCAoY29uc3QgQXR0cmlidXRlKiBhdHRyaWJ1dGUsIEF0
b21TdHJpbmdJbXBsKiBleHBlY3RlZFN0cmluZykpOworc3RhdGljIEpTQ19ERUNMQVJFX0pJVF9P
UEVSQVRJT04ob3BlcmF0aW9uQXR0cmlidXRlVmFsdWVNYXRjaEh5cGhlblJ1bGVDYXNlSW5zZW5z
aXRpdmUsIGJvb2wsIChjb25zdCBBdHRyaWJ1dGUqIGF0dHJpYnV0ZSwgQXRvbVN0cmluZ0ltcGwq
IGV4cGVjdGVkU3RyaW5nKSk7CitzdGF0aWMgSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVy
YXRpb25BdHRyaWJ1dGVWYWx1ZVNwYWNlU2VwYXJhdGVkTGlzdENvbnRhaW5zQ2FzZVNlbnNpdGl2
ZSwgYm9vbCwgKGNvbnN0IEF0dHJpYnV0ZSogYXR0cmlidXRlLCBBdG9tU3RyaW5nSW1wbCogZXhw
ZWN0ZWRTdHJpbmcpKTsKK3N0YXRpYyBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlv
bkF0dHJpYnV0ZVZhbHVlU3BhY2VTZXBhcmF0ZWRMaXN0Q29udGFpbnNDYXNlSW5zZW5zaXRpdmUs
IGJvb2wsIChjb25zdCBBdHRyaWJ1dGUqIGF0dHJpYnV0ZSwgQXRvbVN0cmluZ0ltcGwqIGV4cGVj
dGVkU3RyaW5nKSk7CisKICNkZWZpbmUgQ1NTX1NFTEVDVE9SX0pJVF9ERUJVR0dJTkcgMAogCiBl
bnVtIGNsYXNzIEJhY2t0cmFja2luZ0FjdGlvbiB7CkBAIC0xOTIsOCArMjU0LDYgQEAgc3RydWN0
IFNlbGVjdG9yRnJhZ21lbnQgewogICAgIHVuc2lnbmVkIHRhZ05hbWVOb3RNYXRjaGVkQmFja3Ry
YWNraW5nU3RhcnRXaWR0aEZyb21JbmRpcmVjdEFkamFjZW50ID0gaW52YWxpZFdpZHRoOwogICAg
IHVuc2lnbmVkIHdpZHRoRnJvbUluZGlyZWN0QWRqYWNlbnQgPSAwOwogCi0gICAgRnVuY3Rpb25U
eXBlIGFwcGVuZFVub3B0aW1pemVkUHNldWRvQ2xhc3NXaXRoQ29udGV4dChib29sICgqbWF0Y2hl
cikoY29uc3QgU2VsZWN0b3JDaGVja2VyOjpDaGVja2luZ0NvbnRleHQmKSk7Ci0KICAgICAvLyBG
SVhNRTogdGhlIGxhcmdlIHN0YWNrIGFsbG9jYXRpb24gY2F1c2VkIGJ5IHRoZSBpbmxpbmUgY2Fw
YWNpdHkgY2F1c2VzIG1lbW9yeSBpbmVmZmljaWVuY3kuIFdlIHNob3VsZCBkdW1wCiAgICAgLy8g
dGhlIG1pbi9tYXgvYXZlcmFnZSBvZiB0aGUgdmVjdG9ycyBhbmQgcGljayBiZXR0ZXIgaW5saW5l
IGNhcGFjaXR5LgogICAgIGNvbnN0IENTU1NlbGVjdG9yKiB0YWdOYW1lU2VsZWN0b3IgPSBudWxs
cHRyOwpAQCAtMjAxLDggKzI2MSw3IEBAIHN0cnVjdCBTZWxlY3RvckZyYWdtZW50IHsKICAgICBW
ZWN0b3I8Y29uc3QgVmVjdG9yPEF0b21TdHJpbmc+Kj4gbGFuZ3VhZ2VBcmd1bWVudHNMaXN0Owog
ICAgIFZlY3Rvcjxjb25zdCBBdG9tU3RyaW5nSW1wbCosIDg+IGNsYXNzTmFtZXM7CiAgICAgSGFz
aFNldDx1bnNpZ25lZD4gcHNldWRvQ2xhc3NlczsKLSAgICBWZWN0b3I8SlNDOjpGdW5jdGlvblB0
cjxDU1NPcGVyYXRpb25QdHJUYWc+LCA0PiB1bm9wdGltaXplZFBzZXVkb0NsYXNzZXM7Ci0gICAg
VmVjdG9yPEpTQzo6RnVuY3Rpb25QdHI8Q1NTT3BlcmF0aW9uUHRyVGFnPiwgND4gdW5vcHRpbWl6
ZWRQc2V1ZG9DbGFzc2VzV2l0aENvbnRleHQ7CisgICAgVmVjdG9yPEpTQzo6RnVuY3Rpb25QdHI8
SlNDOjpPcGVyYXRpb25QdHJUYWc+LCA0PiB1bm9wdGltaXplZFBzZXVkb0NsYXNzZXM7CiAgICAg
VmVjdG9yPEF0dHJpYnV0ZU1hdGNoaW5nSW5mbywgND4gYXR0cmlidXRlczsKICAgICBWZWN0b3I8
c3RkOjpwYWlyPGludCwgaW50PiwgMj4gbnRoQ2hpbGRGaWx0ZXJzOwogICAgIFZlY3RvcjxOdGhD
aGlsZE9mU2VsZWN0b3JJbmZvPiBudGhDaGlsZE9mRmlsdGVyczsKQEAgLTI5Myw4ICszNTIsNyBA
QCBjbGFzcyBTZWxlY3RvckNvZGVHZW5lcmF0b3IgewogICAgIHZvaWQgZ2VuZXJhdGVFbGVtZW50
TWF0Y2hpbmcoQXNzZW1ibGVyOjpKdW1wTGlzdCYgbWF0Y2hpbmdUYWdOYW1lRmFpbHVyZUNhc2Vz
LCBBc3NlbWJsZXI6Okp1bXBMaXN0JiBtYXRjaGluZ1Bvc3RUYWdOYW1lRmFpbHVyZUNhc2VzLCBj
b25zdCBTZWxlY3RvckZyYWdtZW50Jik7CiAgICAgdm9pZCBnZW5lcmF0ZUVsZW1lbnREYXRhTWF0
Y2hpbmcoQXNzZW1ibGVyOjpKdW1wTGlzdCYgZmFpbHVyZUNhc2VzLCBjb25zdCBTZWxlY3RvckZy
YWdtZW50Jik7CiAgICAgdm9pZCBnZW5lcmF0ZUVsZW1lbnRMaW5rTWF0Y2hpbmcoQXNzZW1ibGVy
OjpKdW1wTGlzdCYgZmFpbHVyZUNhc2VzLCBjb25zdCBTZWxlY3RvckZyYWdtZW50Jik7Ci0gICAg
dm9pZCBnZW5lcmF0ZUVsZW1lbnRGdW5jdGlvbkNhbGxUZXN0KEFzc2VtYmxlcjo6SnVtcExpc3Qm
IGZhaWx1cmVDYXNlcywgSlNDOjpGdW5jdGlvblB0cjxDU1NPcGVyYXRpb25QdHJUYWc+KTsKLSAg
ICB2b2lkIGdlbmVyYXRlQ29udGV4dEZ1bmN0aW9uQ2FsbFRlc3QoQXNzZW1ibGVyOjpKdW1wTGlz
dCYgZmFpbHVyZUNhc2VzLCBKU0M6OkZ1bmN0aW9uUHRyPENTU09wZXJhdGlvblB0clRhZz4pOwor
ICAgIHZvaWQgZ2VuZXJhdGVFbGVtZW50RnVuY3Rpb25DYWxsVGVzdChBc3NlbWJsZXI6Okp1bXBM
aXN0JiBmYWlsdXJlQ2FzZXMsIEpTQzo6RnVuY3Rpb25QdHI8SlNDOjpPcGVyYXRpb25QdHJUYWc+
KTsKICAgICB2b2lkIGdlbmVyYXRlRWxlbWVudElzQWN0aXZlKEFzc2VtYmxlcjo6SnVtcExpc3Qm
IGZhaWx1cmVDYXNlcywgY29uc3QgU2VsZWN0b3JGcmFnbWVudCYpOwogICAgIHZvaWQgZ2VuZXJh
dGVFbGVtZW50SXNFbXB0eShBc3NlbWJsZXI6Okp1bXBMaXN0JiBmYWlsdXJlQ2FzZXMpOwogICAg
IHZvaWQgZ2VuZXJhdGVFbGVtZW50SXNGaXJzdENoaWxkKEFzc2VtYmxlcjo6SnVtcExpc3QmIGZh
aWx1cmVDYXNlcyk7CkBAIC0zMTAsNyArMzY4LDcgQEAgY2xhc3MgU2VsZWN0b3JDb2RlR2VuZXJh
dG9yIHsKICAgICB2b2lkIGdlbmVyYXRlRWxlbWVudEF0dHJpYnV0ZU1hdGNoaW5nKEFzc2VtYmxl
cjo6SnVtcExpc3QmIGZhaWx1cmVDYXNlcywgQXNzZW1ibGVyOjpSZWdpc3RlcklEIGN1cnJlbnRB
dHRyaWJ1dGVBZGRyZXNzLCBBc3NlbWJsZXI6OlJlZ2lzdGVySUQgZGVjSW5kZXhSZWdpc3Rlciwg
Y29uc3QgQXR0cmlidXRlTWF0Y2hpbmdJbmZvJiBhdHRyaWJ1dGVJbmZvKTsKICAgICB2b2lkIGdl
bmVyYXRlRWxlbWVudEF0dHJpYnV0ZVZhbHVlTWF0Y2hpbmcoQXNzZW1ibGVyOjpKdW1wTGlzdCYg
ZmFpbHVyZUNhc2VzLCBBc3NlbWJsZXI6OlJlZ2lzdGVySUQgY3VycmVudEF0dHJpYnV0ZUFkZHJl
c3MsIGNvbnN0IEF0dHJpYnV0ZU1hdGNoaW5nSW5mbyYgYXR0cmlidXRlSW5mbyk7CiAgICAgdm9p
ZCBnZW5lcmF0ZUVsZW1lbnRBdHRyaWJ1dGVWYWx1ZUV4YWN0TWF0Y2hpbmcoQXNzZW1ibGVyOjpK
dW1wTGlzdCYgZmFpbHVyZUNhc2VzLCBBc3NlbWJsZXI6OlJlZ2lzdGVySUQgY3VycmVudEF0dHJp
YnV0ZUFkZHJlc3MsIGNvbnN0IEF0b21TdHJpbmcmIGV4cGVjdGVkVmFsdWUsIEF0dHJpYnV0ZUNh
c2VTZW5zaXRpdml0eSB2YWx1ZUNhc2VTZW5zaXRpdml0eSk7Ci0gICAgdm9pZCBnZW5lcmF0ZUVs
ZW1lbnRBdHRyaWJ1dGVGdW5jdGlvbkNhbGxWYWx1ZU1hdGNoaW5nKEFzc2VtYmxlcjo6SnVtcExp
c3QmIGZhaWx1cmVDYXNlcywgQXNzZW1ibGVyOjpSZWdpc3RlcklEIGN1cnJlbnRBdHRyaWJ1dGVB
ZGRyZXNzLCBjb25zdCBBdG9tU3RyaW5nJiBleHBlY3RlZFZhbHVlLCBBdHRyaWJ1dGVDYXNlU2Vu
c2l0aXZpdHkgdmFsdWVDYXNlU2Vuc2l0aXZpdHksIEpTQzo6RnVuY3Rpb25QdHI8Q1NTT3BlcmF0
aW9uUHRyVGFnPiBjYXNlU2Vuc2l0aXZlVGVzdCwgSlNDOjpGdW5jdGlvblB0cjxDU1NPcGVyYXRp
b25QdHJUYWc+IGNhc2VJbnNlbnNpdGl2ZVRlc3QpOworICAgIHZvaWQgZ2VuZXJhdGVFbGVtZW50
QXR0cmlidXRlRnVuY3Rpb25DYWxsVmFsdWVNYXRjaGluZyhBc3NlbWJsZXI6Okp1bXBMaXN0JiBm
YWlsdXJlQ2FzZXMsIEFzc2VtYmxlcjo6UmVnaXN0ZXJJRCBjdXJyZW50QXR0cmlidXRlQWRkcmVz
cywgY29uc3QgQXRvbVN0cmluZyYgZXhwZWN0ZWRWYWx1ZSwgQXR0cmlidXRlQ2FzZVNlbnNpdGl2
aXR5IHZhbHVlQ2FzZVNlbnNpdGl2aXR5LCBKU0M6OkZ1bmN0aW9uUHRyPEpTQzo6T3BlcmF0aW9u
UHRyVGFnPiBjYXNlU2Vuc2l0aXZlVGVzdCwgSlNDOjpGdW5jdGlvblB0cjxKU0M6Ok9wZXJhdGlv
blB0clRhZz4gY2FzZUluc2Vuc2l0aXZlVGVzdCk7CiAgICAgdm9pZCBnZW5lcmF0ZUVsZW1lbnRI
YXNUYWdOYW1lKEFzc2VtYmxlcjo6SnVtcExpc3QmIGZhaWx1cmVDYXNlcywgY29uc3QgQ1NTU2Vs
ZWN0b3ImIHRhZ01hdGNoaW5nU2VsZWN0b3IpOwogICAgIHZvaWQgZ2VuZXJhdGVFbGVtZW50SGFz
SWQoQXNzZW1ibGVyOjpKdW1wTGlzdCYgZmFpbHVyZUNhc2VzLCBjb25zdCBMb2NhbFJlZ2lzdGVy
JiBlbGVtZW50RGF0YUFkZHJlc3MsIGNvbnN0IEF0b21TdHJpbmcmIGlkVG9NYXRjaCk7CiAgICAg
dm9pZCBnZW5lcmF0ZUVsZW1lbnRIYXNDbGFzc2VzKEFzc2VtYmxlcjo6SnVtcExpc3QmIGZhaWx1
cmVDYXNlcywgY29uc3QgTG9jYWxSZWdpc3RlciYgZWxlbWVudERhdGFBZGRyZXNzLCBjb25zdCBW
ZWN0b3I8Y29uc3QgQXRvbVN0cmluZ0ltcGwqLCA4PiYgY2xhc3NOYW1lcyk7CkBAIC0zNTksNyAr
NDE3LDcgQEAgY2xhc3MgU2VsZWN0b3JDb2RlR2VuZXJhdG9yIHsKICAgICBBc3NlbWJsZXIgbV9h
c3NlbWJsZXI7CiAgICAgUmVnaXN0ZXJBbGxvY2F0b3IgbV9yZWdpc3RlckFsbG9jYXRvcjsKICAg
ICBTdGFja0FsbG9jYXRvciBtX3N0YWNrQWxsb2NhdG9yOwotICAgIFZlY3RvcjxzdGQ6OnBhaXI8
QXNzZW1ibGVyOjpDYWxsLCBKU0M6OkZ1bmN0aW9uUHRyPENTU09wZXJhdGlvblB0clRhZz4+LCAz
Mj4gbV9mdW5jdGlvbkNhbGxzOworICAgIFZlY3RvcjxzdGQ6OnBhaXI8QXNzZW1ibGVyOjpDYWxs
LCBKU0M6OkZ1bmN0aW9uUHRyPEpTQzo6T3BlcmF0aW9uUHRyVGFnPj4sIDMyPiBtX2Z1bmN0aW9u
Q2FsbHM7CiAKICAgICBTZWxlY3RvckNvbnRleHQgbV9zZWxlY3RvckNvbnRleHQ7CiAgICAgRnVu
Y3Rpb25UeXBlIG1fZnVuY3Rpb25UeXBlOwpAQCAtNDQ5LDEyICs1MDcsNiBAQCBzdGF0aWMgaW5s
aW5lIGJvb2wgZnJhZ21lbnRNYXRjaGVzUmlnaHRtb3N0T3JBZGphY2VudEVsZW1lbnQoY29uc3Qg
U2VsZWN0b3JGcmFnbQogICAgIHJldHVybiBmcmFnbWVudC5pc1JpZ2h0bW9zdE9yQWRqYWNlbnQg
JiYgZnJhZ21lbnQucG9zaXRpb25JblJvb3RGcmFnbWVudHMgIT0gRnJhZ21lbnRQb3NpdGlvbklu
Um9vdEZyYWdtZW50czo6T3RoZXI7CiB9CiAKLUZ1bmN0aW9uVHlwZSBTZWxlY3RvckZyYWdtZW50
OjphcHBlbmRVbm9wdGltaXplZFBzZXVkb0NsYXNzV2l0aENvbnRleHQoYm9vbCAoKm1hdGNoZXIp
KGNvbnN0IFNlbGVjdG9yQ2hlY2tlcjo6Q2hlY2tpbmdDb250ZXh0JikpCi17Ci0gICAgdW5vcHRp
bWl6ZWRQc2V1ZG9DbGFzc2VzV2l0aENvbnRleHQuYXBwZW5kKEpTQzo6RnVuY3Rpb25QdHI8Q1NT
T3BlcmF0aW9uUHRyVGFnPihtYXRjaGVyKSk7Ci0gICAgcmV0dXJuIEZ1bmN0aW9uVHlwZTo6U2Vs
ZWN0b3JDaGVja2VyV2l0aENoZWNraW5nQ29udGV4dDsKLX0KLQogc3RhdGljIGlubGluZSBGdW5j
dGlvblR5cGUgYWRkU2Nyb2xsYmFyUHNldWRvQ2xhc3NUeXBlKGNvbnN0IENTU1NlbGVjdG9yJiwg
U2VsZWN0b3JGcmFnbWVudCYpCiB7CiAgICAgLy8gRklYTUU6IHNjcm9sbGJhciBwc2V1ZG9jbGFz
cyBpbnRlcmFjdGlvbiB3aXRoIDpub3QgZG9lc24ndCBiZWhhdmUgY29ycmVjdGx5LgpAQCAtNTI3
LDExMiArNTc5LDI3NSBAQCBzdGF0aWMgRnVuY3Rpb25UeXBlIGFkZE50aENoaWxkVHlwZShjb25z
dCBDU1NTZWxlY3RvciYgc2VsZWN0b3IsIFNlbGVjdG9yQ29udGV4dAogICAgIHJldHVybiBGdW5j
dGlvblR5cGU6OlNlbGVjdG9yQ2hlY2tlcldpdGhDaGVja2luZ0NvbnRleHQ7CiB9CiAKK0pTQ19E
RUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25Jc0F1dG9maWxsZWQsIGJvb2wsIChjb25zdCBF
bGVtZW50JiBlbGVtZW50KSkKK3sKKyAgICByZXR1cm4gaXNBdXRvZmlsbGVkKGVsZW1lbnQpOwor
fQorCitKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uSXNBdXRvZmlsbGVkU3Ryb25n
UGFzc3dvcmQsIGJvb2wsIChjb25zdCBFbGVtZW50JiBlbGVtZW50KSkKK3sKKyAgICByZXR1cm4g
aXNBdXRvZmlsbGVkU3Ryb25nUGFzc3dvcmQoZWxlbWVudCk7Cit9CisKK0pTQ19ERUZJTkVfSklU
X09QRVJBVElPTihvcGVyYXRpb25Jc0F1dG9maWxsZWRTdHJvbmdQYXNzd29yZFZpZXdhYmxlLCBi
b29sLCAoY29uc3QgRWxlbWVudCYgZWxlbWVudCkpCit7CisgICAgcmV0dXJuIGlzQXV0b2ZpbGxl
ZFN0cm9uZ1Bhc3N3b3JkVmlld2FibGUoZWxlbWVudCk7Cit9CisKK0pTQ19ERUZJTkVfSklUX09Q
RVJBVElPTihvcGVyYXRpb25Jc0NoZWNrZWQsIGJvb2wsIChjb25zdCBFbGVtZW50JiBlbGVtZW50
KSkKK3sKKyAgICByZXR1cm4gaXNDaGVja2VkKGVsZW1lbnQpOworfQorCitKU0NfREVGSU5FX0pJ
VF9PUEVSQVRJT04ob3BlcmF0aW9uTWF0Y2hlc0RlZmF1bHRQc2V1ZG9DbGFzcywgYm9vbCwgKGNv
bnN0IEVsZW1lbnQmIGVsZW1lbnQpKQoreworICAgIHJldHVybiBtYXRjaGVzRGVmYXVsdFBzZXVk
b0NsYXNzKGVsZW1lbnQpOworfQorCitKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9u
TWF0Y2hlc0Rpc2FibGVkUHNldWRvQ2xhc3MsIGJvb2wsIChjb25zdCBFbGVtZW50JiBlbGVtZW50
KSkKK3sKKyAgICByZXR1cm4gbWF0Y2hlc0Rpc2FibGVkUHNldWRvQ2xhc3MoZWxlbWVudCk7Cit9
CisKK0pTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25NYXRjaGVzRW5hYmxlZFBzZXVk
b0NsYXNzLCBib29sLCAoY29uc3QgRWxlbWVudCYgZWxlbWVudCkpCit7CisgICAgcmV0dXJuIG1h
dGNoZXNFbmFibGVkUHNldWRvQ2xhc3MoZWxlbWVudCk7Cit9CisKK0pTQ19ERUZJTkVfSklUX09Q
RVJBVElPTihvcGVyYXRpb25Jc0RlZmluZWRFbGVtZW50LCBib29sLCAoY29uc3QgRWxlbWVudCYg
ZWxlbWVudCkpCit7CisgICAgcmV0dXJuIGlzRGVmaW5lZEVsZW1lbnQoZWxlbWVudCk7Cit9CisK
K0pTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25NYXRjaGVzRGlyZWN0Rm9jdXNQc2V1
ZG9DbGFzcywgYm9vbCwgKGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQpKQoreworICAgIHJldHVybiBt
YXRjaGVzRGlyZWN0Rm9jdXNQc2V1ZG9DbGFzcyhlbGVtZW50KTsKK30KKworSlNDX0RFRklORV9K
SVRfT1BFUkFUSU9OKG9wZXJhdGlvbk1hdGNoZXNGb2N1c1BzZXVkb0NsYXNzLCBib29sLCAoY29u
c3QgRWxlbWVudCYgZWxlbWVudCkpCit7CisgICAgcmV0dXJuIG1hdGNoZXNGb2N1c1BzZXVkb0Ns
YXNzKGVsZW1lbnQpOworfQorCitKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uSXNN
ZWRpYURvY3VtZW50LCBib29sLCAoY29uc3QgRWxlbWVudCYgZWxlbWVudCkpCit7CisgICAgcmV0
dXJuIGlzTWVkaWFEb2N1bWVudChlbGVtZW50KTsKK30KKworSlNDX0RFRklORV9KSVRfT1BFUkFU
SU9OKG9wZXJhdGlvbklzSW5SYW5nZSwgYm9vbCwgKGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQpKQor
eworICAgIHJldHVybiBpc0luUmFuZ2UoZWxlbWVudCk7Cit9CisKK0pTQ19ERUZJTkVfSklUX09Q
RVJBVElPTihvcGVyYXRpb25NYXRjaGVzSW5kZXRlcm1pbmF0ZVBzZXVkb0NsYXNzLCBib29sLCAo
Y29uc3QgRWxlbWVudCYgZWxlbWVudCkpCit7CisgICAgcmV0dXJuIG1hdGNoZXNJbmRldGVybWlu
YXRlUHNldWRvQ2xhc3MoZWxlbWVudCk7Cit9CisKK0pTQ19ERUZJTkVfSklUX09QRVJBVElPTihv
cGVyYXRpb25Jc0ludmFsaWQsIGJvb2wsIChjb25zdCBFbGVtZW50JiBlbGVtZW50KSkKK3sKKyAg
ICByZXR1cm4gaXNJbnZhbGlkKGVsZW1lbnQpOworfQorCitKU0NfREVGSU5FX0pJVF9PUEVSQVRJ
T04ob3BlcmF0aW9uSXNPcHRpb25hbEZvcm1Db250cm9sLCBib29sLCAoY29uc3QgRWxlbWVudCYg
ZWxlbWVudCkpCit7CisgICAgcmV0dXJuIGlzT3B0aW9uYWxGb3JtQ29udHJvbChlbGVtZW50KTsK
K30KKworSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbklzT3V0T2ZSYW5nZSwgYm9v
bCwgKGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQpKQoreworICAgIHJldHVybiBpc091dE9mUmFuZ2Uo
ZWxlbWVudCk7Cit9CisKK0pTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25NYXRjaGVz
UmVhZE9ubHlQc2V1ZG9DbGFzcywgYm9vbCwgKGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQpKQorewor
ICAgIHJldHVybiBtYXRjaGVzUmVhZE9ubHlQc2V1ZG9DbGFzcyhlbGVtZW50KTsKK30KKworSlND
X0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk1hdGNoZXNSZWFkV3JpdGVQc2V1ZG9DbGFz
cywgYm9vbCwgKGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQpKQoreworICAgIHJldHVybiBtYXRjaGVz
UmVhZFdyaXRlUHNldWRvQ2xhc3MoZWxlbWVudCk7Cit9CisKK0pTQ19ERUZJTkVfSklUX09QRVJB
VElPTihvcGVyYXRpb25Jc1JlcXVpcmVkRm9ybUNvbnRyb2wsIGJvb2wsIChjb25zdCBFbGVtZW50
JiBlbGVtZW50KSkKK3sKKyAgICByZXR1cm4gaXNSZXF1aXJlZEZvcm1Db250cm9sKGVsZW1lbnQp
OworfQorCitKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uSXNWYWxpZCwgYm9vbCwg
KGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQpKQoreworICAgIHJldHVybiBpc1ZhbGlkKGVsZW1lbnQp
OworfQorCitKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uSXNXaW5kb3dJbmFjdGl2
ZSwgYm9vbCwgKGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQpKQoreworICAgIHJldHVybiBpc1dpbmRv
d0luYWN0aXZlKGVsZW1lbnQpOworfQorCisjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQorSlND
X0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk1hdGNoZXNGdWxsU2NyZWVuUHNldWRvQ2xh
c3MsIGJvb2wsIChjb25zdCBFbGVtZW50JiBlbGVtZW50KSkKK3sKKyAgICByZXR1cm4gbWF0Y2hl
c0Z1bGxTY3JlZW5Qc2V1ZG9DbGFzcyhlbGVtZW50KTsKK30KKworSlNDX0RFRklORV9KSVRfT1BF
UkFUSU9OKG9wZXJhdGlvbk1hdGNoZXNGdWxsU2NyZWVuRG9jdW1lbnRQc2V1ZG9DbGFzcywgYm9v
bCwgKGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQpKQoreworICAgIHJldHVybiBtYXRjaGVzRnVsbFNj
cmVlbkRvY3VtZW50UHNldWRvQ2xhc3MoZWxlbWVudCk7Cit9CisKK0pTQ19ERUZJTkVfSklUX09Q
RVJBVElPTihvcGVyYXRpb25NYXRjaGVzRnVsbFNjcmVlbkFuY2VzdG9yUHNldWRvQ2xhc3MsIGJv
b2wsIChjb25zdCBFbGVtZW50JiBlbGVtZW50KSkKK3sKKyAgICByZXR1cm4gbWF0Y2hlc0Z1bGxT
Y3JlZW5BbmNlc3RvclBzZXVkb0NsYXNzKGVsZW1lbnQpOworfQorCitKU0NfREVGSU5FX0pJVF9P
UEVSQVRJT04ob3BlcmF0aW9uTWF0Y2hlc0Z1bGxTY3JlZW5BbmltYXRpbmdGdWxsU2NyZWVuVHJh
bnNpdGlvblBzZXVkb0NsYXNzLCBib29sLCAoY29uc3QgRWxlbWVudCYgZWxlbWVudCkpCit7Cisg
ICAgcmV0dXJuIG1hdGNoZXNGdWxsU2NyZWVuQW5pbWF0aW5nRnVsbFNjcmVlblRyYW5zaXRpb25Q
c2V1ZG9DbGFzcyhlbGVtZW50KTsKK30KKworSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJh
dGlvbk1hdGNoZXNGdWxsU2NyZWVuQ29udHJvbHNIaWRkZW5Qc2V1ZG9DbGFzcywgYm9vbCwgKGNv
bnN0IEVsZW1lbnQmIGVsZW1lbnQpKQoreworICAgIHJldHVybiBtYXRjaGVzRnVsbFNjcmVlbkNv
bnRyb2xzSGlkZGVuUHNldWRvQ2xhc3MoZWxlbWVudCk7Cit9CisjZW5kaWYKKworI2lmIEVOQUJM
RShQSUNUVVJFX0lOX1BJQ1RVUkVfQVBJKQorSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJh
dGlvbk1hdGNoZXNQaWN0dXJlSW5QaWN0dXJlUHNldWRvQ2xhc3MsIGJvb2wsIChjb25zdCBFbGVt
ZW50JiBlbGVtZW50KSkKK3sKKyAgICByZXR1cm4gbWF0Y2hlc1BpY3R1cmVJblBpY3R1cmVQc2V1
ZG9DbGFzcyhlbGVtZW50KTsKK30KKyNlbmRpZgorCisjaWYgRU5BQkxFKFZJREVPKQorSlNDX0RF
RklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk1hdGNoZXNGdXR1cmVDdWVQc2V1ZG9DbGFzcywg
Ym9vbCwgKGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQpKQoreworICAgIHJldHVybiBtYXRjaGVzRnV0
dXJlQ3VlUHNldWRvQ2xhc3MoZWxlbWVudCk7Cit9CisKK0pTQ19ERUZJTkVfSklUX09QRVJBVElP
TihvcGVyYXRpb25NYXRjaGVzUGFzdEN1ZVBzZXVkb0NsYXNzLCBib29sLCAoY29uc3QgRWxlbWVu
dCYgZWxlbWVudCkpCit7CisgICAgcmV0dXJuIG1hdGNoZXNQYXN0Q3VlUHNldWRvQ2xhc3MoZWxl
bWVudCk7Cit9CisjZW5kaWYKKworI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCitKU0Nf
REVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uSGFzQXR0YWNobWVudCwgYm9vbCwgKGNvbnN0
IEVsZW1lbnQmIGVsZW1lbnQpKQoreworICAgIHJldHVybiBoYXNBdHRhY2htZW50KGVsZW1lbnQp
OworfQorI2VuZGlmCisKK0pTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25NYXRjaGVz
TGFuZ1BzZXVkb0NsYXNzLCBib29sLCAoY29uc3QgRWxlbWVudCYgZWxlbWVudCwgY29uc3QgVmVj
dG9yPEF0b21TdHJpbmc+JiBhcmd1bWVudExpc3QpKQoreworICAgIHJldHVybiBtYXRjaGVzTGFu
Z1BzZXVkb0NsYXNzKGVsZW1lbnQsIGFyZ3VtZW50TGlzdCk7Cit9CisKIHN0YXRpYyBpbmxpbmUg
RnVuY3Rpb25UeXBlIGFkZFBzZXVkb0NsYXNzVHlwZShjb25zdCBDU1NTZWxlY3RvciYgc2VsZWN0
b3IsIFNlbGVjdG9yRnJhZ21lbnQmIGZyYWdtZW50LCBTZWxlY3RvckNvbnRleHQgc2VsZWN0b3JD
b250ZXh0LCBGcmFnbWVudHNMZXZlbCBmcmFnbWVudExldmVsLCBGcmFnbWVudFBvc2l0aW9uSW5S
b290RnJhZ21lbnRzIHBvc2l0aW9uSW5Sb290RnJhZ21lbnRzLCBib29sIHZpc2l0ZWRNYXRjaEVu
YWJsZWQsIFZpc2l0ZWRNb2RlJiB2aXNpdGVkTW9kZSwgUHNldWRvRWxlbWVudE1hdGNoaW5nQmVo
YXZpb3IgcHNldWRvRWxlbWVudE1hdGNoaW5nQmVoYXZpb3IpCiB7CiAgICAgQ1NTU2VsZWN0b3I6
OlBzZXVkb0NsYXNzVHlwZSB0eXBlID0gc2VsZWN0b3IucHNldWRvQ2xhc3NUeXBlKCk7CiAgICAg
c3dpdGNoICh0eXBlKSB7CiAgICAgLy8gVW5vcHRpbWl6ZWQgcHNldWRvIHNlbGVjdG9yLiBUaGV5
IGFyZSBqdXN0IGZ1bmN0aW9uIGNhbGwgdG8gYSBzaW1wbGUgdGVzdGluZyBmdW5jdGlvbi4KICAg
ICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc0F1dG9maWxsOgotICAgICAgICBmcmFnbWVu
dC51bm9wdGltaXplZFBzZXVkb0NsYXNzZXMuYXBwZW5kKEpTQzo6RnVuY3Rpb25QdHI8Q1NTT3Bl
cmF0aW9uUHRyVGFnPihpc0F1dG9maWxsZWQpKTsKKyAgICAgICAgZnJhZ21lbnQudW5vcHRpbWl6
ZWRQc2V1ZG9DbGFzc2VzLmFwcGVuZChKU0M6OkZ1bmN0aW9uUHRyPEpTQzo6T3BlcmF0aW9uUHRy
VGFnPihvcGVyYXRpb25Jc0F1dG9maWxsZWQpKTsKICAgICAgICAgcmV0dXJuIEZ1bmN0aW9uVHlw
ZTo6U2ltcGxlU2VsZWN0b3JDaGVja2VyOwogICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb0Ns
YXNzQXV0b2ZpbGxTdHJvbmdQYXNzd29yZDoKLSAgICAgICAgZnJhZ21lbnQudW5vcHRpbWl6ZWRQ
c2V1ZG9DbGFzc2VzLmFwcGVuZChKU0M6OkZ1bmN0aW9uUHRyPENTU09wZXJhdGlvblB0clRhZz4o
aXNBdXRvZmlsbGVkU3Ryb25nUGFzc3dvcmQpKTsKKyAgICAgICAgZnJhZ21lbnQudW5vcHRpbWl6
ZWRQc2V1ZG9DbGFzc2VzLmFwcGVuZChKU0M6OkZ1bmN0aW9uUHRyPEpTQzo6T3BlcmF0aW9uUHRy
VGFnPihvcGVyYXRpb25Jc0F1dG9maWxsZWRTdHJvbmdQYXNzd29yZCkpOwogICAgICAgICByZXR1
cm4gRnVuY3Rpb25UeXBlOjpTaW1wbGVTZWxlY3RvckNoZWNrZXI7CiAgICAgY2FzZSBDU1NTZWxl
Y3Rvcjo6UHNldWRvQ2xhc3NBdXRvZmlsbFN0cm9uZ1Bhc3N3b3JkVmlld2FibGU6Ci0gICAgICAg
IGZyYWdtZW50LnVub3B0aW1pemVkUHNldWRvQ2xhc3Nlcy5hcHBlbmQoSlNDOjpGdW5jdGlvblB0
cjxDU1NPcGVyYXRpb25QdHJUYWc+KGlzQXV0b2ZpbGxlZFN0cm9uZ1Bhc3N3b3JkVmlld2FibGUp
KTsKKyAgICAgICAgZnJhZ21lbnQudW5vcHRpbWl6ZWRQc2V1ZG9DbGFzc2VzLmFwcGVuZChKU0M6
OkZ1bmN0aW9uUHRyPEpTQzo6T3BlcmF0aW9uUHRyVGFnPihvcGVyYXRpb25Jc0F1dG9maWxsZWRT
dHJvbmdQYXNzd29yZFZpZXdhYmxlKSk7CiAgICAgICAgIHJldHVybiBGdW5jdGlvblR5cGU6OlNp
bXBsZVNlbGVjdG9yQ2hlY2tlcjsKICAgICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc0No
ZWNrZWQ6Ci0gICAgICAgIGZyYWdtZW50LnVub3B0aW1pemVkUHNldWRvQ2xhc3Nlcy5hcHBlbmQo
SlNDOjpGdW5jdGlvblB0cjxDU1NPcGVyYXRpb25QdHJUYWc+KGlzQ2hlY2tlZCkpOworICAgICAg
ICBmcmFnbWVudC51bm9wdGltaXplZFBzZXVkb0NsYXNzZXMuYXBwZW5kKEpTQzo6RnVuY3Rpb25Q
dHI8SlNDOjpPcGVyYXRpb25QdHJUYWc+KG9wZXJhdGlvbklzQ2hlY2tlZCkpOwogICAgICAgICBy
ZXR1cm4gRnVuY3Rpb25UeXBlOjpTaW1wbGVTZWxlY3RvckNoZWNrZXI7CiAgICAgY2FzZSBDU1NT
ZWxlY3Rvcjo6UHNldWRvQ2xhc3NEZWZhdWx0OgotICAgICAgICBmcmFnbWVudC51bm9wdGltaXpl
ZFBzZXVkb0NsYXNzZXMuYXBwZW5kKEpTQzo6RnVuY3Rpb25QdHI8Q1NTT3BlcmF0aW9uUHRyVGFn
PihtYXRjaGVzRGVmYXVsdFBzZXVkb0NsYXNzKSk7CisgICAgICAgIGZyYWdtZW50LnVub3B0aW1p
emVkUHNldWRvQ2xhc3Nlcy5hcHBlbmQoSlNDOjpGdW5jdGlvblB0cjxKU0M6Ok9wZXJhdGlvblB0
clRhZz4ob3BlcmF0aW9uTWF0Y2hlc0RlZmF1bHRQc2V1ZG9DbGFzcykpOwogICAgICAgICByZXR1
cm4gRnVuY3Rpb25UeXBlOjpTaW1wbGVTZWxlY3RvckNoZWNrZXI7CiAgICAgY2FzZSBDU1NTZWxl
Y3Rvcjo6UHNldWRvQ2xhc3NEaXNhYmxlZDoKLSAgICAgICAgZnJhZ21lbnQudW5vcHRpbWl6ZWRQ
c2V1ZG9DbGFzc2VzLmFwcGVuZChKU0M6OkZ1bmN0aW9uUHRyPENTU09wZXJhdGlvblB0clRhZz4o
bWF0Y2hlc0Rpc2FibGVkUHNldWRvQ2xhc3MpKTsKKyAgICAgICAgZnJhZ21lbnQudW5vcHRpbWl6
ZWRQc2V1ZG9DbGFzc2VzLmFwcGVuZChKU0M6OkZ1bmN0aW9uUHRyPEpTQzo6T3BlcmF0aW9uUHRy
VGFnPihvcGVyYXRpb25NYXRjaGVzRGlzYWJsZWRQc2V1ZG9DbGFzcykpOwogICAgICAgICByZXR1
cm4gRnVuY3Rpb25UeXBlOjpTaW1wbGVTZWxlY3RvckNoZWNrZXI7CiAgICAgY2FzZSBDU1NTZWxl
Y3Rvcjo6UHNldWRvQ2xhc3NFbmFibGVkOgotICAgICAgICBmcmFnbWVudC51bm9wdGltaXplZFBz
ZXVkb0NsYXNzZXMuYXBwZW5kKEpTQzo6RnVuY3Rpb25QdHI8Q1NTT3BlcmF0aW9uUHRyVGFnPiht
YXRjaGVzRW5hYmxlZFBzZXVkb0NsYXNzKSk7CisgICAgICAgIGZyYWdtZW50LnVub3B0aW1pemVk
UHNldWRvQ2xhc3Nlcy5hcHBlbmQoSlNDOjpGdW5jdGlvblB0cjxKU0M6Ok9wZXJhdGlvblB0clRh
Zz4ob3BlcmF0aW9uTWF0Y2hlc0VuYWJsZWRQc2V1ZG9DbGFzcykpOwogICAgICAgICByZXR1cm4g
RnVuY3Rpb25UeXBlOjpTaW1wbGVTZWxlY3RvckNoZWNrZXI7CiAgICAgY2FzZSBDU1NTZWxlY3Rv
cjo6UHNldWRvQ2xhc3NEZWZpbmVkOgotICAgICAgICBmcmFnbWVudC51bm9wdGltaXplZFBzZXVk
b0NsYXNzZXMuYXBwZW5kKEpTQzo6RnVuY3Rpb25QdHI8Q1NTT3BlcmF0aW9uUHRyVGFnPihpc0Rl
ZmluZWRFbGVtZW50KSk7CisgICAgICAgIGZyYWdtZW50LnVub3B0aW1pemVkUHNldWRvQ2xhc3Nl
cy5hcHBlbmQoSlNDOjpGdW5jdGlvblB0cjxKU0M6Ok9wZXJhdGlvblB0clRhZz4ob3BlcmF0aW9u
SXNEZWZpbmVkRWxlbWVudCkpOwogICAgICAgICByZXR1cm4gRnVuY3Rpb25UeXBlOjpTaW1wbGVT
ZWxlY3RvckNoZWNrZXI7CiAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NEaXJlY3RG
b2N1czoKLSAgICAgICAgZnJhZ21lbnQudW5vcHRpbWl6ZWRQc2V1ZG9DbGFzc2VzLmFwcGVuZChK
U0M6OkZ1bmN0aW9uUHRyPENTU09wZXJhdGlvblB0clRhZz4oU2VsZWN0b3JDaGVja2VyOjptYXRj
aGVzRGlyZWN0Rm9jdXNQc2V1ZG9DbGFzcykpOworICAgICAgICBmcmFnbWVudC51bm9wdGltaXpl
ZFBzZXVkb0NsYXNzZXMuYXBwZW5kKEpTQzo6RnVuY3Rpb25QdHI8SlNDOjpPcGVyYXRpb25QdHJU
YWc+KG9wZXJhdGlvbk1hdGNoZXNEaXJlY3RGb2N1c1BzZXVkb0NsYXNzKSk7CiAgICAgICAgIHJl
dHVybiBGdW5jdGlvblR5cGU6OlNpbXBsZVNlbGVjdG9yQ2hlY2tlcjsKICAgICBjYXNlIENTU1Nl
bGVjdG9yOjpQc2V1ZG9DbGFzc0ZvY3VzOgotICAgICAgICBmcmFnbWVudC51bm9wdGltaXplZFBz
ZXVkb0NsYXNzZXMuYXBwZW5kKEpTQzo6RnVuY3Rpb25QdHI8Q1NTT3BlcmF0aW9uUHRyVGFnPihT
ZWxlY3RvckNoZWNrZXI6Om1hdGNoZXNGb2N1c1BzZXVkb0NsYXNzKSk7CisgICAgICAgIGZyYWdt
ZW50LnVub3B0aW1pemVkUHNldWRvQ2xhc3Nlcy5hcHBlbmQoSlNDOjpGdW5jdGlvblB0cjxKU0M6
Ok9wZXJhdGlvblB0clRhZz4ob3BlcmF0aW9uTWF0Y2hlc0ZvY3VzUHNldWRvQ2xhc3MpKTsKICAg
ICAgICAgcmV0dXJuIEZ1bmN0aW9uVHlwZTo6U2ltcGxlU2VsZWN0b3JDaGVja2VyOwogICAgIGNh
c2UgQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzRnVsbFBhZ2VNZWRpYToKLSAgICAgICAgZnJhZ21l
bnQudW5vcHRpbWl6ZWRQc2V1ZG9DbGFzc2VzLmFwcGVuZChKU0M6OkZ1bmN0aW9uUHRyPENTU09w
ZXJhdGlvblB0clRhZz4oaXNNZWRpYURvY3VtZW50KSk7CisgICAgICAgIGZyYWdtZW50LnVub3B0
aW1pemVkUHNldWRvQ2xhc3Nlcy5hcHBlbmQoSlNDOjpGdW5jdGlvblB0cjxKU0M6Ok9wZXJhdGlv
blB0clRhZz4ob3BlcmF0aW9uSXNNZWRpYURvY3VtZW50KSk7CiAgICAgICAgIHJldHVybiBGdW5j
dGlvblR5cGU6OlNpbXBsZVNlbGVjdG9yQ2hlY2tlcjsKICAgICBjYXNlIENTU1NlbGVjdG9yOjpQ
c2V1ZG9DbGFzc0luUmFuZ2U6Ci0gICAgICAgIGZyYWdtZW50LnVub3B0aW1pemVkUHNldWRvQ2xh
c3Nlcy5hcHBlbmQoSlNDOjpGdW5jdGlvblB0cjxDU1NPcGVyYXRpb25QdHJUYWc+KGlzSW5SYW5n
ZSkpOworICAgICAgICBmcmFnbWVudC51bm9wdGltaXplZFBzZXVkb0NsYXNzZXMuYXBwZW5kKEpT
Qzo6RnVuY3Rpb25QdHI8SlNDOjpPcGVyYXRpb25QdHJUYWc+KG9wZXJhdGlvbklzSW5SYW5nZSkp
OwogICAgICAgICByZXR1cm4gRnVuY3Rpb25UeXBlOjpTaW1wbGVTZWxlY3RvckNoZWNrZXI7CiAg
ICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NJbmRldGVybWluYXRlOgotICAgICAgICBm
cmFnbWVudC51bm9wdGltaXplZFBzZXVkb0NsYXNzZXMuYXBwZW5kKEpTQzo6RnVuY3Rpb25QdHI8
Q1NTT3BlcmF0aW9uUHRyVGFnPihtYXRjaGVzSW5kZXRlcm1pbmF0ZVBzZXVkb0NsYXNzKSk7Cisg
ICAgICAgIGZyYWdtZW50LnVub3B0aW1pemVkUHNldWRvQ2xhc3Nlcy5hcHBlbmQoSlNDOjpGdW5j
dGlvblB0cjxKU0M6Ok9wZXJhdGlvblB0clRhZz4ob3BlcmF0aW9uTWF0Y2hlc0luZGV0ZXJtaW5h
dGVQc2V1ZG9DbGFzcykpOwogICAgICAgICByZXR1cm4gRnVuY3Rpb25UeXBlOjpTaW1wbGVTZWxl
Y3RvckNoZWNrZXI7CiAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NJbnZhbGlkOgot
ICAgICAgICBmcmFnbWVudC51bm9wdGltaXplZFBzZXVkb0NsYXNzZXMuYXBwZW5kKEpTQzo6RnVu
Y3Rpb25QdHI8Q1NTT3BlcmF0aW9uUHRyVGFnPihpc0ludmFsaWQpKTsKKyAgICAgICAgZnJhZ21l
bnQudW5vcHRpbWl6ZWRQc2V1ZG9DbGFzc2VzLmFwcGVuZChKU0M6OkZ1bmN0aW9uUHRyPEpTQzo6
T3BlcmF0aW9uUHRyVGFnPihvcGVyYXRpb25Jc0ludmFsaWQpKTsKICAgICAgICAgcmV0dXJuIEZ1
bmN0aW9uVHlwZTo6U2ltcGxlU2VsZWN0b3JDaGVja2VyOwogICAgIGNhc2UgQ1NTU2VsZWN0b3I6
OlBzZXVkb0NsYXNzT3B0aW9uYWw6Ci0gICAgICAgIGZyYWdtZW50LnVub3B0aW1pemVkUHNldWRv
Q2xhc3Nlcy5hcHBlbmQoSlNDOjpGdW5jdGlvblB0cjxDU1NPcGVyYXRpb25QdHJUYWc+KGlzT3B0
aW9uYWxGb3JtQ29udHJvbCkpOworICAgICAgICBmcmFnbWVudC51bm9wdGltaXplZFBzZXVkb0Ns
YXNzZXMuYXBwZW5kKEpTQzo6RnVuY3Rpb25QdHI8SlNDOjpPcGVyYXRpb25QdHJUYWc+KG9wZXJh
dGlvbklzT3B0aW9uYWxGb3JtQ29udHJvbCkpOwogICAgICAgICByZXR1cm4gRnVuY3Rpb25UeXBl
OjpTaW1wbGVTZWxlY3RvckNoZWNrZXI7CiAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xh
c3NPdXRPZlJhbmdlOgotICAgICAgICBmcmFnbWVudC51bm9wdGltaXplZFBzZXVkb0NsYXNzZXMu
YXBwZW5kKEpTQzo6RnVuY3Rpb25QdHI8Q1NTT3BlcmF0aW9uUHRyVGFnPihpc091dE9mUmFuZ2Up
KTsKKyAgICAgICAgZnJhZ21lbnQudW5vcHRpbWl6ZWRQc2V1ZG9DbGFzc2VzLmFwcGVuZChKU0M6
OkZ1bmN0aW9uUHRyPEpTQzo6T3BlcmF0aW9uUHRyVGFnPihvcGVyYXRpb25Jc091dE9mUmFuZ2Up
KTsKICAgICAgICAgcmV0dXJuIEZ1bmN0aW9uVHlwZTo6U2ltcGxlU2VsZWN0b3JDaGVja2VyOwog
ICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzUmVhZE9ubHk6Ci0gICAgICAgIGZyYWdt
ZW50LnVub3B0aW1pemVkUHNldWRvQ2xhc3Nlcy5hcHBlbmQoSlNDOjpGdW5jdGlvblB0cjxDU1NP
cGVyYXRpb25QdHJUYWc+KG1hdGNoZXNSZWFkT25seVBzZXVkb0NsYXNzKSk7CisgICAgICAgIGZy
YWdtZW50LnVub3B0aW1pemVkUHNldWRvQ2xhc3Nlcy5hcHBlbmQoSlNDOjpGdW5jdGlvblB0cjxK
U0M6Ok9wZXJhdGlvblB0clRhZz4ob3BlcmF0aW9uTWF0Y2hlc1JlYWRPbmx5UHNldWRvQ2xhc3Mp
KTsKICAgICAgICAgcmV0dXJuIEZ1bmN0aW9uVHlwZTo6U2ltcGxlU2VsZWN0b3JDaGVja2VyOwog
ICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzUmVhZFdyaXRlOgotICAgICAgICBmcmFn
bWVudC51bm9wdGltaXplZFBzZXVkb0NsYXNzZXMuYXBwZW5kKEpTQzo6RnVuY3Rpb25QdHI8Q1NT
T3BlcmF0aW9uUHRyVGFnPihtYXRjaGVzUmVhZFdyaXRlUHNldWRvQ2xhc3MpKTsKKyAgICAgICAg
ZnJhZ21lbnQudW5vcHRpbWl6ZWRQc2V1ZG9DbGFzc2VzLmFwcGVuZChKU0M6OkZ1bmN0aW9uUHRy
PEpTQzo6T3BlcmF0aW9uUHRyVGFnPihvcGVyYXRpb25NYXRjaGVzUmVhZFdyaXRlUHNldWRvQ2xh
c3MpKTsKICAgICAgICAgcmV0dXJuIEZ1bmN0aW9uVHlwZTo6U2ltcGxlU2VsZWN0b3JDaGVja2Vy
OwogICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzUmVxdWlyZWQ6Ci0gICAgICAgIGZy
YWdtZW50LnVub3B0aW1pemVkUHNldWRvQ2xhc3Nlcy5hcHBlbmQoSlNDOjpGdW5jdGlvblB0cjxD
U1NPcGVyYXRpb25QdHJUYWc+KGlzUmVxdWlyZWRGb3JtQ29udHJvbCkpOworICAgICAgICBmcmFn
bWVudC51bm9wdGltaXplZFBzZXVkb0NsYXNzZXMuYXBwZW5kKEpTQzo6RnVuY3Rpb25QdHI8SlND
OjpPcGVyYXRpb25QdHJUYWc+KG9wZXJhdGlvbklzUmVxdWlyZWRGb3JtQ29udHJvbCkpOwogICAg
ICAgICByZXR1cm4gRnVuY3Rpb25UeXBlOjpTaW1wbGVTZWxlY3RvckNoZWNrZXI7CiAgICAgY2Fz
ZSBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NWYWxpZDoKLSAgICAgICAgZnJhZ21lbnQudW5vcHRp
bWl6ZWRQc2V1ZG9DbGFzc2VzLmFwcGVuZChKU0M6OkZ1bmN0aW9uUHRyPENTU09wZXJhdGlvblB0
clRhZz4oaXNWYWxpZCkpOworICAgICAgICBmcmFnbWVudC51bm9wdGltaXplZFBzZXVkb0NsYXNz
ZXMuYXBwZW5kKEpTQzo6RnVuY3Rpb25QdHI8SlNDOjpPcGVyYXRpb25QdHJUYWc+KG9wZXJhdGlv
bklzVmFsaWQpKTsKICAgICAgICAgcmV0dXJuIEZ1bmN0aW9uVHlwZTo6U2ltcGxlU2VsZWN0b3JD
aGVja2VyOwogICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzV2luZG93SW5hY3RpdmU6
Ci0gICAgICAgIGZyYWdtZW50LnVub3B0aW1pemVkUHNldWRvQ2xhc3Nlcy5hcHBlbmQoSlNDOjpG
dW5jdGlvblB0cjxDU1NPcGVyYXRpb25QdHJUYWc+KGlzV2luZG93SW5hY3RpdmUpKTsKKyAgICAg
ICAgZnJhZ21lbnQudW5vcHRpbWl6ZWRQc2V1ZG9DbGFzc2VzLmFwcGVuZChKU0M6OkZ1bmN0aW9u
UHRyPEpTQzo6T3BlcmF0aW9uUHRyVGFnPihvcGVyYXRpb25Jc1dpbmRvd0luYWN0aXZlKSk7CiAg
ICAgICAgIHJldHVybiBGdW5jdGlvblR5cGU6OlNpbXBsZVNlbGVjdG9yQ2hlY2tlcjsKIAogI2lm
IEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKICAgICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFz
c0Z1bGxTY3JlZW46Ci0gICAgICAgIGZyYWdtZW50LnVub3B0aW1pemVkUHNldWRvQ2xhc3Nlcy5h
cHBlbmQoSlNDOjpGdW5jdGlvblB0cjxDU1NPcGVyYXRpb25QdHJUYWc+KG1hdGNoZXNGdWxsU2Ny
ZWVuUHNldWRvQ2xhc3MpKTsKKyAgICAgICAgZnJhZ21lbnQudW5vcHRpbWl6ZWRQc2V1ZG9DbGFz
c2VzLmFwcGVuZChKU0M6OkZ1bmN0aW9uUHRyPEpTQzo6T3BlcmF0aW9uUHRyVGFnPihvcGVyYXRp
b25NYXRjaGVzRnVsbFNjcmVlblBzZXVkb0NsYXNzKSk7CiAgICAgICAgIHJldHVybiBGdW5jdGlv
blR5cGU6OlNpbXBsZVNlbGVjdG9yQ2hlY2tlcjsKICAgICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1
ZG9DbGFzc0Z1bGxTY3JlZW5Eb2N1bWVudDoKLSAgICAgICAgZnJhZ21lbnQudW5vcHRpbWl6ZWRQ
c2V1ZG9DbGFzc2VzLmFwcGVuZChKU0M6OkZ1bmN0aW9uUHRyPENTU09wZXJhdGlvblB0clRhZz4o
bWF0Y2hlc0Z1bGxTY3JlZW5Eb2N1bWVudFBzZXVkb0NsYXNzKSk7CisgICAgICAgIGZyYWdtZW50
LnVub3B0aW1pemVkUHNldWRvQ2xhc3Nlcy5hcHBlbmQoSlNDOjpGdW5jdGlvblB0cjxKU0M6Ok9w
ZXJhdGlvblB0clRhZz4ob3BlcmF0aW9uTWF0Y2hlc0Z1bGxTY3JlZW5Eb2N1bWVudFBzZXVkb0Ns
YXNzKSk7CiAgICAgICAgIHJldHVybiBGdW5jdGlvblR5cGU6OlNpbXBsZVNlbGVjdG9yQ2hlY2tl
cjsKICAgICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc0Z1bGxTY3JlZW5BbmNlc3RvcjoK
LSAgICAgICAgZnJhZ21lbnQudW5vcHRpbWl6ZWRQc2V1ZG9DbGFzc2VzLmFwcGVuZChKU0M6OkZ1
bmN0aW9uUHRyPENTU09wZXJhdGlvblB0clRhZz4obWF0Y2hlc0Z1bGxTY3JlZW5BbmNlc3RvclBz
ZXVkb0NsYXNzKSk7CisgICAgICAgIGZyYWdtZW50LnVub3B0aW1pemVkUHNldWRvQ2xhc3Nlcy5h
cHBlbmQoSlNDOjpGdW5jdGlvblB0cjxKU0M6Ok9wZXJhdGlvblB0clRhZz4ob3BlcmF0aW9uTWF0
Y2hlc0Z1bGxTY3JlZW5BbmNlc3RvclBzZXVkb0NsYXNzKSk7CiAgICAgICAgIHJldHVybiBGdW5j
dGlvblR5cGU6OlNpbXBsZVNlbGVjdG9yQ2hlY2tlcjsKICAgICBjYXNlIENTU1NlbGVjdG9yOjpQ
c2V1ZG9DbGFzc0FuaW1hdGluZ0Z1bGxTY3JlZW5UcmFuc2l0aW9uOgotICAgICAgICBmcmFnbWVu
dC51bm9wdGltaXplZFBzZXVkb0NsYXNzZXMuYXBwZW5kKEpTQzo6RnVuY3Rpb25QdHI8Q1NTT3Bl
cmF0aW9uUHRyVGFnPihtYXRjaGVzRnVsbFNjcmVlbkFuaW1hdGluZ0Z1bGxTY3JlZW5UcmFuc2l0
aW9uUHNldWRvQ2xhc3MpKTsKKyAgICAgICAgZnJhZ21lbnQudW5vcHRpbWl6ZWRQc2V1ZG9DbGFz
c2VzLmFwcGVuZChKU0M6OkZ1bmN0aW9uUHRyPEpTQzo6T3BlcmF0aW9uUHRyVGFnPihvcGVyYXRp
b25NYXRjaGVzRnVsbFNjcmVlbkFuaW1hdGluZ0Z1bGxTY3JlZW5UcmFuc2l0aW9uUHNldWRvQ2xh
c3MpKTsKICAgICAgICAgcmV0dXJuIEZ1bmN0aW9uVHlwZTo6U2ltcGxlU2VsZWN0b3JDaGVja2Vy
OwogCiAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NGdWxsU2NyZWVuQ29udHJvbHNI
aWRkZW46Ci0gICAgICAgIGZyYWdtZW50LnVub3B0aW1pemVkUHNldWRvQ2xhc3Nlcy5hcHBlbmQo
SlNDOjpGdW5jdGlvblB0cjxDU1NPcGVyYXRpb25QdHJUYWc+KG1hdGNoZXNGdWxsU2NyZWVuQ29u
dHJvbHNIaWRkZW5Qc2V1ZG9DbGFzcykpOworICAgICAgICBmcmFnbWVudC51bm9wdGltaXplZFBz
ZXVkb0NsYXNzZXMuYXBwZW5kKEpTQzo6RnVuY3Rpb25QdHI8SlNDOjpPcGVyYXRpb25QdHJUYWc+
KG9wZXJhdGlvbk1hdGNoZXNGdWxsU2NyZWVuQ29udHJvbHNIaWRkZW5Qc2V1ZG9DbGFzcykpOwog
ICAgICAgICByZXR1cm4gRnVuY3Rpb25UeXBlOjpTaW1wbGVTZWxlY3RvckNoZWNrZXI7CiAjZW5k
aWYKIAogI2lmIEVOQUJMRShQSUNUVVJFX0lOX1BJQ1RVUkVfQVBJKQogICAgIGNhc2UgQ1NTU2Vs
ZWN0b3I6OlBzZXVkb0NsYXNzUGljdHVyZUluUGljdHVyZToKLSAgICAgICAgZnJhZ21lbnQudW5v
cHRpbWl6ZWRQc2V1ZG9DbGFzc2VzLmFwcGVuZChKU0M6OkZ1bmN0aW9uUHRyPENTU09wZXJhdGlv
blB0clRhZz4obWF0Y2hlc1BpY3R1cmVJblBpY3R1cmVQc2V1ZG9DbGFzcykpOworICAgICAgICBm
cmFnbWVudC51bm9wdGltaXplZFBzZXVkb0NsYXNzZXMuYXBwZW5kKEpTQzo6RnVuY3Rpb25QdHI8
SlNDOjpPcGVyYXRpb25QdHJUYWc+KG9wZXJhdGlvbk1hdGNoZXNQaWN0dXJlSW5QaWN0dXJlUHNl
dWRvQ2xhc3MpKTsKICAgICAgICAgcmV0dXJuIEZ1bmN0aW9uVHlwZTo6U2ltcGxlU2VsZWN0b3JD
aGVja2VyOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoVklERU8pCiAgICAgY2FzZSBDU1NTZWxlY3Rv
cjo6UHNldWRvQ2xhc3NGdXR1cmU6Ci0gICAgICAgIGZyYWdtZW50LnVub3B0aW1pemVkUHNldWRv
Q2xhc3Nlcy5hcHBlbmQoSlNDOjpGdW5jdGlvblB0cjxDU1NPcGVyYXRpb25QdHJUYWc+KG1hdGNo
ZXNGdXR1cmVDdWVQc2V1ZG9DbGFzcykpOworICAgICAgICBmcmFnbWVudC51bm9wdGltaXplZFBz
ZXVkb0NsYXNzZXMuYXBwZW5kKEpTQzo6RnVuY3Rpb25QdHI8SlNDOjpPcGVyYXRpb25QdHJUYWc+
KG9wZXJhdGlvbk1hdGNoZXNGdXR1cmVDdWVQc2V1ZG9DbGFzcykpOwogICAgICAgICByZXR1cm4g
RnVuY3Rpb25UeXBlOjpTaW1wbGVTZWxlY3RvckNoZWNrZXI7CiAgICAgY2FzZSBDU1NTZWxlY3Rv
cjo6UHNldWRvQ2xhc3NQYXN0OgotICAgICAgICBmcmFnbWVudC51bm9wdGltaXplZFBzZXVkb0Ns
YXNzZXMuYXBwZW5kKEpTQzo6RnVuY3Rpb25QdHI8Q1NTT3BlcmF0aW9uUHRyVGFnPihtYXRjaGVz
UGFzdEN1ZVBzZXVkb0NsYXNzKSk7CisgICAgICAgIGZyYWdtZW50LnVub3B0aW1pemVkUHNldWRv
Q2xhc3Nlcy5hcHBlbmQoSlNDOjpGdW5jdGlvblB0cjxKU0M6Ok9wZXJhdGlvblB0clRhZz4ob3Bl
cmF0aW9uTWF0Y2hlc1Bhc3RDdWVQc2V1ZG9DbGFzcykpOwogICAgICAgICByZXR1cm4gRnVuY3Rp
b25UeXBlOjpTaW1wbGVTZWxlY3RvckNoZWNrZXI7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShBVFRB
Q0hNRU5UX0VMRU1FTlQpCiAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NIYXNBdHRh
Y2htZW50OgotICAgICAgICBmcmFnbWVudC51bm9wdGltaXplZFBzZXVkb0NsYXNzZXMuYXBwZW5k
KEpTQzo6RnVuY3Rpb25QdHI8Q1NTT3BlcmF0aW9uUHRyVGFnPihoYXNBdHRhY2htZW50KSk7Cisg
ICAgICAgIGZyYWdtZW50LnVub3B0aW1pemVkUHNldWRvQ2xhc3Nlcy5hcHBlbmQoSlNDOjpGdW5j
dGlvblB0cjxKU0M6Ok9wZXJhdGlvblB0clRhZz4ob3BlcmF0aW9uSGFzQXR0YWNobWVudCkpOwog
ICAgICAgICByZXR1cm4gRnVuY3Rpb25UeXBlOjpTaW1wbGVTZWxlY3RvckNoZWNrZXI7CiAjZW5k
aWYKIApAQCAtMjIxMywxMSArMjQyOCwxOSBAQCB2b2lkIFNlbGVjdG9yQ29kZUdlbmVyYXRvcjo6
Z2VuZXJhdGVBZGRTdHlsZVJlbGF0aW9uSWZSZXNvbHZpbmdTdHlsZShBc3NlbWJsZXI6OgogICAg
IG5vdFJlc29sdmluZ1N0eWxlLmxpbmsoJm1fYXNzZW1ibGVyKTsKIH0KIAotc3RhdGljIHZvaWQg
YWRkU3R5bGVSZWxhdGlvbkZ1bmN0aW9uKFNlbGVjdG9yQ2hlY2tlcjo6Q2hlY2tpbmdDb250ZXh0
KiBjaGVja2luZ0NvbnRleHQsIGNvbnN0IEVsZW1lbnQqIGVsZW1lbnQpCitKU0NfREVGSU5FX0pJ
VF9PUEVSQVRJT04ob3BlcmF0aW9uQWRkU3R5bGVSZWxhdGlvbkZ1bmN0aW9uLCB2b2lkLCAoU2Vs
ZWN0b3JDaGVja2VyOjpDaGVja2luZ0NvbnRleHQqIGNoZWNraW5nQ29udGV4dCwgY29uc3QgRWxl
bWVudCogZWxlbWVudCkpCiB7CiAgICAgY2hlY2tpbmdDb250ZXh0LT5zdHlsZVJlbGF0aW9ucy5h
cHBlbmQoeyAqZWxlbWVudCwgeyB9LCAxIH0pOwogfQogCisjaWYgQ1BVKEFSTV9USFVNQjIpICYm
ICFDUFUoQVBQTEVfQVJNVjdTKQorLy8gRklYTUU6IFRoaXMgY291bGQgYmUgaW1wbGVtZW50ZWQg
aW4gYXNzZW1ibHkgdG8gYXZvaWQgYSBmdW5jdGlvbiBjYWxsLCBhbmQgd2Uga25vdyB0aGUgZGl2
aXNvciBhdCBqaXQtY29tcGlsZSB0aW1lLgorSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJh
dGlvbk1vZHVsb0hlbHBlciwgaW50LCAoaW50IGRpdmlkZW5kLCBpbnQgZGl2aXNvcikpCit7Cisg
ICAgcmV0dXJuIGRpdmlkZW5kICUgZGl2aXNvcjsKK30KKyNlbmRpZgorCiB2b2lkIFNlbGVjdG9y
Q29kZUdlbmVyYXRvcjo6Z2VuZXJhdGVBZGRTdHlsZVJlbGF0aW9uKEFzc2VtYmxlcjo6UmVnaXN0
ZXJJRCBjaGVja2luZ0NvbnRleHQsIEFzc2VtYmxlcjo6UmVnaXN0ZXJJRCBlbGVtZW50LCBTdHls
ZTo6UmVsYXRpb246OlR5cGUgcmVsYXRpb25UeXBlLCBPcHRpb25hbDxBc3NlbWJsZXI6OlJlZ2lz
dGVySUQ+IHZhbHVlKQogewogICAgIEFTU0VSVChtX3NlbGVjdG9yQ29udGV4dCAhPSBTZWxlY3Rv
ckNvbnRleHQ6OlF1ZXJ5U2VsZWN0b3IpOwpAQCAtMjI3OCw3ICsyNTAxLDcgQEAgdm9pZCBTZWxl
Y3RvckNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlQWRkU3R5bGVSZWxhdGlvbihBc3NlbWJsZXI6OlJl
Z2lzdGVySUQgY2hlY2sKIAogICAgIC8vIEZJWE1FOiBBcHBlbmQgdG8gdmVjdG9yIHdpdGhvdXQg
YSBmdW5jdGlvbiBjYWxsIGF0IGxlYXN0IHdoZW4gdGhlcmUgaXMgc3VmZmljaWVudCBjYXBhY2l0
eS4KICAgICBGdW5jdGlvbkNhbGwgZnVuY3Rpb25DYWxsKG1fYXNzZW1ibGVyLCBtX3JlZ2lzdGVy
QWxsb2NhdG9yLCBtX3N0YWNrQWxsb2NhdG9yLCBtX2Z1bmN0aW9uQ2FsbHMpOwotICAgIGZ1bmN0
aW9uQ2FsbC5zZXRGdW5jdGlvbkFkZHJlc3MoYWRkU3R5bGVSZWxhdGlvbkZ1bmN0aW9uKTsKKyAg
ICBmdW5jdGlvbkNhbGwuc2V0RnVuY3Rpb25BZGRyZXNzKG9wZXJhdGlvbkFkZFN0eWxlUmVsYXRp
b25GdW5jdGlvbik7CiAgICAgZnVuY3Rpb25DYWxsLnNldFR3b0FyZ3VtZW50cyhjaGVja2luZ0Nv
bnRleHQsIGVsZW1lbnQpOwogICAgIGZ1bmN0aW9uQ2FsbC5jYWxsKCk7CiAKQEAgLTIzNTgsMTQg
KzI1ODEsNiBAQCB2b2lkIFNlbGVjdG9yQ29kZUdlbmVyYXRvcjo6Z2VuZXJhdGVTcGVjaWFsRmFp
bHVyZUluUXVpcmtzTW9kZUZvckFjdGl2ZUFuZEhvdmVySQogICAgIH0KIH0KIAotI2lmIENQVShB
Uk1fVEhVTUIyKSAmJiAhQ1BVKEFQUExFX0FSTVY3UykKLS8vIEZJWE1FOiBUaGlzIGNvdWxkIGJl
IGltcGxlbWVudGVkIGluIGFzc2VtYmx5IHRvIGF2b2lkIGEgZnVuY3Rpb24gY2FsbCwgYW5kIHdl
IGtub3cgdGhlIGRpdmlzb3IgYXQgaml0LWNvbXBpbGUgdGltZS4KLXN0YXRpYyBpbnQgbW9kdWxv
SGVscGVyKGludCBkaXZpZGVuZCwgaW50IGRpdmlzb3IpCi17Ci0gICAgcmV0dXJuIGRpdmlkZW5k
ICUgZGl2aXNvcjsKLX0KLSNlbmRpZgotCiAvLyBUaGUgdmFsdWUgaW4gaW5wdXREaXZpZGVuZCBp
cyBkZXN0cm95ZWQgYnkgdGhlIG1vZHVsbyBvcGVyYXRpb24uCiBBc3NlbWJsZXI6Okp1bXAgU2Vs
ZWN0b3JDb2RlR2VuZXJhdG9yOjptb2R1bG8oQXNzZW1ibGVyOjpSZXN1bHRDb25kaXRpb24gY29u
ZGl0aW9uLCBBc3NlbWJsZXI6OlJlZ2lzdGVySUQgaW5wdXREaXZpZGVuZCwgaW50IGRpdmlzb3Ip
CiB7CkBAIC0yMzgyLDcgKzI1OTcsNyBAQCBBc3NlbWJsZXI6Okp1bXAgU2VsZWN0b3JDb2RlR2Vu
ZXJhdG9yOjptb2R1bG8oQXNzZW1ibGVyOjpSZXN1bHRDb25kaXRpb24gY29uZGl0aQogICAgIExv
Y2FsUmVnaXN0ZXJXaXRoUHJlZmVyZW5jZSBkaXZpc29yUmVnaXN0ZXIobV9yZWdpc3RlckFsbG9j
YXRvciwgSlNDOjpHUFJJbmZvOjphcmd1bWVudEdQUjEpOwogICAgIG1fYXNzZW1ibGVyLm1vdmUo
QXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoZGl2aXNvciksIGRpdmlzb3JSZWdpc3Rlcik7CiAgICAg
RnVuY3Rpb25DYWxsIGZ1bmN0aW9uQ2FsbChtX2Fzc2VtYmxlciwgbV9yZWdpc3RlckFsbG9jYXRv
ciwgbV9zdGFja0FsbG9jYXRvciwgbV9mdW5jdGlvbkNhbGxzKTsKLSAgICBmdW5jdGlvbkNhbGwu
c2V0RnVuY3Rpb25BZGRyZXNzKG1vZHVsb0hlbHBlcik7CisgICAgZnVuY3Rpb25DYWxsLnNldEZ1
bmN0aW9uQWRkcmVzcyhvcGVyYXRpb25Nb2R1bG9IZWxwZXIpOwogICAgIGZ1bmN0aW9uQ2FsbC5z
ZXRUd29Bcmd1bWVudHMoaW5wdXREaXZpZGVuZCwgZGl2aXNvclJlZ2lzdGVyKTsKICAgICByZXR1
cm4gZnVuY3Rpb25DYWxsLmNhbGxBbmRCcmFuY2hPbkJvb2xlYW5SZXR1cm5WYWx1ZShjb25kaXRp
b24pOwogI2VsaWYgQ1BVKFg4Nl82NCkKQEAgLTI2MTEsOSArMjgyNiw2IEBAIHZvaWQgU2VsZWN0
b3JDb2RlR2VuZXJhdG9yOjpnZW5lcmF0ZUVsZW1lbnRNYXRjaGluZyhBc3NlbWJsZXI6Okp1bXBM
aXN0JiBtYXRjaGluCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGZyYWdtZW50LnVub3B0
aW1pemVkUHNldWRvQ2xhc3Nlcy5zaXplKCk7ICsraSkKICAgICAgICAgZ2VuZXJhdGVFbGVtZW50
RnVuY3Rpb25DYWxsVGVzdChtYXRjaGluZ1Bvc3RUYWdOYW1lRmFpbHVyZUNhc2VzLCBmcmFnbWVu
dC51bm9wdGltaXplZFBzZXVkb0NsYXNzZXNbaV0pOwogCi0gICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IGZyYWdtZW50LnVub3B0aW1pemVkUHNldWRvQ2xhc3Nlc1dpdGhDb250ZXh0LnNpemUo
KTsgKytpKQotICAgICAgICBnZW5lcmF0ZUNvbnRleHRGdW5jdGlvbkNhbGxUZXN0KG1hdGNoaW5n
UG9zdFRhZ05hbWVGYWlsdXJlQ2FzZXMsIGZyYWdtZW50LnVub3B0aW1pemVkUHNldWRvQ2xhc3Nl
c1dpdGhDb250ZXh0W2ldKTsKLQogICAgIGdlbmVyYXRlRWxlbWVudERhdGFNYXRjaGluZyhtYXRj
aGluZ1Bvc3RUYWdOYW1lRmFpbHVyZUNhc2VzLCBmcmFnbWVudCk7CiAKICAgICBpZiAoZnJhZ21l
bnQucHNldWRvQ2xhc3Nlcy5jb250YWlucyhDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NBY3RpdmUp
KQpAQCAtMjcwNyw3ICsyOTE5LDcgQEAgdm9pZCBTZWxlY3RvckNvZGVHZW5lcmF0b3I6OmdlbmVy
YXRlU3luY2hyb25pemVTdHlsZUF0dHJpYnV0ZShBc3NlbWJsZXI6OlJlZ2lzdGUKICAgICBBc3Nl
bWJsZXI6Okp1bXAgc3R5bGVBdHRyaWJ1dGVOb3REaXJ0eSA9IG1fYXNzZW1ibGVyLmJyYW5jaFRl
c3QzMihBc3NlbWJsZXI6Olplcm8sIGVsZW1lbnREYXRhQXJyYXlTaXplQW5kRmxhZ3MsIEFzc2Vt
Ymxlcjo6VHJ1c3RlZEltbTMyKEVsZW1lbnREYXRhOjpzdHlsZUF0dHJpYnV0ZUlzRGlydHlGbGFn
KCkpKTsKIAogICAgIEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbkNhbGwobV9hc3NlbWJsZXIsIG1fcmVn
aXN0ZXJBbGxvY2F0b3IsIG1fc3RhY2tBbGxvY2F0b3IsIG1fZnVuY3Rpb25DYWxscyk7Ci0gICAg
ZnVuY3Rpb25DYWxsLnNldEZ1bmN0aW9uQWRkcmVzcyhTdHlsZWRFbGVtZW50OjpzeW5jaHJvbml6
ZVN0eWxlQXR0cmlidXRlSW50ZXJuYWwpOworICAgIGZ1bmN0aW9uQ2FsbC5zZXRGdW5jdGlvbkFk
ZHJlc3Mob3BlcmF0aW9uU3luY2hyb25pemVTdHlsZUF0dHJpYnV0ZUludGVybmFsKTsKICAgICBB
c3NlbWJsZXI6OlJlZ2lzdGVySUQgZWxlbWVudEFkZHJlc3MgPSBlbGVtZW50QWRkcmVzc1JlZ2lz
dGVyOwogICAgIGZ1bmN0aW9uQ2FsbC5zZXRPbmVBcmd1bWVudChlbGVtZW50QWRkcmVzcyk7CiAg
ICAgZnVuY3Rpb25DYWxsLmNhbGwoKTsKQEAgLTI3NDIsNyArMjk1NCw3IEBAIHZvaWQgU2VsZWN0
b3JDb2RlR2VuZXJhdG9yOjpnZW5lcmF0ZVN5bmNocm9uaXplQWxsQW5pbWF0ZWRTVkdBdHRyaWJ1
dGUoQXNzZW1ibGVyCiAgICAgQXNzZW1ibGVyOjpKdW1wIGFuaW1hdGVkU1ZHQXR0cmlidXRlc05v
dERpcnR5ID0gbV9hc3NlbWJsZXIuYnJhbmNoVGVzdDMyKEFzc2VtYmxlcjo6WmVybywgZWxlbWVu
dERhdGFBcnJheVNpemVBbmRGbGFncywgQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoRWxlbWVudERh
dGE6OmFuaW1hdGVkU1ZHQXR0cmlidXRlc0FyZURpcnR5RmxhZygpKSk7CiAKICAgICBGdW5jdGlv
bkNhbGwgZnVuY3Rpb25DYWxsKG1fYXNzZW1ibGVyLCBtX3JlZ2lzdGVyQWxsb2NhdG9yLCBtX3N0
YWNrQWxsb2NhdG9yLCBtX2Z1bmN0aW9uQ2FsbHMpOwotICAgIGZ1bmN0aW9uQ2FsbC5zZXRGdW5j
dGlvbkFkZHJlc3MoU1ZHRWxlbWVudDo6c3luY2hyb25pemVBbGxBbmltYXRlZFNWR0F0dHJpYnV0
ZSk7CisgICAgZnVuY3Rpb25DYWxsLnNldEZ1bmN0aW9uQWRkcmVzcyhvcGVyYXRpb25TeW5jaHJv
bml6ZUFsbEFuaW1hdGVkU1ZHQXR0cmlidXRlKTsKICAgICBBc3NlbWJsZXI6OlJlZ2lzdGVySUQg
ZWxlbWVudEFkZHJlc3MgPSBlbGVtZW50QWRkcmVzc1JlZ2lzdGVyOwogICAgIGZ1bmN0aW9uQ2Fs
bC5zZXRPbmVBcmd1bWVudChlbGVtZW50QWRkcmVzcyk7CiAgICAgZnVuY3Rpb25DYWxsLmNhbGwo
KTsKQEAgLTI5MzMsNyArMzE0NSw3IEBAIHN0YXRpYyBib29sIGF0dHJpYnV0ZVZhbHVlTWF0Y2hI
eXBoZW5SdWxlKGNvbnN0IEF0dHJpYnV0ZSogYXR0cmlidXRlLCBBdG9tU3RyaW5nCiB9CiAKIHRl
bXBsYXRlPENhc2VTZW5zaXRpdml0eSBjYXNlU2Vuc2l0aXZpdHk+Ci1zdGF0aWMgYm9vbCBhdHRy
aWJ1dGVWYWx1ZVNwYWNlU2VwYXJldGVkTGlzdENvbnRhaW5zKGNvbnN0IEF0dHJpYnV0ZSogYXR0
cmlidXRlLCBBdG9tU3RyaW5nSW1wbCogZXhwZWN0ZWRTdHJpbmcpCitzdGF0aWMgYm9vbCBhdHRy
aWJ1dGVWYWx1ZVNwYWNlU2VwYXJhdGVkTGlzdENvbnRhaW5zKGNvbnN0IEF0dHJpYnV0ZSogYXR0
cmlidXRlLCBBdG9tU3RyaW5nSW1wbCogZXhwZWN0ZWRTdHJpbmcpCiB7CiAgICAgQXRvbVN0cmlu
Z0ltcGwmIHZhbHVlID0gKmF0dHJpYnV0ZS0+dmFsdWUoKS5pbXBsKCk7CiAKQEAgLTI5NTYsNiAr
MzE2OCw1NiBAQCBzdGF0aWMgYm9vbCBhdHRyaWJ1dGVWYWx1ZVNwYWNlU2VwYXJldGVkTGlzdENv
bnRhaW5zKGNvbnN0IEF0dHJpYnV0ZSogYXR0cmlidXRlLAogICAgIHJldHVybiBmYWxzZTsKIH0K
IAorSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkF0dHJpYnV0ZVZhbHVlQmVnaW5z
V2l0aENhc2VTZW5zaXRpdmUsIGJvb2wsIChjb25zdCBBdHRyaWJ1dGUqIGF0dHJpYnV0ZSwgQXRv
bVN0cmluZ0ltcGwqIGV4cGVjdGVkU3RyaW5nKSkKK3sKKyAgICByZXR1cm4gYXR0cmlidXRlVmFs
dWVCZWdpbnNXaXRoPENhc2VTZW5zaXRpdmU+KGF0dHJpYnV0ZSwgZXhwZWN0ZWRTdHJpbmcpOwor
fQorCitKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uQXR0cmlidXRlVmFsdWVCZWdp
bnNXaXRoQ2FzZUluc2Vuc2l0aXZlLCBib29sLCAoY29uc3QgQXR0cmlidXRlKiBhdHRyaWJ1dGUs
IEF0b21TdHJpbmdJbXBsKiBleHBlY3RlZFN0cmluZykpCit7CisgICAgcmV0dXJuIGF0dHJpYnV0
ZVZhbHVlQmVnaW5zV2l0aDxDYXNlSW5zZW5zaXRpdmU+KGF0dHJpYnV0ZSwgZXhwZWN0ZWRTdHJp
bmcpOworfQorCitKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uQXR0cmlidXRlVmFs
dWVDb250YWluc0Nhc2VTZW5zaXRpdmUsIGJvb2wsIChjb25zdCBBdHRyaWJ1dGUqIGF0dHJpYnV0
ZSwgQXRvbVN0cmluZ0ltcGwqIGV4cGVjdGVkU3RyaW5nKSkKK3sKKyAgICByZXR1cm4gYXR0cmli
dXRlVmFsdWVDb250YWluczxDYXNlU2Vuc2l0aXZlPihhdHRyaWJ1dGUsIGV4cGVjdGVkU3RyaW5n
KTsKK30KKworSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkF0dHJpYnV0ZVZhbHVl
Q29udGFpbnNDYXNlSW5zZW5zaXRpdmUsIGJvb2wsIChjb25zdCBBdHRyaWJ1dGUqIGF0dHJpYnV0
ZSwgQXRvbVN0cmluZ0ltcGwqIGV4cGVjdGVkU3RyaW5nKSkKK3sKKyAgICByZXR1cm4gYXR0cmli
dXRlVmFsdWVDb250YWluczxDYXNlSW5zZW5zaXRpdmU+KGF0dHJpYnV0ZSwgZXhwZWN0ZWRTdHJp
bmcpOworfQorCitKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uQXR0cmlidXRlVmFs
dWVFbmRzV2l0aENhc2VTZW5zaXRpdmUsIGJvb2wsIChjb25zdCBBdHRyaWJ1dGUqIGF0dHJpYnV0
ZSwgQXRvbVN0cmluZ0ltcGwqIGV4cGVjdGVkU3RyaW5nKSkKK3sKKyAgICByZXR1cm4gYXR0cmli
dXRlVmFsdWVFbmRzV2l0aDxDYXNlU2Vuc2l0aXZlPihhdHRyaWJ1dGUsIGV4cGVjdGVkU3RyaW5n
KTsKK30KKworSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkF0dHJpYnV0ZVZhbHVl
RW5kc1dpdGhDYXNlSW5zZW5zaXRpdmUsIGJvb2wsIChjb25zdCBBdHRyaWJ1dGUqIGF0dHJpYnV0
ZSwgQXRvbVN0cmluZ0ltcGwqIGV4cGVjdGVkU3RyaW5nKSkKK3sKKyAgICByZXR1cm4gYXR0cmli
dXRlVmFsdWVFbmRzV2l0aDxDYXNlSW5zZW5zaXRpdmU+KGF0dHJpYnV0ZSwgZXhwZWN0ZWRTdHJp
bmcpOworfQorCitKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uQXR0cmlidXRlVmFs
dWVNYXRjaEh5cGhlblJ1bGVDYXNlU2Vuc2l0aXZlLCBib29sLCAoY29uc3QgQXR0cmlidXRlKiBh
dHRyaWJ1dGUsIEF0b21TdHJpbmdJbXBsKiBleHBlY3RlZFN0cmluZykpCit7CisgICAgcmV0dXJu
IGF0dHJpYnV0ZVZhbHVlTWF0Y2hIeXBoZW5SdWxlPENhc2VTZW5zaXRpdmU+KGF0dHJpYnV0ZSwg
ZXhwZWN0ZWRTdHJpbmcpOworfQorCitKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9u
QXR0cmlidXRlVmFsdWVNYXRjaEh5cGhlblJ1bGVDYXNlSW5zZW5zaXRpdmUsIGJvb2wsIChjb25z
dCBBdHRyaWJ1dGUqIGF0dHJpYnV0ZSwgQXRvbVN0cmluZ0ltcGwqIGV4cGVjdGVkU3RyaW5nKSkK
K3sKKyAgICByZXR1cm4gYXR0cmlidXRlVmFsdWVNYXRjaEh5cGhlblJ1bGU8Q2FzZUluc2Vuc2l0
aXZlPihhdHRyaWJ1dGUsIGV4cGVjdGVkU3RyaW5nKTsKK30KKworSlNDX0RFRklORV9KSVRfT1BF
UkFUSU9OKG9wZXJhdGlvbkF0dHJpYnV0ZVZhbHVlU3BhY2VTZXBhcmF0ZWRMaXN0Q29udGFpbnND
YXNlU2Vuc2l0aXZlLCBib29sLCAoY29uc3QgQXR0cmlidXRlKiBhdHRyaWJ1dGUsIEF0b21TdHJp
bmdJbXBsKiBleHBlY3RlZFN0cmluZykpCit7CisgICAgcmV0dXJuIGF0dHJpYnV0ZVZhbHVlU3Bh
Y2VTZXBhcmF0ZWRMaXN0Q29udGFpbnM8Q2FzZVNlbnNpdGl2ZT4oYXR0cmlidXRlLCBleHBlY3Rl
ZFN0cmluZyk7Cit9CisKK0pTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25BdHRyaWJ1
dGVWYWx1ZVNwYWNlU2VwYXJhdGVkTGlzdENvbnRhaW5zQ2FzZUluc2Vuc2l0aXZlLCBib29sLCAo
Y29uc3QgQXR0cmlidXRlKiBhdHRyaWJ1dGUsIEF0b21TdHJpbmdJbXBsKiBleHBlY3RlZFN0cmlu
ZykpCit7CisgICAgcmV0dXJuIGF0dHJpYnV0ZVZhbHVlU3BhY2VTZXBhcmF0ZWRMaXN0Q29udGFp
bnM8Q2FzZUluc2Vuc2l0aXZlPihhdHRyaWJ1dGUsIGV4cGVjdGVkU3RyaW5nKTsKK30KKwogdm9p
ZCBTZWxlY3RvckNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlRWxlbWVudEF0dHJpYnV0ZVZhbHVlTWF0
Y2hpbmcoQXNzZW1ibGVyOjpKdW1wTGlzdCYgZmFpbHVyZUNhc2VzLCBBc3NlbWJsZXI6OlJlZ2lz
dGVySUQgY3VycmVudEF0dHJpYnV0ZUFkZHJlc3MsIGNvbnN0IEF0dHJpYnV0ZU1hdGNoaW5nSW5m
byYgYXR0cmlidXRlSW5mbykKIHsKICAgICBjb25zdCBDU1NTZWxlY3RvciYgYXR0cmlidXRlU2Vs
ZWN0b3IgPSBhdHRyaWJ1dGVJbmZvLnNlbGVjdG9yKCk7CkBAIC0yOTY1LDIyICszMjI3LDIyIEBA
IHZvaWQgU2VsZWN0b3JDb2RlR2VuZXJhdG9yOjpnZW5lcmF0ZUVsZW1lbnRBdHRyaWJ1dGVWYWx1
ZU1hdGNoaW5nKEFzc2VtYmxlcjo6SnVtCiAKICAgICBzd2l0Y2ggKGF0dHJpYnV0ZVNlbGVjdG9y
Lm1hdGNoKCkpIHsKICAgICBjYXNlIENTU1NlbGVjdG9yOjpCZWdpbjoKLSAgICAgICAgZ2VuZXJh
dGVFbGVtZW50QXR0cmlidXRlRnVuY3Rpb25DYWxsVmFsdWVNYXRjaGluZyhmYWlsdXJlQ2FzZXMs
IGN1cnJlbnRBdHRyaWJ1dGVBZGRyZXNzLCBleHBlY3RlZFZhbHVlLCB2YWx1ZUNhc2VTZW5zaXRp
dml0eSwgYXR0cmlidXRlVmFsdWVCZWdpbnNXaXRoPENhc2VTZW5zaXRpdmU+LCBhdHRyaWJ1dGVW
YWx1ZUJlZ2luc1dpdGg8Q2FzZUluc2Vuc2l0aXZlPik7CisgICAgICAgIGdlbmVyYXRlRWxlbWVu
dEF0dHJpYnV0ZUZ1bmN0aW9uQ2FsbFZhbHVlTWF0Y2hpbmcoZmFpbHVyZUNhc2VzLCBjdXJyZW50
QXR0cmlidXRlQWRkcmVzcywgZXhwZWN0ZWRWYWx1ZSwgdmFsdWVDYXNlU2Vuc2l0aXZpdHksIG9w
ZXJhdGlvbkF0dHJpYnV0ZVZhbHVlQmVnaW5zV2l0aENhc2VTZW5zaXRpdmUsIG9wZXJhdGlvbkF0
dHJpYnV0ZVZhbHVlQmVnaW5zV2l0aENhc2VJbnNlbnNpdGl2ZSk7CiAgICAgICAgIGJyZWFrOwog
ICAgIGNhc2UgQ1NTU2VsZWN0b3I6OkNvbnRhaW46Ci0gICAgICAgIGdlbmVyYXRlRWxlbWVudEF0
dHJpYnV0ZUZ1bmN0aW9uQ2FsbFZhbHVlTWF0Y2hpbmcoZmFpbHVyZUNhc2VzLCBjdXJyZW50QXR0
cmlidXRlQWRkcmVzcywgZXhwZWN0ZWRWYWx1ZSwgdmFsdWVDYXNlU2Vuc2l0aXZpdHksIGF0dHJp
YnV0ZVZhbHVlQ29udGFpbnM8Q2FzZVNlbnNpdGl2ZT4sIGF0dHJpYnV0ZVZhbHVlQ29udGFpbnM8
Q2FzZUluc2Vuc2l0aXZlPik7CisgICAgICAgIGdlbmVyYXRlRWxlbWVudEF0dHJpYnV0ZUZ1bmN0
aW9uQ2FsbFZhbHVlTWF0Y2hpbmcoZmFpbHVyZUNhc2VzLCBjdXJyZW50QXR0cmlidXRlQWRkcmVz
cywgZXhwZWN0ZWRWYWx1ZSwgdmFsdWVDYXNlU2Vuc2l0aXZpdHksIG9wZXJhdGlvbkF0dHJpYnV0
ZVZhbHVlQ29udGFpbnNDYXNlU2Vuc2l0aXZlLCBvcGVyYXRpb25BdHRyaWJ1dGVWYWx1ZUNvbnRh
aW5zQ2FzZUluc2Vuc2l0aXZlKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDU1NTZWxlY3Rv
cjo6RW5kOgotICAgICAgICBnZW5lcmF0ZUVsZW1lbnRBdHRyaWJ1dGVGdW5jdGlvbkNhbGxWYWx1
ZU1hdGNoaW5nKGZhaWx1cmVDYXNlcywgY3VycmVudEF0dHJpYnV0ZUFkZHJlc3MsIGV4cGVjdGVk
VmFsdWUsIHZhbHVlQ2FzZVNlbnNpdGl2aXR5LCBhdHRyaWJ1dGVWYWx1ZUVuZHNXaXRoPENhc2VT
ZW5zaXRpdmU+LCBhdHRyaWJ1dGVWYWx1ZUVuZHNXaXRoPENhc2VJbnNlbnNpdGl2ZT4pOworICAg
ICAgICBnZW5lcmF0ZUVsZW1lbnRBdHRyaWJ1dGVGdW5jdGlvbkNhbGxWYWx1ZU1hdGNoaW5nKGZh
aWx1cmVDYXNlcywgY3VycmVudEF0dHJpYnV0ZUFkZHJlc3MsIGV4cGVjdGVkVmFsdWUsIHZhbHVl
Q2FzZVNlbnNpdGl2aXR5LCBvcGVyYXRpb25BdHRyaWJ1dGVWYWx1ZUVuZHNXaXRoQ2FzZVNlbnNp
dGl2ZSwgb3BlcmF0aW9uQXR0cmlidXRlVmFsdWVFbmRzV2l0aENhc2VJbnNlbnNpdGl2ZSk7CiAg
ICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ1NTU2VsZWN0b3I6OkV4YWN0OgogICAgICAgICBnZW5l
cmF0ZUVsZW1lbnRBdHRyaWJ1dGVWYWx1ZUV4YWN0TWF0Y2hpbmcoZmFpbHVyZUNhc2VzLCBjdXJy
ZW50QXR0cmlidXRlQWRkcmVzcywgZXhwZWN0ZWRWYWx1ZSwgdmFsdWVDYXNlU2Vuc2l0aXZpdHkp
OwogICAgICAgICBicmVhazsKICAgICBjYXNlIENTU1NlbGVjdG9yOjpIeXBoZW46Ci0gICAgICAg
IGdlbmVyYXRlRWxlbWVudEF0dHJpYnV0ZUZ1bmN0aW9uQ2FsbFZhbHVlTWF0Y2hpbmcoZmFpbHVy
ZUNhc2VzLCBjdXJyZW50QXR0cmlidXRlQWRkcmVzcywgZXhwZWN0ZWRWYWx1ZSwgdmFsdWVDYXNl
U2Vuc2l0aXZpdHksIGF0dHJpYnV0ZVZhbHVlTWF0Y2hIeXBoZW5SdWxlPENhc2VTZW5zaXRpdmU+
LCBhdHRyaWJ1dGVWYWx1ZU1hdGNoSHlwaGVuUnVsZTxDYXNlSW5zZW5zaXRpdmU+KTsKKyAgICAg
ICAgZ2VuZXJhdGVFbGVtZW50QXR0cmlidXRlRnVuY3Rpb25DYWxsVmFsdWVNYXRjaGluZyhmYWls
dXJlQ2FzZXMsIGN1cnJlbnRBdHRyaWJ1dGVBZGRyZXNzLCBleHBlY3RlZFZhbHVlLCB2YWx1ZUNh
c2VTZW5zaXRpdml0eSwgb3BlcmF0aW9uQXR0cmlidXRlVmFsdWVNYXRjaEh5cGhlblJ1bGVDYXNl
U2Vuc2l0aXZlLCBvcGVyYXRpb25BdHRyaWJ1dGVWYWx1ZU1hdGNoSHlwaGVuUnVsZUNhc2VJbnNl
bnNpdGl2ZSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ1NTU2VsZWN0b3I6Okxpc3Q6Ci0g
ICAgICAgIGdlbmVyYXRlRWxlbWVudEF0dHJpYnV0ZUZ1bmN0aW9uQ2FsbFZhbHVlTWF0Y2hpbmco
ZmFpbHVyZUNhc2VzLCBjdXJyZW50QXR0cmlidXRlQWRkcmVzcywgZXhwZWN0ZWRWYWx1ZSwgdmFs
dWVDYXNlU2Vuc2l0aXZpdHksIGF0dHJpYnV0ZVZhbHVlU3BhY2VTZXBhcmV0ZWRMaXN0Q29udGFp
bnM8Q2FzZVNlbnNpdGl2ZT4sIGF0dHJpYnV0ZVZhbHVlU3BhY2VTZXBhcmV0ZWRMaXN0Q29udGFp
bnM8Q2FzZUluc2Vuc2l0aXZlPik7CisgICAgICAgIGdlbmVyYXRlRWxlbWVudEF0dHJpYnV0ZUZ1
bmN0aW9uQ2FsbFZhbHVlTWF0Y2hpbmcoZmFpbHVyZUNhc2VzLCBjdXJyZW50QXR0cmlidXRlQWRk
cmVzcywgZXhwZWN0ZWRWYWx1ZSwgdmFsdWVDYXNlU2Vuc2l0aXZpdHksIG9wZXJhdGlvbkF0dHJp
YnV0ZVZhbHVlU3BhY2VTZXBhcmF0ZWRMaXN0Q29udGFpbnNDYXNlU2Vuc2l0aXZlLCBvcGVyYXRp
b25BdHRyaWJ1dGVWYWx1ZVNwYWNlU2VwYXJhdGVkTGlzdENvbnRhaW5zQ2FzZUluc2Vuc2l0aXZl
KTsKICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CkBAIC0zMDIwLDcgKzMyODIsNyBAQCB2b2lkIFNlbGVjdG9yQ29kZUdlbmVyYXRvcjo6
Z2VuZXJhdGVFbGVtZW50QXR0cmlidXRlVmFsdWVFeGFjdE1hdGNoaW5nKEFzc2VtYmxlcgogICAg
ICAgICBtX2Fzc2VtYmxlci5sb2FkUHRyKEFzc2VtYmxlcjo6QWRkcmVzcyhjdXJyZW50QXR0cmli
dXRlQWRkcmVzcywgQXR0cmlidXRlOjp2YWx1ZU1lbW9yeU9mZnNldCgpKSwgdmFsdWVTdHJpbmdJ
bXBsKTsKIAogICAgICAgICBGdW5jdGlvbkNhbGwgZnVuY3Rpb25DYWxsKG1fYXNzZW1ibGVyLCBt
X3JlZ2lzdGVyQWxsb2NhdG9yLCBtX3N0YWNrQWxsb2NhdG9yLCBtX2Z1bmN0aW9uQ2FsbHMpOwot
ICAgICAgICBmdW5jdGlvbkNhbGwuc2V0RnVuY3Rpb25BZGRyZXNzKFdURjo6ZXF1YWxJZ25vcmlu
Z0FTQ0lJQ2FzZU5vbk51bGwpOworICAgICAgICBmdW5jdGlvbkNhbGwuc2V0RnVuY3Rpb25BZGRy
ZXNzKG9wZXJhdGlvbkVxdWFsSWdub3JpbmdBU0NJSUNhc2VOb25OdWxsKTsKICAgICAgICAgZnVu
Y3Rpb25DYWxsLnNldFR3b0FyZ3VtZW50cyh2YWx1ZVN0cmluZ0ltcGwsIGV4cGVjdGVkVmFsdWVS
ZWdpc3Rlcik7CiAgICAgICAgIGZhaWx1cmVDYXNlcy5hcHBlbmQoZnVuY3Rpb25DYWxsLmNhbGxB
bmRCcmFuY2hPbkJvb2xlYW5SZXR1cm5WYWx1ZShBc3NlbWJsZXI6Olplcm8pKTsKIApAQCAtMzAz
Myw3ICszMjk1LDcgQEAgdm9pZCBTZWxlY3RvckNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlRWxlbWVu
dEF0dHJpYnV0ZVZhbHVlRXhhY3RNYXRjaGluZyhBc3NlbWJsZXIKIAogICAgICAgICBBc3NlbWJs
ZXI6Okp1bXAgc2tpcENhc2VJbnNlbnNpdGl2ZUNvbXBhcmlzb24gPSBtX2Fzc2VtYmxlci5icmFu
Y2hQdHIoQXNzZW1ibGVyOjpFcXVhbCwgdmFsdWVTdHJpbmdJbXBsLCBleHBlY3RlZFZhbHVlUmVn
aXN0ZXIpOwogICAgICAgICBGdW5jdGlvbkNhbGwgZnVuY3Rpb25DYWxsKG1fYXNzZW1ibGVyLCBt
X3JlZ2lzdGVyQWxsb2NhdG9yLCBtX3N0YWNrQWxsb2NhdG9yLCBtX2Z1bmN0aW9uQ2FsbHMpOwot
ICAgICAgICBmdW5jdGlvbkNhbGwuc2V0RnVuY3Rpb25BZGRyZXNzKFdURjo6ZXF1YWxJZ25vcmlu
Z0FTQ0lJQ2FzZU5vbk51bGwpOworICAgICAgICBmdW5jdGlvbkNhbGwuc2V0RnVuY3Rpb25BZGRy
ZXNzKG9wZXJhdGlvbkVxdWFsSWdub3JpbmdBU0NJSUNhc2VOb25OdWxsKTsKICAgICAgICAgZnVu
Y3Rpb25DYWxsLnNldFR3b0FyZ3VtZW50cyh2YWx1ZVN0cmluZ0ltcGwsIGV4cGVjdGVkVmFsdWVS
ZWdpc3Rlcik7CiAgICAgICAgIGZhaWx1cmVDYXNlcy5hcHBlbmQoZnVuY3Rpb25DYWxsLmNhbGxB
bmRCcmFuY2hPbkJvb2xlYW5SZXR1cm5WYWx1ZShBc3NlbWJsZXI6Olplcm8pKTsKICAgICAgICAg
c2tpcENhc2VJbnNlbnNpdGl2ZUNvbXBhcmlzb24ubGluaygmbV9hc3NlbWJsZXIpOwpAQCAtMzA0
Miw3ICszMzA0LDcgQEAgdm9pZCBTZWxlY3RvckNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlRWxlbWVu
dEF0dHJpYnV0ZVZhbHVlRXhhY3RNYXRjaGluZyhBc3NlbWJsZXIKICAgICB9CiB9CiAKLXZvaWQg
U2VsZWN0b3JDb2RlR2VuZXJhdG9yOjpnZW5lcmF0ZUVsZW1lbnRBdHRyaWJ1dGVGdW5jdGlvbkNh
bGxWYWx1ZU1hdGNoaW5nKEFzc2VtYmxlcjo6SnVtcExpc3QmIGZhaWx1cmVDYXNlcywgQXNzZW1i
bGVyOjpSZWdpc3RlcklEIGN1cnJlbnRBdHRyaWJ1dGVBZGRyZXNzLCBjb25zdCBBdG9tU3RyaW5n
JiBleHBlY3RlZFZhbHVlLCBBdHRyaWJ1dGVDYXNlU2Vuc2l0aXZpdHkgdmFsdWVDYXNlU2Vuc2l0
aXZpdHksIEpTQzo6RnVuY3Rpb25QdHI8Q1NTT3BlcmF0aW9uUHRyVGFnPiBjYXNlU2Vuc2l0aXZl
VGVzdCwgSlNDOjpGdW5jdGlvblB0cjxDU1NPcGVyYXRpb25QdHJUYWc+IGNhc2VJbnNlbnNpdGl2
ZVRlc3QpCit2b2lkIFNlbGVjdG9yQ29kZUdlbmVyYXRvcjo6Z2VuZXJhdGVFbGVtZW50QXR0cmli
dXRlRnVuY3Rpb25DYWxsVmFsdWVNYXRjaGluZyhBc3NlbWJsZXI6Okp1bXBMaXN0JiBmYWlsdXJl
Q2FzZXMsIEFzc2VtYmxlcjo6UmVnaXN0ZXJJRCBjdXJyZW50QXR0cmlidXRlQWRkcmVzcywgY29u
c3QgQXRvbVN0cmluZyYgZXhwZWN0ZWRWYWx1ZSwgQXR0cmlidXRlQ2FzZVNlbnNpdGl2aXR5IHZh
bHVlQ2FzZVNlbnNpdGl2aXR5LCBKU0M6OkZ1bmN0aW9uUHRyPEpTQzo6T3BlcmF0aW9uUHRyVGFn
PiBjYXNlU2Vuc2l0aXZlVGVzdCwgSlNDOjpGdW5jdGlvblB0cjxKU0M6Ok9wZXJhdGlvblB0clRh
Zz4gY2FzZUluc2Vuc2l0aXZlVGVzdCkKIHsKICAgICBMb2NhbFJlZ2lzdGVyV2l0aFByZWZlcmVu
Y2UgZXhwZWN0ZWRWYWx1ZVJlZ2lzdGVyKG1fcmVnaXN0ZXJBbGxvY2F0b3IsIEpTQzo6R1BSSW5m
bzo6YXJndW1lbnRHUFIxKTsKICAgICBtX2Fzc2VtYmxlci5tb3ZlKEFzc2VtYmxlcjo6VHJ1c3Rl
ZEltbVB0cihleHBlY3RlZFZhbHVlLmltcGwoKSksIGV4cGVjdGVkVmFsdWVSZWdpc3Rlcik7CkBA
IC0zMDk4LDcgKzMzNjAsNyBAQCB2b2lkIFNlbGVjdG9yQ29kZUdlbmVyYXRvcjo6Z2VuZXJhdGVF
bGVtZW50QXR0cmlidXRlRnVuY3Rpb25DYWxsVmFsdWVNYXRjaGluZyhBcwogICAgIH0KIH0KIAot
dm9pZCBTZWxlY3RvckNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlRWxlbWVudEZ1bmN0aW9uQ2FsbFRl
c3QoQXNzZW1ibGVyOjpKdW1wTGlzdCYgZmFpbHVyZUNhc2VzLCBKU0M6OkZ1bmN0aW9uUHRyPENT
U09wZXJhdGlvblB0clRhZz4gdGVzdEZ1bmN0aW9uKQordm9pZCBTZWxlY3RvckNvZGVHZW5lcmF0
b3I6OmdlbmVyYXRlRWxlbWVudEZ1bmN0aW9uQ2FsbFRlc3QoQXNzZW1ibGVyOjpKdW1wTGlzdCYg
ZmFpbHVyZUNhc2VzLCBKU0M6OkZ1bmN0aW9uUHRyPEpTQzo6T3BlcmF0aW9uUHRyVGFnPiB0ZXN0
RnVuY3Rpb24pCiB7CiAgICAgQXNzZW1ibGVyOjpSZWdpc3RlcklEIGVsZW1lbnRBZGRyZXNzID0g
ZWxlbWVudEFkZHJlc3NSZWdpc3RlcjsKICAgICBGdW5jdGlvbkNhbGwgZnVuY3Rpb25DYWxsKG1f
YXNzZW1ibGVyLCBtX3JlZ2lzdGVyQWxsb2NhdG9yLCBtX3N0YWNrQWxsb2NhdG9yLCBtX2Z1bmN0
aW9uQ2FsbHMpOwpAQCAtMzEwNywxOSArMzM2OSw3IEBAIHZvaWQgU2VsZWN0b3JDb2RlR2VuZXJh
dG9yOjpnZW5lcmF0ZUVsZW1lbnRGdW5jdGlvbkNhbGxUZXN0KEFzc2VtYmxlcjo6SnVtcExpc3Qm
CiAgICAgZmFpbHVyZUNhc2VzLmFwcGVuZChmdW5jdGlvbkNhbGwuY2FsbEFuZEJyYW5jaE9uQm9v
bGVhblJldHVyblZhbHVlKEFzc2VtYmxlcjo6WmVybykpOwogfQogCi12b2lkIFNlbGVjdG9yQ29k
ZUdlbmVyYXRvcjo6Z2VuZXJhdGVDb250ZXh0RnVuY3Rpb25DYWxsVGVzdChBc3NlbWJsZXI6Okp1
bXBMaXN0JiBmYWlsdXJlQ2FzZXMsIEpTQzo6RnVuY3Rpb25QdHI8Q1NTT3BlcmF0aW9uUHRyVGFn
PiB0ZXN0RnVuY3Rpb24pCi17Ci0gICAgQXNzZW1ibGVyOjpSZWdpc3RlcklEIGNoZWNraW5nQ29u
dGV4dCA9IG1fcmVnaXN0ZXJBbGxvY2F0b3IuYWxsb2NhdGVSZWdpc3RlcigpOwotICAgIGxvYWRD
aGVja2luZ0NvbnRleHQoY2hlY2tpbmdDb250ZXh0KTsKLSAgICBtX3JlZ2lzdGVyQWxsb2NhdG9y
LmRlYWxsb2NhdGVSZWdpc3RlcihjaGVja2luZ0NvbnRleHQpOwotCi0gICAgRnVuY3Rpb25DYWxs
IGZ1bmN0aW9uQ2FsbChtX2Fzc2VtYmxlciwgbV9yZWdpc3RlckFsbG9jYXRvciwgbV9zdGFja0Fs
bG9jYXRvciwgbV9mdW5jdGlvbkNhbGxzKTsKLSAgICBmdW5jdGlvbkNhbGwuc2V0RnVuY3Rpb25B
ZGRyZXNzKHRlc3RGdW5jdGlvbik7Ci0gICAgZnVuY3Rpb25DYWxsLnNldE9uZUFyZ3VtZW50KGNo
ZWNraW5nQ29udGV4dCk7Ci0gICAgZmFpbHVyZUNhc2VzLmFwcGVuZChmdW5jdGlvbkNhbGwuY2Fs
bEFuZEJyYW5jaE9uQm9vbGVhblJldHVyblZhbHVlKEFzc2VtYmxlcjo6WmVybykpOwotfQotCi1z
dGF0aWMgYm9vbCBlbGVtZW50SXNBY3RpdmUoY29uc3QgRWxlbWVudCogZWxlbWVudCkKK0pTQ19E
RUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25FbGVtZW50SXNBY3RpdmUsIGJvb2wsIChjb25z
dCBFbGVtZW50KiBlbGVtZW50KSkKIHsKICAgICByZXR1cm4gZWxlbWVudC0+YWN0aXZlKCkgfHwg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpmb3JjZVBzZXVkb1N0YXRlKCplbGVtZW50LCBDU1NT
ZWxlY3Rvcjo6UHNldWRvQ2xhc3NBY3RpdmUpOwogfQpAQCAtMzEyOSw3ICszMzc5LDcgQEAgdm9p
ZCBTZWxlY3RvckNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlRWxlbWVudElzQWN0aXZlKEFzc2VtYmxl
cjo6SnVtcExpc3QmIGZhaWx1cmUKICAgICBnZW5lcmF0ZVNwZWNpYWxGYWlsdXJlSW5RdWlya3NN
b2RlRm9yQWN0aXZlQW5kSG92ZXJJZk5lZWRlZChmYWlsdXJlQ2FzZXMsIGZyYWdtZW50KTsKIAog
ICAgIEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbkNhbGwobV9hc3NlbWJsZXIsIG1fcmVnaXN0ZXJBbGxv
Y2F0b3IsIG1fc3RhY2tBbGxvY2F0b3IsIG1fZnVuY3Rpb25DYWxscyk7Ci0gICAgZnVuY3Rpb25D
YWxsLnNldEZ1bmN0aW9uQWRkcmVzcyhlbGVtZW50SXNBY3RpdmUpOworICAgIGZ1bmN0aW9uQ2Fs
bC5zZXRGdW5jdGlvbkFkZHJlc3Mob3BlcmF0aW9uRWxlbWVudElzQWN0aXZlKTsKICAgICBmdW5j
dGlvbkNhbGwuc2V0T25lQXJndW1lbnQoZWxlbWVudEFkZHJlc3NSZWdpc3Rlcik7CiAgICAgZmFp
bHVyZUNhc2VzLmFwcGVuZChmdW5jdGlvbkNhbGwuY2FsbEFuZEJyYW5jaE9uQm9vbGVhblJldHVy
blZhbHVlKEFzc2VtYmxlcjo6WmVybykpOwogfQpAQCAtMzIzMCw3ICszNDgwLDcgQEAgdm9pZCBT
ZWxlY3RvckNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlRWxlbWVudElzRmlyc3RDaGlsZChBc3NlbWJs
ZXI6Okp1bXBMaXN0JiBmYWkKICAgICBzdWNjZXNzQ2FzZS5saW5rKCZtX2Fzc2VtYmxlcik7CiB9
CiAKLXN0YXRpYyBib29sIGVsZW1lbnRJc0hvdmVyZWQoY29uc3QgRWxlbWVudCogZWxlbWVudCkK
K0pTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25FbGVtZW50SXNIb3ZlcmVkLCBib29s
LCAoY29uc3QgRWxlbWVudCogZWxlbWVudCkpCiB7CiAgICAgcmV0dXJuIGVsZW1lbnQtPmhvdmVy
ZWQoKSB8fCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmZvcmNlUHNldWRvU3RhdGUoKmVsZW1l
bnQsIENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc0hvdmVyKTsKIH0KQEAgLTMyNDAsNyArMzQ5MCw3
IEBAIHZvaWQgU2VsZWN0b3JDb2RlR2VuZXJhdG9yOjpnZW5lcmF0ZUVsZW1lbnRJc0hvdmVyZWQo
QXNzZW1ibGVyOjpKdW1wTGlzdCYgZmFpbHVyCiAgICAgZ2VuZXJhdGVTcGVjaWFsRmFpbHVyZUlu
UXVpcmtzTW9kZUZvckFjdGl2ZUFuZEhvdmVySWZOZWVkZWQoZmFpbHVyZUNhc2VzLCBmcmFnbWVu
dCk7CiAKICAgICBGdW5jdGlvbkNhbGwgZnVuY3Rpb25DYWxsKG1fYXNzZW1ibGVyLCBtX3JlZ2lz
dGVyQWxsb2NhdG9yLCBtX3N0YWNrQWxsb2NhdG9yLCBtX2Z1bmN0aW9uQ2FsbHMpOwotICAgIGZ1
bmN0aW9uQ2FsbC5zZXRGdW5jdGlvbkFkZHJlc3MoZWxlbWVudElzSG92ZXJlZCk7CisgICAgZnVu
Y3Rpb25DYWxsLnNldEZ1bmN0aW9uQWRkcmVzcyhvcGVyYXRpb25FbGVtZW50SXNIb3ZlcmVkKTsK
ICAgICBmdW5jdGlvbkNhbGwuc2V0T25lQXJndW1lbnQoZWxlbWVudEFkZHJlc3NSZWdpc3Rlcik7
CiAgICAgZmFpbHVyZUNhc2VzLmFwcGVuZChmdW5jdGlvbkNhbGwuY2FsbEFuZEJyYW5jaE9uQm9v
bGVhblJldHVyblZhbHVlKEFzc2VtYmxlcjo6WmVybykpOwogfQpAQCAtMzI1OCw3ICszNTA4LDcg
QEAgdm9pZCBTZWxlY3RvckNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlRWxlbWVudElzSW5MYW5ndWFn
ZShBc3NlbWJsZXI6Okp1bXBMaXN0JiBmYWkKIAogICAgIEFzc2VtYmxlcjo6UmVnaXN0ZXJJRCBl
bGVtZW50QWRkcmVzcyA9IGVsZW1lbnRBZGRyZXNzUmVnaXN0ZXI7CiAgICAgRnVuY3Rpb25DYWxs
IGZ1bmN0aW9uQ2FsbChtX2Fzc2VtYmxlciwgbV9yZWdpc3RlckFsbG9jYXRvciwgbV9zdGFja0Fs
bG9jYXRvciwgbV9mdW5jdGlvbkNhbGxzKTsKLSAgICBmdW5jdGlvbkNhbGwuc2V0RnVuY3Rpb25B
ZGRyZXNzKG1hdGNoZXNMYW5nUHNldWRvQ2xhc3MpOworICAgIGZ1bmN0aW9uQ2FsbC5zZXRGdW5j
dGlvbkFkZHJlc3Mob3BlcmF0aW9uTWF0Y2hlc0xhbmdQc2V1ZG9DbGFzcyk7CiAgICAgZnVuY3Rp
b25DYWxsLnNldFR3b0FyZ3VtZW50cyhlbGVtZW50QWRkcmVzcywgbGFuZ1JhbmdlUmVnaXN0ZXIp
OwogICAgIGZhaWx1cmVDYXNlcy5hcHBlbmQoZnVuY3Rpb25DYWxsLmNhbGxBbmRCcmFuY2hPbkJv
b2xlYW5SZXR1cm5WYWx1ZShBc3NlbWJsZXI6Olplcm8pKTsKIH0KQEAgLTMzODksNyArMzYzOSw3
IEBAIHZvaWQgU2VsZWN0b3JDb2RlR2VuZXJhdG9yOjpnZW5lcmF0ZUVsZW1lbnRJc09ubHlDaGls
ZChBc3NlbWJsZXI6Okp1bXBMaXN0JiBmYWlsCiAgICAgc3VjY2Vzc0Nhc2UubGluaygmbV9hc3Nl
bWJsZXIpOwogfQogCi1zdGF0aWMgYm9vbCBtYWtlQ29udGV4dFN0eWxlVW5pcXVlSWZOZWNlc3Nh
cnlBbmRUZXN0SXNQbGFjZWhvbGRlclNob3duKGNvbnN0IEVsZW1lbnQqIGVsZW1lbnQsIFNlbGVj
dG9yQ2hlY2tlcjo6Q2hlY2tpbmdDb250ZXh0KiBjaGVja2luZ0NvbnRleHQpCitKU0NfREVGSU5F
X0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTWFrZUNvbnRleHRTdHlsZVVuaXF1ZUlmTmVjZXNzYXJ5
QW5kVGVzdElzUGxhY2Vob2xkZXJTaG93biwgYm9vbCwgKGNvbnN0IEVsZW1lbnQqIGVsZW1lbnQs
IFNlbGVjdG9yQ2hlY2tlcjo6Q2hlY2tpbmdDb250ZXh0KiBjaGVja2luZ0NvbnRleHQpKQogewog
ICAgIGlmIChpczxIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudD4oKmVsZW1lbnQpICYmIGVsZW1l
bnQtPmlzVGV4dEZpZWxkKCkpIHsKICAgICAgICAgaWYgKGNoZWNraW5nQ29udGV4dC0+cmVzb2x2
aW5nTW9kZSA9PSBTZWxlY3RvckNoZWNrZXI6Ok1vZGU6OlJlc29sdmluZ1N0eWxlKQpAQCAtMzM5
OSwxNiArMzY0OSwzMSBAQCBzdGF0aWMgYm9vbCBtYWtlQ29udGV4dFN0eWxlVW5pcXVlSWZOZWNl
c3NhcnlBbmRUZXN0SXNQbGFjZWhvbGRlclNob3duKGNvbnN0IEVsZQogICAgIHJldHVybiBmYWxz
ZTsKIH0KIAotc3RhdGljIGJvb2wgaXNQbGFjZWhvbGRlclNob3duKGNvbnN0IEVsZW1lbnQqIGVs
ZW1lbnQpCitKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uSXNQbGFjZWhvbGRlclNo
b3duLCBib29sLCAoY29uc3QgRWxlbWVudCogZWxlbWVudCkpCiB7CiAgICAgcmV0dXJuIGlzPEhU
TUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50PigqZWxlbWVudCkgJiYgZG93bmNhc3Q8SFRNTFRleHRG
b3JtQ29udHJvbEVsZW1lbnQ+KCplbGVtZW50KS5pc1BsYWNlaG9sZGVyVmlzaWJsZSgpOwogfQog
CitKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uU3luY2hyb25pemVTdHlsZUF0dHJp
YnV0ZUludGVybmFsLCB2b2lkLCAoU3R5bGVkRWxlbWVudCogc3R5bGVkRWxlbWVudCkpCit7Cisg
ICAgc3R5bGVkRWxlbWVudC0+c3luY2hyb25pemVTdHlsZUF0dHJpYnV0ZUludGVybmFsKCk7Cit9
CisKK0pTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25TeW5jaHJvbml6ZUFsbEFuaW1h
dGVkU1ZHQXR0cmlidXRlLCB2b2lkLCAoU1ZHRWxlbWVudCYgZWxlbWVudCkpCit7CisgICAgZWxl
bWVudC5zeW5jaHJvbml6ZUFsbEF0dHJpYnV0ZXMoKTsKK30KKworSlNDX0RFRklORV9KSVRfT1BF
UkFUSU9OKG9wZXJhdGlvbkVxdWFsSWdub3JpbmdBU0NJSUNhc2VOb25OdWxsLCBib29sLCAoY29u
c3QgU3RyaW5nSW1wbCogYSwgY29uc3QgU3RyaW5nSW1wbCogYikpCit7CisgICAgcmV0dXJuIFdU
Rjo6ZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZU5vbk51bGwoYSwgYik7Cit9CisKIHZvaWQgU2VsZWN0
b3JDb2RlR2VuZXJhdG9yOjpnZW5lcmF0ZUVsZW1lbnRIYXNQbGFjZWhvbGRlclNob3duKEFzc2Vt
Ymxlcjo6SnVtcExpc3QmIGZhaWx1cmVDYXNlcykKIHsKICAgICBpZiAobV9zZWxlY3RvckNvbnRl
eHQgPT0gU2VsZWN0b3JDb250ZXh0OjpRdWVyeVNlbGVjdG9yKSB7CiAgICAgICAgIEZ1bmN0aW9u
Q2FsbCBmdW5jdGlvbkNhbGwobV9hc3NlbWJsZXIsIG1fcmVnaXN0ZXJBbGxvY2F0b3IsIG1fc3Rh
Y2tBbGxvY2F0b3IsIG1fZnVuY3Rpb25DYWxscyk7Ci0gICAgICAgIGZ1bmN0aW9uQ2FsbC5zZXRG
dW5jdGlvbkFkZHJlc3MoaXNQbGFjZWhvbGRlclNob3duKTsKKyAgICAgICAgZnVuY3Rpb25DYWxs
LnNldEZ1bmN0aW9uQWRkcmVzcyhvcGVyYXRpb25Jc1BsYWNlaG9sZGVyU2hvd24pOwogICAgICAg
ICBmdW5jdGlvbkNhbGwuc2V0T25lQXJndW1lbnQoZWxlbWVudEFkZHJlc3NSZWdpc3Rlcik7CiAg
ICAgICAgIGZhaWx1cmVDYXNlcy5hcHBlbmQoZnVuY3Rpb25DYWxsLmNhbGxBbmRCcmFuY2hPbkJv
b2xlYW5SZXR1cm5WYWx1ZShBc3NlbWJsZXI6Olplcm8pKTsKICAgICAgICAgcmV0dXJuOwpAQCAt
MzQxOSw3ICszNjg0LDcgQEAgdm9pZCBTZWxlY3RvckNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlRWxl
bWVudEhhc1BsYWNlaG9sZGVyU2hvd24oQXNzZW1ibGVyOjpKdW1wTGkKICAgICBtX3JlZ2lzdGVy
QWxsb2NhdG9yLmRlYWxsb2NhdGVSZWdpc3RlcihjaGVja2luZ0NvbnRleHQpOwogCiAgICAgRnVu
Y3Rpb25DYWxsIGZ1bmN0aW9uQ2FsbChtX2Fzc2VtYmxlciwgbV9yZWdpc3RlckFsbG9jYXRvciwg
bV9zdGFja0FsbG9jYXRvciwgbV9mdW5jdGlvbkNhbGxzKTsKLSAgICBmdW5jdGlvbkNhbGwuc2V0
RnVuY3Rpb25BZGRyZXNzKG1ha2VDb250ZXh0U3R5bGVVbmlxdWVJZk5lY2Vzc2FyeUFuZFRlc3RJ
c1BsYWNlaG9sZGVyU2hvd24pOworICAgIGZ1bmN0aW9uQ2FsbC5zZXRGdW5jdGlvbkFkZHJlc3Mo
b3BlcmF0aW9uTWFrZUNvbnRleHRTdHlsZVVuaXF1ZUlmTmVjZXNzYXJ5QW5kVGVzdElzUGxhY2Vo
b2xkZXJTaG93bik7CiAgICAgZnVuY3Rpb25DYWxsLnNldFR3b0FyZ3VtZW50cyhlbGVtZW50QWRk
cmVzc1JlZ2lzdGVyLCBjaGVja2luZ0NvbnRleHQpOwogICAgIGZhaWx1cmVDYXNlcy5hcHBlbmQo
ZnVuY3Rpb25DYWxsLmNhbGxBbmRCcmFuY2hPbkJvb2xlYW5SZXR1cm5WYWx1ZShBc3NlbWJsZXI6
Olplcm8pKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TdHlsZWRFbGVtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TdHlsZWRFbGVtZW50LmNwcAppbmRleCA0MzMwY2Uw
ZDEyOTQwODY3ZWEyYzVhYzViNTVhNDVmN2YyNTY4NzY0Li40NGRkNjYzZDUxOTE5YWY4NDM0Mjhi
ODNhYTk1NzkxYTljNWFkNmI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU3R5bGVk
RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1N0eWxlZEVsZW1lbnQuY3BwCkBA
IC01NiwxMyArNTYsMTMgQEAgQ09NUElMRV9BU1NFUlQoc2l6ZW9mKFN0eWxlZEVsZW1lbnQpID09
IHNpemVvZihFbGVtZW50KSwgc3R5bGVkZWxlbWVudF9zaG91bGRfcmUKIAogdXNpbmcgbmFtZXNw
YWNlIEhUTUxOYW1lczsKIAotdm9pZCBTdHlsZWRFbGVtZW50OjpzeW5jaHJvbml6ZVN0eWxlQXR0
cmlidXRlSW50ZXJuYWwoU3R5bGVkRWxlbWVudCogc3R5bGVkRWxlbWVudCkKK3ZvaWQgU3R5bGVk
RWxlbWVudDo6c3luY2hyb25pemVTdHlsZUF0dHJpYnV0ZUludGVybmFsSW1wbCgpCiB7Ci0gICAg
QVNTRVJUKHN0eWxlZEVsZW1lbnQtPmVsZW1lbnREYXRhKCkpOwotICAgIEFTU0VSVChzdHlsZWRF
bGVtZW50LT5lbGVtZW50RGF0YSgpLT5zdHlsZUF0dHJpYnV0ZUlzRGlydHkoKSk7Ci0gICAgc3R5
bGVkRWxlbWVudC0+ZWxlbWVudERhdGEoKS0+c2V0U3R5bGVBdHRyaWJ1dGVJc0RpcnR5KGZhbHNl
KTsKLSAgICBpZiAoY29uc3QgU3R5bGVQcm9wZXJ0aWVzKiBpbmxpbmVTdHlsZSA9IHN0eWxlZEVs
ZW1lbnQtPmlubGluZVN0eWxlKCkpCi0gICAgICAgIHN0eWxlZEVsZW1lbnQtPnNldFN5bmNocm9u
aXplZExhenlBdHRyaWJ1dGUoc3R5bGVBdHRyLCBpbmxpbmVTdHlsZS0+YXNUZXh0KCkpOworICAg
IEFTU0VSVChlbGVtZW50RGF0YSgpKTsKKyAgICBBU1NFUlQoZWxlbWVudERhdGEoKS0+c3R5bGVB
dHRyaWJ1dGVJc0RpcnR5KCkpOworICAgIGVsZW1lbnREYXRhKCktPnNldFN0eWxlQXR0cmlidXRl
SXNEaXJ0eShmYWxzZSk7CisgICAgaWYgKGNvbnN0IFN0eWxlUHJvcGVydGllcyogaW5saW5lU3R5
bGUgPSB0aGlzLT5pbmxpbmVTdHlsZSgpKQorICAgICAgICBzZXRTeW5jaHJvbml6ZWRMYXp5QXR0
cmlidXRlKHN0eWxlQXR0ciwgaW5saW5lU3R5bGUtPmFzVGV4dCgpKTsKIH0KIAogU3R5bGVkRWxl
bWVudDo6flN0eWxlZEVsZW1lbnQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1N0
eWxlZEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TdHlsZWRFbGVtZW50LmgKaW5kZXgg
ZTZiMGRmMjAyMWZjMTBmZmZhN2JhYmQxZmQyNzM0ODc0YTFhYjc2Ni4uOTE0MDM2ODRmZDZkY2Nm
N2Q0ZGUwNThjZWY4NTE1NzUxNmFkMTAwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L1N0eWxlZEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU3R5bGVkRWxlbWVudC5o
CkBAIC01NCw4ICs1NCw3IEBAIGNsYXNzIFN0eWxlZEVsZW1lbnQgOiBwdWJsaWMgRWxlbWVudCB7
CiAgICAgYm9vbCByZW1vdmVJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5SUQpOwogICAg
IHZvaWQgcmVtb3ZlQWxsSW5saW5lU3R5bGVQcm9wZXJ0aWVzKCk7CiAKLSAgICBzdGF0aWMgdm9p
ZCBzeW5jaHJvbml6ZVN0eWxlQXR0cmlidXRlSW50ZXJuYWwoU3R5bGVkRWxlbWVudCopOwotICAg
IHZvaWQgc3luY2hyb25pemVTdHlsZUF0dHJpYnV0ZUludGVybmFsKCkgY29uc3QgeyBTdHlsZWRF
bGVtZW50OjpzeW5jaHJvbml6ZVN0eWxlQXR0cmlidXRlSW50ZXJuYWwoY29uc3RfY2FzdDxTdHls
ZWRFbGVtZW50Kj4odGhpcykpOyB9CisgICAgdm9pZCBzeW5jaHJvbml6ZVN0eWxlQXR0cmlidXRl
SW50ZXJuYWwoKSBjb25zdCB7IGNvbnN0X2Nhc3Q8U3R5bGVkRWxlbWVudCo+KHRoaXMpLT5zeW5j
aHJvbml6ZVN0eWxlQXR0cmlidXRlSW50ZXJuYWxJbXBsKCk7IH0KICAgICAKICAgICBXRUJDT1JF
X0VYUE9SVCBDU1NTdHlsZURlY2xhcmF0aW9uJiBjc3NvbVN0eWxlKCk7CiAjaWYgRU5BQkxFKENT
U19UWVBFRF9PTSkKQEAgLTgzLDYgKzgyLDcgQEAgY2xhc3MgU3R5bGVkRWxlbWVudCA6IHB1Ymxp
YyBFbGVtZW50IHsKIAogcHJpdmF0ZToKICAgICB2b2lkIHN0eWxlQXR0cmlidXRlQ2hhbmdlZChj
b25zdCBBdG9tU3RyaW5nJiBuZXdTdHlsZVN0cmluZywgQXR0cmlidXRlTW9kaWZpY2F0aW9uUmVh
c29uKTsKKyAgICB2b2lkIHN5bmNocm9uaXplU3R5bGVBdHRyaWJ1dGVJbnRlcm5hbEltcGwoKTsK
IAogICAgIHZvaWQgaW5saW5lU3R5bGVDaGFuZ2VkKCk7CiAgICAgUHJvcGVydHlTZXRDU1NTdHls
ZURlY2xhcmF0aW9uKiBpbmxpbmVTdHlsZUNTU09NV3JhcHBlcigpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvc3R5bGUvRWxlbWVudFJ1bGVDb2xsZWN0b3IuY3BwIGIvU291cmNlL1dlYkNv
cmUvc3R5bGUvRWxlbWVudFJ1bGVDb2xsZWN0b3IuY3BwCmluZGV4IDIyMjIyZjg0ZmVmNmVlMTU1
ZDk3OTk1MDY4YjUyODNmOTI5MzQ2ZTAuLmNkM2VhMDc0ZDU3NGFlNWIxNGY1ODgwODI0NzdmMjE2
OTY0NmExYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL0VsZW1lbnRSdWxlQ29s
bGVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9FbGVtZW50UnVsZUNvbGxlY3Rv
ci5jcHAKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlICJIVE1MRWxlbWVudC5oIgogI2luY2x1
ZGUgIkhUTUxTbG90RWxlbWVudC5oIgogI2luY2x1ZGUgIlNWR0VsZW1lbnQuaCIKKyNpbmNsdWRl
ICJTZWxlY3RvckNoZWNrZXJUZXN0RnVuY3Rpb25zLmgiCiAjaW5jbHVkZSAiU2VsZWN0b3JDb21w
aWxlci5oIgogI2luY2x1ZGUgIlNlbGVjdG9yRmlsdGVyLmgiCiAjaW5jbHVkZSAiU2hhZG93Um9v
dC5oIgpAQCAtMTU0LDcgKzE1NSw3IEBAIHZvaWQgRWxlbWVudFJ1bGVDb2xsZWN0b3I6OmNvbGxl
Y3RNYXRjaGluZ1J1bGVzKGNvbnN0IE1hdGNoUmVxdWVzdCYgbWF0Y2hSZXF1ZXN0CiAKICAgICBp
ZiAoZWxlbWVudCgpLmlzTGluaygpKQogICAgICAgICBjb2xsZWN0TWF0Y2hpbmdSdWxlc0Zvckxp
c3QobWF0Y2hSZXF1ZXN0LnJ1bGVTZXQtPmxpbmtQc2V1ZG9DbGFzc1J1bGVzKCksIG1hdGNoUmVx
dWVzdCk7Ci0gICAgaWYgKFNlbGVjdG9yQ2hlY2tlcjo6bWF0Y2hlc0ZvY3VzUHNldWRvQ2xhc3Mo
ZWxlbWVudCgpKSkKKyAgICBpZiAobWF0Y2hlc0ZvY3VzUHNldWRvQ2xhc3MoZWxlbWVudCgpKSkK
ICAgICAgICAgY29sbGVjdE1hdGNoaW5nUnVsZXNGb3JMaXN0KG1hdGNoUmVxdWVzdC5ydWxlU2V0
LT5mb2N1c1BzZXVkb0NsYXNzUnVsZXMoKSwgbWF0Y2hSZXF1ZXN0KTsKICAgICBjb2xsZWN0TWF0
Y2hpbmdSdWxlc0Zvckxpc3QobWF0Y2hSZXF1ZXN0LnJ1bGVTZXQtPnRhZ1J1bGVzKGVsZW1lbnQo
KS5sb2NhbE5hbWUoKSwgZWxlbWVudCgpLmlzSFRNTEVsZW1lbnQoKSAmJiBlbGVtZW50KCkuZG9j
dW1lbnQoKS5pc0hUTUxEb2N1bWVudCgpKSwgbWF0Y2hSZXF1ZXN0KTsKICAgICBjb2xsZWN0TWF0
Y2hpbmdSdWxlc0Zvckxpc3QobWF0Y2hSZXF1ZXN0LnJ1bGVTZXQtPnVuaXZlcnNhbFJ1bGVzKCks
IG1hdGNoUmVxdWVzdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5jcHAKaW5kZXggNzQ1ZDM0Y2Y1
OTAzMTcyYzA1ZDU0NDA4ZDg3ZjQ2MDM2Mzc5ZmE0Yi4uNTc3NWU5ODE0MDIxYjM2NWUwZjAzYzZl
Zjc5NzM2NmMyYTc3OGQyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmNwcApAQCAtNTIwLDEx
ICs1MjAsNiBAQCB2b2lkIFNWR0VsZW1lbnQ6OnN5bmNocm9uaXplQWxsQXR0cmlidXRlcygpCiAg
ICAgICAgIHNldFN5bmNocm9uaXplZExhenlBdHRyaWJ1dGUoZW50cnkua2V5LCBlbnRyeS52YWx1
ZSk7CiB9CiAKLXZvaWQgU1ZHRWxlbWVudDo6c3luY2hyb25pemVBbGxBbmltYXRlZFNWR0F0dHJp
YnV0ZShTVkdFbGVtZW50JiBzdmdFbGVtZW50KQotewotICAgIHN2Z0VsZW1lbnQuc3luY2hyb25p
emVBbGxBdHRyaWJ1dGVzKCk7Ci19Ci0KIHZvaWQgU1ZHRWxlbWVudDo6Y29tbWl0UHJvcGVydHlD
aGFuZ2UoU1ZHUHJvcGVydHkqIHByb3BlcnR5KQogewogICAgIC8vIFdlIHdhbnQgdG8gZGlydHkg
dGhlIHRvcC1sZXZlbCBwcm9wZXJ0eSB3aGVuIGEgZGVzY2VuZGFudCBjaGFuZ2VzLiBGb3IgZXhh
bXBsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmgKaW5kZXggMjI5OTBlZDkzYjAxM2U4N2YyMDA2NzUw
OGJhZjM1YmJkY2Q3N2Q3Yy4uYWU2YzA3NjVmNDNkMjIzMGQ0NTg5YmMwNmUwOGMwOTg0Zjk4Nzcz
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5oCkBAIC0xMzEsNyArMTMxLDYgQEAgY2xhc3MgU1ZH
RWxlbWVudCA6IHB1YmxpYyBTdHlsZWRFbGVtZW50LCBwdWJsaWMgU1ZHUHJvcGVydHlPd25lciB7
CiAKICAgICB2b2lkIHN5bmNocm9uaXplQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsK
ICAgICB2b2lkIHN5bmNocm9uaXplQWxsQXR0cmlidXRlcygpOwotICAgIHN0YXRpYyB2b2lkIHN5
bmNocm9uaXplQWxsQW5pbWF0ZWRTVkdBdHRyaWJ1dGUoU1ZHRWxlbWVudCYpOwogCiAgICAgdm9p
ZCBjb21taXRQcm9wZXJ0eUNoYW5nZShTVkdQcm9wZXJ0eSopIG92ZXJyaWRlOwogICAgIHZvaWQg
Y29tbWl0UHJvcGVydHlDaGFuZ2UoU1ZHQW5pbWF0ZWRQcm9wZXJ0eSYpOwo=
</data>
<flag name="review"
          id="425933"
          type_id="1"
          status="+"
          setter="mark.lam"
    />
          </attachment>
      

    </bug>

</bugzilla>