<?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>212859</bug_id>
          
          <creation_ts>2020-06-05 18:18:26 -0700</creation_ts>
          <short_desc>Web Inspector: unify the naming scheme for agents used by instrumentation</short_desc>
          <delta_ts>2020-06-06 05:48:16 -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>Web Inspector</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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="Devin Rousso">hi</reporter>
          <assigned_to name="Devin Rousso">hi</assigned_to>
          <cc>ews-watchlist</cc>
    
    <cc>hi</cc>
    
    <cc>inspector-bugzilla-changes</cc>
    
    <cc>joepeck</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>timothy</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1659874</commentid>
    <comment_count>0</comment_count>
    <who name="Devin Rousso">hi</who>
    <bug_when>2020-06-05 18:18:26 -0700</bug_when>
    <thetext>Here&apos;s what I think we should do (and have been doing a little bit already):
 - &quot;persistent&quot; agents are set when Web Inspector is connected
 - &quot;enabled&quot; agents are set when that agent is `enable`d, such as if the corresponding tab is visible
 - &quot;tracking&quot; agents are set when that agent is part of a timeline recording.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1659878</commentid>
    <comment_count>1</comment_count>
      <attachid>401221</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2020-06-05 18:37:00 -0700</bug_when>
    <thetext>Created attachment 401221
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1659907</commentid>
    <comment_count>2</comment_count>
      <attachid>401232</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2020-06-05 21:24:45 -0700</bug_when>
    <thetext>Created attachment 401232
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1659941</commentid>
    <comment_count>3</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-06-06 05:47:59 -0700</bug_when>
    <thetext>Committed r262673: &lt;https://trac.webkit.org/changeset/262673&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 401232.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1659942</commentid>
    <comment_count>4</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-06-06 05:48:16 -0700</bug_when>
    <thetext>&lt;rdar://problem/64067246&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>401221</attachid>
            <date>2020-06-05 18:37:00 -0700</date>
            <delta_ts>2020-06-05 21:24:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-212859-20200605193659.patch</filename>
            <type>text/plain</type>
            <size>155353</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDAyZjNlNjUyOTQxM2JhMDY0YmQ5NmJlM2RlYjJi
NjY0NGRlM2RiYzEuLjExMTQ1YWQ3Y2MyMzE4MTQ0M2IyNWRiNmVjYzY4MzdlZWIwODUyYTEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDIwLTA2LTA1ICBEZXZp
biBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiB1
bmlmeSB0aGUgbmFtaW5nIHNjaGVtZSBmb3IgYWdlbnRzIHVzZWQgYnkgaW5zdHJ1bWVudGF0aW9u
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTI4NTkK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbnNwZWN0
b3IgYWdlbnRzIGZhbGwgaW50byBvbmUgb2YgdGhyZWUgY2F0ZWdvcmllczoKKyAgICAgICAgIC0g
InBlcnNpc3RlbnQiIHdoZW4gV2ViIEluc3BlY3RvciBpcyBjb25uZWN0ZWQKKyAgICAgICAgIC0g
ImVuYWJsZWQiIHdoZW4gdGhhdCBhZ2VudCBpcyBgZW5hYmxlYGQsIHN1Y2ggYXMgaWYgdGhlIGNv
cnJlc3BvbmRpbmcgdGFiIGlzIHZpc2libGUKKyAgICAgICAgIC0gInRyYWNraW5nIiB3aGVuIHRo
YXQgYWdlbnQgaXMgcGFydCBvZiBhIHRpbWVsaW5lIHJlY29yZGluZy4KKworICAgICAgICBUaGUg
b25seSBleGNlcHRpb24gdG8gdGhpcyBpcyB0aGUgQ29uc29sZSBhZ2VudCwgYXMgdGhhdCBleGlz
dHMgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIFdlYgorICAgICAgICBJbnNwZWN0b3IgaXMgY29ubmVj
dGVkIGFzIGl0IG5lZWRzIHRvIHByZXNlcnZlIG1lc3NhZ2VzIGxvZ2dlZCBiZWZvcmUgV2ViIElu
c3BlY3RvciBjb25uZWN0cy4KKworICAgICAgICBBbHNvIHJlbW92ZSB0aGUgIkluc3BlY3RvciIg
cHJlZml4IGZyb20gZ2V0dGVyL3NldHRlciBtZXRob2RzIGFzIGl0IGFkZHMgY29uZnVzaW9uIGlm
IHRoYXQKKyAgICAgICAgYWdlbnQgYWxzbyBoYXMgc3ViY2xhc3NlcyAoZS5nLiBgSW5zcGVjdG9y
UnVudGltZUFnZW50YCBhbmQgYFBhZ2VSdW50aW1lQWdlbnRgKS4KKworICAgICAgICAqIGluc3Bl
Y3Rvci9KU0dsb2JhbE9iamVjdENvbnNvbGVDbGllbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3Iv
SlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKiBpbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3RvckNvbnNvbGVBZ2VudC5oOgorCiAyMDIwLTA2LTA1ICBTYWFtIEJh
cmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgogCiAgICAgICAgIEF1ZGl0IHNhZmUgdG8gZXhlY3V0
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nCmluZGV4IGEwMjlmOWZjZDA5NDg5ZWE2MDhiOTQ4ODQ5ODliMTk1NmJiNDkzMGMu
LmFjZmY0ZDQxZDYzMGVjNTlhOTYyYjhiZTgyZjUwZTg3MTk0MmUxNzggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAg
LTEsMyArMSw1NCBAQAorMjAyMC0wNi0wNSAgRGV2aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBsZS5j
b20+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogdW5pZnkgdGhlIG5hbWluZyBzY2hlbWUgZm9y
IGFnZW50cyB1c2VkIGJ5IGluc3RydW1lbnRhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEyODU5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgSW5zcGVjdG9yIGFnZW50cyBmYWxsIGludG8gb25lIG9m
IHRocmVlIGNhdGVnb3JpZXM6CisgICAgICAgICAtICJwZXJzaXN0ZW50IiB3aGVuIFdlYiBJbnNw
ZWN0b3IgaXMgY29ubmVjdGVkCisgICAgICAgICAtICJlbmFibGVkIiB3aGVuIHRoYXQgYWdlbnQg
aXMgYGVuYWJsZWBkLCBzdWNoIGFzIGlmIHRoZSBjb3JyZXNwb25kaW5nIHRhYiBpcyB2aXNpYmxl
CisgICAgICAgICAtICJ0cmFja2luZyIgd2hlbiB0aGF0IGFnZW50IGlzIHBhcnQgb2YgYSB0aW1l
bGluZSByZWNvcmRpbmcuCisKKyAgICAgICAgVGhlIG9ubHkgZXhjZXB0aW9uIHRvIHRoaXMgaXMg
dGhlIENvbnNvbGUgYWdlbnQsIGFzIHRoYXQgZXhpc3RzIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBX
ZWIKKyAgICAgICAgSW5zcGVjdG9yIGlzIGNvbm5lY3RlZCBhcyBpdCBuZWVkcyB0byBwcmVzZXJ2
ZSBtZXNzYWdlcyBsb2dnZWQgYmVmb3JlIFdlYiBJbnNwZWN0b3IgY29ubmVjdHMuCisKKyAgICAg
ICAgQWxzbyByZW1vdmUgdGhlICJJbnNwZWN0b3IiIHByZWZpeCBmcm9tIGdldHRlci9zZXR0ZXIg
bWV0aG9kcyBhcyBpdCBhZGRzIGNvbmZ1c2lvbiBpZiB0aGF0CisgICAgICAgIGFnZW50IGFsc28g
aGFzIHN1YmNsYXNzZXMgKGUuZy4gYEluc3BlY3RvclJ1bnRpbWVBZ2VudGAgYW5kIGBQYWdlUnVu
dGltZUFnZW50YCkuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zdHJ1bWVudGluZ0FnZW50cy5o
OgorICAgICAgICAqIGluc3BlY3Rvci9JbnN0cnVtZW50aW5nQWdlbnRzLmNwcDoKKyAgICAgICAg
VXNlIG1hY3JvcyB0byBzaW1wbGlmeSB0aGUgcHJvY2VzcyBvZiBhZGRpbmcgYW4gYWdlbnQuCisK
KyAgICAgICAgKiBpbnNwZWN0b3IvQ29tbWFuZExpbmVBUElIb3N0LmNwcDoKKyAgICAgICAgKiBp
bnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNw
ZWN0b3JDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uLmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckFuaW1h
dGlvbkFnZW50LmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckFwcGxp
Y2F0aW9uQ2FjaGVBZ2VudC5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0
b3JDUFVQcm9maWxlckFnZW50LmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3RvckNTU0FnZW50LmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNh
bnZhc0FnZW50LmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTUFn
ZW50LmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTURlYnVnZ2Vy
QWdlbnQuY3BwOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NU3RvcmFn
ZUFnZW50LmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRhdGFiYXNl
QWdlbnQuY3BwOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTGF5ZXJUcmVl
QWdlbnQuY3BwOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTWVtb3J5QWdl
bnQuY3BwOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50
LmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHA6
CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmNwcDoK
KyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvcldvcmtlckFnZW50LmNwcDoKKyAg
ICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL1dlYkRlYnVnZ2VyQWdlbnQuY3BwOgorICAgICAgICAq
IGluc3BlY3Rvci9hZ2VudHMvV2ViSGVhcEFnZW50LmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3Iv
YWdlbnRzL3BhZ2UvUGFnZUNvbnNvbGVBZ2VudC5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL2Fn
ZW50cy9wYWdlL1BhZ2VET01EZWJ1Z2dlckFnZW50LmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3Iv
YWdlbnRzL3BhZ2UvUGFnZURlYnVnZ2VyQWdlbnQuY3BwOgorICAgICAgICAqIGluc3BlY3Rvci9h
Z2VudHMvcGFnZS9QYWdlSGVhcEFnZW50LmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRz
L3BhZ2UvUGFnZU5ldHdvcmtBZ2VudC5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9w
YWdlL1BhZ2VSdW50aW1lQWdlbnQuY3BwOgorICAgICAgICBTaW1wbGUgbmFtaW5nIGNoYW5nZXMg
ZWxpZGVkIHRvIGF2b2lkIGEgbG9uZyBDaGFuZ2VMb2cuCisKIDIwMjAtMDYtMDUgIEphc29uIExh
d3JlbmNlICA8bGF3cmVuY2UuakBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcmV2
ZXJ0aW5nIHIyNjI1MjQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDFiZjJmYTZiMWYzODQzNDM1ZWI0MjA1MDFkMTVk
ZDk3MmFmNTg1YzQuLmRlMGMwNDAzYzMwZGRkZmI0NWJiYjZkMzBmYWNkZWY2OTUwYmM1YzggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjYgQEAKKzIwMjAtMDYtMDUgIERldmluIFJvdXNzbyAgPGRyb3Vz
c29AYXBwbGUuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IHVuaWZ5IHRoZSBuYW1pbmcg
c2NoZW1lIGZvciBhZ2VudHMgdXNlZCBieSBpbnN0cnVtZW50YXRpb24KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMjg1OQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEluc3BlY3RvciBhZ2VudHMgZmFsbCBp
bnRvIG9uZSBvZiB0aHJlZSBjYXRlZ29yaWVzOgorICAgICAgICAgLSAicGVyc2lzdGVudCIgd2hl
biBXZWIgSW5zcGVjdG9yIGlzIGNvbm5lY3RlZAorICAgICAgICAgLSAiZW5hYmxlZCIgd2hlbiB0
aGF0IGFnZW50IGlzIGBlbmFibGVgZCwgc3VjaCBhcyBpZiB0aGUgY29ycmVzcG9uZGluZyB0YWIg
aXMgdmlzaWJsZQorICAgICAgICAgLSAidHJhY2tpbmciIHdoZW4gdGhhdCBhZ2VudCBpcyBwYXJ0
IG9mIGEgdGltZWxpbmUgcmVjb3JkaW5nLgorCisgICAgICAgIFRoZSBvbmx5IGV4Y2VwdGlvbiB0
byB0aGlzIGlzIHRoZSBDb25zb2xlIGFnZW50LCBhcyB0aGF0IGV4aXN0cyByZWdhcmRsZXNzIG9m
IHdoZXRoZXIgV2ViCisgICAgICAgIEluc3BlY3RvciBpcyBjb25uZWN0ZWQgYXMgaXQgbmVlZHMg
dG8gcHJlc2VydmUgbWVzc2FnZXMgbG9nZ2VkIGJlZm9yZSBXZWIgSW5zcGVjdG9yIGNvbm5lY3Rz
LgorCisgICAgICAgIEFsc28gcmVtb3ZlIHRoZSAiSW5zcGVjdG9yIiBwcmVmaXggZnJvbSBnZXR0
ZXIvc2V0dGVyIG1ldGhvZHMgYXMgaXQgYWRkcyBjb25mdXNpb24gaWYgdGhhdAorICAgICAgICBh
Z2VudCBhbHNvIGhhcyBzdWJjbGFzc2VzIChlLmcuIGBJbnNwZWN0b3JSdW50aW1lQWdlbnRgIGFu
ZCBgUGFnZVJ1bnRpbWVBZ2VudGApLgorCisgICAgICAgICogVUlQcm9jZXNzL0luc3BlY3Rvci9B
Z2VudHMvSW5zcGVjdG9yQnJvd3NlckFnZW50LmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvSW5z
cGVjdG9yL1dlYkluc3BlY3RvclByb3h5LmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvSW5zcGVj
dG9yL1dlYlBhZ2VJbnNwZWN0b3JDb250cm9sbGVyLmg6CisgICAgICAgIFNpbXBsZSBuYW1pbmcg
Y2hhbmdlcyBlbGlkZWQgdG8gYXZvaWQgYSBsb25nIENoYW5nZUxvZy4KKwogMjAyMC0wNi0wNSAg
QWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIEZp
eCBQREYgb3BlbmluZyBhZnRlciByMjYyNTkyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL0pTR2xvYmFsT2JqZWN0Q29uc29sZUNsaWVudC5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0dsb2JhbE9iamVjdENvbnNvbGVDbGllbnQuaAppbmRl
eCA0ZGE3NDczYjMwYmIyMzNjMzEwZmM0NjZkMWFiNmEzMzJjZGVmNmNhLi5lMGYxNWM4NTBmZWFk
NmQ5MTU3OTc1NjhmZDA1MDhkMjljNTI5MDkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL0pTR2xvYmFsT2JqZWN0Q29uc29sZUNsaWVudC5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNHbG9iYWxPYmplY3RDb25zb2xlQ2xpZW50LmgK
QEAgLTQ0LDggKzQ0LDggQEAgcHVibGljOgogICAgIHN0YXRpYyBib29sIGxvZ1RvU3lzdGVtQ29u
c29sZSgpOwogICAgIHN0YXRpYyB2b2lkIHNldExvZ1RvU3lzdGVtQ29uc29sZShib29sKTsKIAot
ICAgIHZvaWQgc2V0SW5zcGVjdG9yRGVidWdnZXJBZ2VudChJbnNwZWN0b3JEZWJ1Z2dlckFnZW50
KiBhZ2VudCkgeyBtX2RlYnVnZ2VyQWdlbnQgPSBhZ2VudDsgfQotICAgIHZvaWQgc2V0SW5zcGVj
dG9yU2NyaXB0UHJvZmlsZXJBZ2VudChJbnNwZWN0b3JTY3JpcHRQcm9maWxlckFnZW50KiBhZ2Vu
dCkgeyBtX3NjcmlwdFByb2ZpbGVyQWdlbnQgPSBhZ2VudDsgfQorICAgIHZvaWQgc2V0RGVidWdn
ZXJBZ2VudChJbnNwZWN0b3JEZWJ1Z2dlckFnZW50KiBhZ2VudCkgeyBtX2RlYnVnZ2VyQWdlbnQg
PSBhZ2VudDsgfQorICAgIHZvaWQgc2V0UGVyc2lzdGVudFNjcmlwdFByb2ZpbGVyQWdlbnQoSW5z
cGVjdG9yU2NyaXB0UHJvZmlsZXJBZ2VudCogYWdlbnQpIHsgbV9zY3JpcHRQcm9maWxlckFnZW50
ID0gYWdlbnQ7IH0KIAogcHJpdmF0ZToKICAgICB2b2lkIG1lc3NhZ2VXaXRoVHlwZUFuZExldmVs
KE1lc3NhZ2VUeXBlLCBNZXNzYWdlTGV2ZWwsIEpTQzo6SlNHbG9iYWxPYmplY3QqLCBSZWY8U2Ny
aXB0QXJndW1lbnRzPiYmKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9s
bGVyLmNwcAppbmRleCAzNmNiZjgzZWQ0YjEzZTUzZWY0NGU5YzY1OGJiOTAyODRkYzE4N2JlLi5m
NWZiODA3ZjA0MWM2YzQ1ZThlZmVmODY0ZDM1YzJjNTA5YjFhNGI1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJv
bGxlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0dsb2JhbE9i
amVjdEluc3BlY3RvckNvbnRyb2xsZXIuY3BwCkBAIC0yOTIsNyArMjkyLDcgQEAgSW5zcGVjdG9y
RGVidWdnZXJBZ2VudCYgSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyOjplbnN1cmVE
ZWJ1Z2dlckFnZW50KCkKICAgICAgICAgYXV0byBjb250ZXh0ID0ganNBZ2VudENvbnRleHQoKTsK
ICAgICAgICAgYXV0byBkZWJ1Z2dlckFnZW50ID0gbWFrZVVuaXF1ZTxKU0dsb2JhbE9iamVjdERl
YnVnZ2VyQWdlbnQ+KGNvbnRleHQsIG1fY29uc29sZUFnZW50KTsKICAgICAgICAgbV9kZWJ1Z2dl
ckFnZW50ID0gZGVidWdnZXJBZ2VudC5nZXQoKTsKLSAgICAgICAgbV9jb25zb2xlQ2xpZW50LT5z
ZXRJbnNwZWN0b3JEZWJ1Z2dlckFnZW50KG1fZGVidWdnZXJBZ2VudCk7CisgICAgICAgIG1fY29u
c29sZUNsaWVudC0+c2V0RGVidWdnZXJBZ2VudChtX2RlYnVnZ2VyQWdlbnQpOwogICAgICAgICBt
X2FnZW50cy5hcHBlbmQoV1RGTW92ZShkZWJ1Z2dlckFnZW50KSk7CiAgICAgfQogICAgIHJldHVy
biAqbV9kZWJ1Z2dlckFnZW50OwpAQCAtMzMxLDEyICszMzEsMTIgQEAgdm9pZCBKU0dsb2JhbE9i
amVjdEluc3BlY3RvckNvbnRyb2xsZXI6OmNyZWF0ZUxhenlBZ2VudHMoKQogICAgIGVuc3VyZURl
YnVnZ2VyQWdlbnQoKTsKIAogICAgIGF1dG8gc2NyaXB0UHJvZmlsZXJBZ2VudFB0ciA9IG1ha2VV
bmlxdWU8SW5zcGVjdG9yU2NyaXB0UHJvZmlsZXJBZ2VudD4oY29udGV4dCk7Ci0gICAgbV9jb25z
b2xlQ2xpZW50LT5zZXRJbnNwZWN0b3JTY3JpcHRQcm9maWxlckFnZW50KHNjcmlwdFByb2ZpbGVy
QWdlbnRQdHIuZ2V0KCkpOworICAgIG1fY29uc29sZUNsaWVudC0+c2V0UGVyc2lzdGVudFNjcmlw
dFByb2ZpbGVyQWdlbnQoc2NyaXB0UHJvZmlsZXJBZ2VudFB0ci5nZXQoKSk7CiAgICAgbV9hZ2Vu
dHMuYXBwZW5kKFdURk1vdmUoc2NyaXB0UHJvZmlsZXJBZ2VudFB0cikpOwogCiAgICAgYXV0byBo
ZWFwQWdlbnQgPSBtYWtlVW5pcXVlPEluc3BlY3RvckhlYXBBZ2VudD4oY29udGV4dCk7CiAgICAg
aWYgKG1fY29uc29sZUFnZW50KQotICAgICAgICBtX2NvbnNvbGVBZ2VudC0+c2V0SW5zcGVjdG9y
SGVhcEFnZW50KGhlYXBBZ2VudC5nZXQoKSk7CisgICAgICAgIG1fY29uc29sZUFnZW50LT5zZXRI
ZWFwQWdlbnQoaGVhcEFnZW50LmdldCgpKTsKICAgICBtX2FnZW50cy5hcHBlbmQoV1RGTW92ZSho
ZWFwQWdlbnQpKTsKIAogICAgIG1fYWdlbnRzLmFwcGVuZChtYWtlVW5pcXVlPEpTR2xvYmFsT2Jq
ZWN0QXVkaXRBZ2VudD4oY29udGV4dCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ29uc29sZUFnZW50LmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDb25zb2xlQWdlbnQuaAppbmRl
eCBmOGJhMmYyMjFiYmNlM2VmOTNkOTQ4MzQ1MDA0ZTQ1ODNlNTdjZDZkLi43OGNhZjFhZDA4YWU1
N2IxZTA3ODVjOWFkZDUxNjc1MzZhZmJmMjk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDb25zb2xlQWdlbnQuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDb25zb2xlQWdlbnQu
aApAQCAtNjcsNyArNjcsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBnZXRMb2dnaW5nQ2hhbm5lbHMo
RXJyb3JTdHJpbmcmLCBSZWZQdHI8SlNPTjo6QXJyYXlPZjxQcm90b2NvbDo6Q29uc29sZTo6Q2hh
bm5lbD4+Jikgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRMb2dnaW5nQ2hhbm5lbExldmVsKEVycm9y
U3RyaW5nJiwgY29uc3QgU3RyaW5nJiBjaGFubmVsLCBjb25zdCBTdHJpbmcmIGxldmVsKSBvdmVy
cmlkZTsKIAotICAgIHZvaWQgc2V0SW5zcGVjdG9ySGVhcEFnZW50KEluc3BlY3RvckhlYXBBZ2Vu
dCogYWdlbnQpIHsgbV9oZWFwQWdlbnQgPSBhZ2VudDsgfQorICAgIHZvaWQgc2V0SGVhcEFnZW50
KEluc3BlY3RvckhlYXBBZ2VudCogYWdlbnQpIHsgbV9oZWFwQWdlbnQgPSBhZ2VudDsgfQogCiAg
ICAgYm9vbCBlbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9lbmFibGVkOyB9CiAgICAgYm9vbCBk
ZXZlbG9wZXJFeHRyYXNFbmFibGVkKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvQ29tbWFuZExpbmVBUElIb3N0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9Db21tYW5kTGluZUFQSUhvc3QuY3BwCmluZGV4IDRmMzg4NjA2MWVkMDE3N2Y0YzM4MTI0
OGMxZDIzMzY2ZjI4ZDYzMzAuLmRjZTM1OWU3NjhlZjlhMTNhNmM2ZGUxNmQxZjhkM2M4YmJmZjdh
OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db21tYW5kTGluZUFQSUhv
c3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db21tYW5kTGluZUFQSUhvc3Qu
Y3BwCkBAIC03OCw3ICs3OCw3IEBAIHZvaWQgQ29tbWFuZExpbmVBUElIb3N0OjppbnNwZWN0KEpT
Qzo6SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6CiAgICAgaWYgKCFt
X2luc3RydW1lbnRpbmdBZ2VudHMpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8qIGluc3Bl
Y3RvckFnZW50ID0gbV9pbnN0cnVtZW50aW5nQWdlbnRzLT5pbnNwZWN0b3JBZ2VudCgpOworICAg
IGF1dG8qIGluc3BlY3RvckFnZW50ID0gbV9pbnN0cnVtZW50aW5nQWdlbnRzLT5wZXJzaXN0ZW50
SW5zcGVjdG9yQWdlbnQoKTsKICAgICBpZiAoIWluc3BlY3RvckFnZW50KQogICAgICAgICByZXR1
cm47CiAKQEAgLTE2OCw3ICsxNjgsNyBAQCBKU0M6OkpTVmFsdWUgQ29tbWFuZExpbmVBUElIb3N0
OjppbnNwZWN0ZWRPYmplY3QoSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsbwogU3RyaW5n
IENvbW1hbmRMaW5lQVBJSG9zdDo6ZGF0YWJhc2VJZChEYXRhYmFzZSYgZGF0YWJhc2UpCiB7CiAg
ICAgaWYgKG1faW5zdHJ1bWVudGluZ0FnZW50cykgewotICAgICAgICBpZiAoYXV0byogZGF0YWJh
c2VBZ2VudCA9IG1faW5zdHJ1bWVudGluZ0FnZW50cy0+aW5zcGVjdG9yRGF0YWJhc2VBZ2VudCgp
KQorICAgICAgICBpZiAoYXV0byogZGF0YWJhc2VBZ2VudCA9IG1faW5zdHJ1bWVudGluZ0FnZW50
cy0+ZW5hYmxlZERhdGFiYXNlQWdlbnQoKSkKICAgICAgICAgICAgIHJldHVybiBkYXRhYmFzZUFn
ZW50LT5kYXRhYmFzZUlkKGRhdGFiYXNlKTsKICAgICB9CiAgICAgcmV0dXJuIHsgfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcAppbmRleCBi
NWIyMmNiMjg2M2ViYzZmZGQ4MjVlNWQzZmRlYzM0NTk4NzAzODI2Li5hNTk1YzEzNDk0NDQyYzZh
NjljNGYyNGIxMzQ3ZjA1N2I3NzAyMTFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCkBAIC0xNzUsNyArMTc1LDcgQEAgdm9pZCBJbnNw
ZWN0b3JDb250cm9sbGVyOjpjcmVhdGVMYXp5QWdlbnRzKCkKICNlbmRpZgogCiAgICAgYXV0byBz
Y3JpcHRQcm9maWxlckFnZW50UHRyID0gbWFrZVVuaXF1ZTxJbnNwZWN0b3JTY3JpcHRQcm9maWxl
ckFnZW50PihwYWdlQ29udGV4dCk7Ci0gICAgbV9pbnN0cnVtZW50aW5nQWdlbnRzLT5zZXRJbnNw
ZWN0b3JTY3JpcHRQcm9maWxlckFnZW50KHNjcmlwdFByb2ZpbGVyQWdlbnRQdHIuZ2V0KCkpOwor
ICAgIG1faW5zdHJ1bWVudGluZ0FnZW50cy0+c2V0UGVyc2lzdGVudFNjcmlwdFByb2ZpbGVyQWdl
bnQoc2NyaXB0UHJvZmlsZXJBZ2VudFB0ci5nZXQoKSk7CiAgICAgbV9hZ2VudHMuYXBwZW5kKFdU
Rk1vdmUoc2NyaXB0UHJvZmlsZXJBZ2VudFB0cikpOwogCiAjaWYgRU5BQkxFKFJFU09VUkNFX1VT
QUdFKQpAQCAtNDIwLDcgKzQyMCw3IEBAIEluc3BlY3RvckFnZW50JiBJbnNwZWN0b3JDb250cm9s
bGVyOjplbnN1cmVJbnNwZWN0b3JBZ2VudCgpCiAgICAgICAgIGF1dG8gcGFnZUNvbnRleHQgPSBw
YWdlQWdlbnRDb250ZXh0KCk7CiAgICAgICAgIGF1dG8gaW5zcGVjdG9yQWdlbnQgPSBtYWtlVW5p
cXVlPEluc3BlY3RvckFnZW50PihwYWdlQ29udGV4dCk7CiAgICAgICAgIG1faW5zcGVjdG9yQWdl
bnQgPSBpbnNwZWN0b3JBZ2VudC5nZXQoKTsKLSAgICAgICAgbV9pbnN0cnVtZW50aW5nQWdlbnRz
LT5zZXRJbnNwZWN0b3JBZ2VudChtX2luc3BlY3RvckFnZW50KTsKKyAgICAgICAgbV9pbnN0cnVt
ZW50aW5nQWdlbnRzLT5zZXRQZXJzaXN0ZW50SW5zcGVjdG9yQWdlbnQobV9pbnNwZWN0b3JBZ2Vu
dCk7CiAgICAgICAgIG1fYWdlbnRzLmFwcGVuZChXVEZNb3ZlKGluc3BlY3RvckFnZW50KSk7CiAg
ICAgfQogICAgIHJldHVybiAqbV9pbnNwZWN0b3JBZ2VudDsKQEAgLTQyOCwyNCArNDI4LDI0IEBA
IEluc3BlY3RvckFnZW50JiBJbnNwZWN0b3JDb250cm9sbGVyOjplbnN1cmVJbnNwZWN0b3JBZ2Vu
dCgpCiAKIEluc3BlY3RvckRPTUFnZW50JiBJbnNwZWN0b3JDb250cm9sbGVyOjplbnN1cmVET01B
Z2VudCgpCiB7Ci0gICAgaWYgKCFtX2luc3BlY3RvckRPTUFnZW50KSB7CisgICAgaWYgKCFtX2Rv
bUFnZW50KSB7CiAgICAgICAgIGF1dG8gcGFnZUNvbnRleHQgPSBwYWdlQWdlbnRDb250ZXh0KCk7
CiAgICAgICAgIGF1dG8gZG9tQWdlbnQgPSBtYWtlVW5pcXVlPEluc3BlY3RvckRPTUFnZW50Pihw
YWdlQ29udGV4dCwgbV9vdmVybGF5LmdldCgpKTsKLSAgICAgICAgbV9pbnNwZWN0b3JET01BZ2Vu
dCA9IGRvbUFnZW50LmdldCgpOworICAgICAgICBtX2RvbUFnZW50ID0gZG9tQWdlbnQuZ2V0KCk7
CiAgICAgICAgIG1fYWdlbnRzLmFwcGVuZChXVEZNb3ZlKGRvbUFnZW50KSk7CiAgICAgfQotICAg
IHJldHVybiAqbV9pbnNwZWN0b3JET01BZ2VudDsKKyAgICByZXR1cm4gKm1fZG9tQWdlbnQ7CiB9
CiAKIEluc3BlY3RvclBhZ2VBZ2VudCYgSW5zcGVjdG9yQ29udHJvbGxlcjo6ZW5zdXJlUGFnZUFn
ZW50KCkKIHsKLSAgICBpZiAoIW1faW5zcGVjdG9yUGFnZUFnZW50KSB7CisgICAgaWYgKCFtX3Bh
Z2VBZ2VudCkgewogICAgICAgICBhdXRvIHBhZ2VDb250ZXh0ID0gcGFnZUFnZW50Q29udGV4dCgp
OwogICAgICAgICBhdXRvIHBhZ2VBZ2VudCA9IG1ha2VVbmlxdWU8SW5zcGVjdG9yUGFnZUFnZW50
PihwYWdlQ29udGV4dCwgbV9pbnNwZWN0b3JDbGllbnQsIG1fb3ZlcmxheS5nZXQoKSk7Ci0gICAg
ICAgIG1faW5zcGVjdG9yUGFnZUFnZW50ID0gcGFnZUFnZW50LmdldCgpOworICAgICAgICBtX3Bh
Z2VBZ2VudCA9IHBhZ2VBZ2VudC5nZXQoKTsKICAgICAgICAgbV9hZ2VudHMuYXBwZW5kKFdURk1v
dmUocGFnZUFnZW50KSk7CiAgICAgfQotICAgIHJldHVybiAqbV9pbnNwZWN0b3JQYWdlQWdlbnQ7
CisgICAgcmV0dXJuICptX3BhZ2VBZ2VudDsKIH0KIAogYm9vbCBJbnNwZWN0b3JDb250cm9sbGVy
OjpkZXZlbG9wZXJFeHRyYXNFbmFibGVkKCkgY29uc3QKQEAgLTQ3OCw3ICs0NzgsNyBAQCB2b2lk
IEluc3BlY3RvckNvbnRyb2xsZXI6OmZyb250ZW5kSW5pdGlhbGl6ZWQoKQogewogICAgIGlmICht
X3BhdXNlQWZ0ZXJJbml0aWFsaXphdGlvbikgewogICAgICAgICBtX3BhdXNlQWZ0ZXJJbml0aWFs
aXphdGlvbiA9IGZhbHNlOwotICAgICAgICBpZiAoUGFnZURlYnVnZ2VyQWdlbnQqIGRlYnVnZ2Vy
QWdlbnQgPSBtX2luc3RydW1lbnRpbmdBZ2VudHMtPnBhZ2VEZWJ1Z2dlckFnZW50KCkpIHsKKyAg
ICAgICAgaWYgKGF1dG8qIGRlYnVnZ2VyQWdlbnQgPSBtX2luc3RydW1lbnRpbmdBZ2VudHMtPmVu
YWJsZWRQYWdlRGVidWdnZXJBZ2VudCgpKSB7CiAgICAgICAgICAgICBFcnJvclN0cmluZyBpZ25v
cmVkOwogICAgICAgICAgICAgZGVidWdnZXJBZ2VudC0+cGF1c2UoaWdub3JlZCk7CiAgICAgICAg
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9s
bGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oCmlu
ZGV4IGQyZjE4MTcyZGYxMzlkZDY4Y2Y5NGI3MTVlODQ3ZGExOGE4YTU4NDUuLmJjYTVlYWQzM2Qw
NGUzYjFmNGQ2N2NkMzM1MjQyMzM0ZTkzODkyY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaApAQCAtMTQzLDggKzE0Myw4IEBAIHByaXZhdGU6
CiAKICAgICAvLyBMYXp5LCBidXQgYWxzbyBvbi1kZW1hbmQgYWdlbnRzLgogICAgIEluc3BlY3Rv
cjo6SW5zcGVjdG9yQWdlbnQqIG1faW5zcGVjdG9yQWdlbnQgeyBudWxscHRyIH07Ci0gICAgSW5z
cGVjdG9yRE9NQWdlbnQqIG1faW5zcGVjdG9yRE9NQWdlbnQgeyBudWxscHRyIH07Ci0gICAgSW5z
cGVjdG9yUGFnZUFnZW50KiBtX2luc3BlY3RvclBhZ2VBZ2VudCB7IG51bGxwdHIgfTsKKyAgICBJ
bnNwZWN0b3JET01BZ2VudCogbV9kb21BZ2VudCB7IG51bGxwdHIgfTsKKyAgICBJbnNwZWN0b3JQ
YWdlQWdlbnQqIG1fcGFnZUFnZW50IHsgbnVsbHB0ciB9OwogCiAgICAgYm9vbCBtX2lzVW5kZXJU
ZXN0IHsgZmFsc2UgfTsKICAgICBib29sIG1faXNBdXRvbWF0aWNJbnNwZWN0aW9uIHsgZmFsc2Ug
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1l
bnRhdGlvbi5jcHAKaW5kZXggYjBkNzY2NGEwYTBiNjA0OTI0MDllZDU5YWEzMDkyMzY3ZjZkZGE2
OC4uZjg5MzM0NDQzYWUzOTkxYmI1ZGZhYmIxMjA1ZGYxYzk3Njg2NjgxNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAK
QEAgLTEyMSw5OSArMTIxLDk5IEBAIHN0YXRpYyBGcmFtZSogZnJhbWVGb3JTY3JpcHRFeGVjdXRp
b25Db250ZXh0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpCiAKIHZvaWQgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRDbGVhcldpbmRvd09iamVjdEluV29ybGRJbXBsKEluc3Ry
dW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIEZyYW1lJiBmcmFtZSwgRE9NV3Jh
cHBlcldvcmxkJiB3b3JsZCkKIHsKLSAgICBpZiAoYXV0byogcGFnZURlYnVnZ2VyQWdlbnQgPSBp
bnN0cnVtZW50aW5nQWdlbnRzLnBhZ2VEZWJ1Z2dlckFnZW50KCkpCisgICAgaWYgKGF1dG8qIHBh
Z2VEZWJ1Z2dlckFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5lbmFibGVkUGFnZURlYnVnZ2Vy
QWdlbnQoKSkKICAgICAgICAgcGFnZURlYnVnZ2VyQWdlbnQtPmRpZENsZWFyV2luZG93T2JqZWN0
SW5Xb3JsZChmcmFtZSwgd29ybGQpOwogCi0gICAgaWYgKGF1dG8qIHBhZ2VSdW50aW1lQWdlbnQg
PSBpbnN0cnVtZW50aW5nQWdlbnRzLnBhZ2VSdW50aW1lQWdlbnQoKSkKKyAgICBpZiAoYXV0byog
cGFnZVJ1bnRpbWVBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuZW5hYmxlZFBhZ2VSdW50aW1l
QWdlbnQoKSkKICAgICAgICAgcGFnZVJ1bnRpbWVBZ2VudC0+ZGlkQ2xlYXJXaW5kb3dPYmplY3RJ
bldvcmxkKGZyYW1lLCB3b3JsZCk7CiAKLSAgICBpZiAoYXV0byogcGFnZUFnZW50ID0gaW5zdHJ1
bWVudGluZ0FnZW50cy5pbnNwZWN0b3JQYWdlQWdlbnQoKSkKKyAgICBpZiAoYXV0byogcGFnZUFn
ZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5lbmFibGVkUGFnZUFnZW50KCkpCiAgICAgICAgIHBh
Z2VBZ2VudC0+ZGlkQ2xlYXJXaW5kb3dPYmplY3RJbldvcmxkKGZyYW1lLCB3b3JsZCk7CiB9CiAK
IGJvb2wgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjppc0RlYnVnZ2VyUGF1c2VkSW1wbChJbnN0
cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzKQogewotICAgIGlmIChhdXRvKiB3
ZWJEZWJ1Z2dlckFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy53ZWJEZWJ1Z2dlckFnZW50KCkp
CisgICAgaWYgKGF1dG8qIHdlYkRlYnVnZ2VyQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmVu
YWJsZWRXZWJEZWJ1Z2dlckFnZW50KCkpCiAgICAgICAgIHJldHVybiB3ZWJEZWJ1Z2dlckFnZW50
LT5pc1BhdXNlZCgpOwogICAgIHJldHVybiBmYWxzZTsKIH0KIAogaW50IEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6aWRlbnRpZmllckZvck5vZGVJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGlu
c3RydW1lbnRpbmdBZ2VudHMsIE5vZGUmIG5vZGUpCiB7Ci0gICAgaWYgKEluc3BlY3RvckRPTUFn
ZW50KiBkb21BZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yRE9NQWdlbnQoKSkK
KyAgICBpZiAoYXV0byogZG9tQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLnBlcnNpc3RlbnRE
T01BZ2VudCgpKQogICAgICAgICByZXR1cm4gZG9tQWdlbnQtPmlkZW50aWZpZXJGb3JOb2RlKG5v
ZGUpOwogICAgIHJldHVybiAwOwogfQogCiB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
YWRkRXZlbnRMaXN0ZW5lcnNUb05vZGVJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1l
bnRpbmdBZ2VudHMsIE5vZGUmIG5vZGUpCiB7Ci0gICAgaWYgKEluc3BlY3RvckRPTUFnZW50KiBk
b21BZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yRE9NQWdlbnQoKSkKKyAgICBp
ZiAoYXV0byogZG9tQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLnBlcnNpc3RlbnRET01BZ2Vu
dCgpKQogICAgICAgICBkb21BZ2VudC0+YWRkRXZlbnRMaXN0ZW5lcnNUb05vZGUobm9kZSk7CiB9
CiAKIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsSW5zZXJ0RE9NTm9kZUltcGwo
SW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgTm9kZSYgcGFyZW50KQog
ewotICAgIGlmIChhdXRvKiBwYWdlRE9NRGVidWdnZXJBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2Vu
dHMucGFnZURPTURlYnVnZ2VyQWdlbnQoKSkKKyAgICBpZiAoYXV0byogcGFnZURPTURlYnVnZ2Vy
QWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmVuYWJsZWRQYWdlRE9NRGVidWdnZXJBZ2VudCgp
KQogICAgICAgICBwYWdlRE9NRGVidWdnZXJBZ2VudC0+d2lsbEluc2VydERPTU5vZGUocGFyZW50
KTsKIH0KIAogdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEluc2VydERPTU5vZGVJ
bXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIE5vZGUmIG5vZGUp
CiB7Ci0gICAgaWYgKEluc3BlY3RvckRPTUFnZW50KiBkb21BZ2VudCA9IGluc3RydW1lbnRpbmdB
Z2VudHMuaW5zcGVjdG9yRE9NQWdlbnQoKSkKKyAgICBpZiAoYXV0byogZG9tQWdlbnQgPSBpbnN0
cnVtZW50aW5nQWdlbnRzLnBlcnNpc3RlbnRET01BZ2VudCgpKQogICAgICAgICBkb21BZ2VudC0+
ZGlkSW5zZXJ0RE9NTm9kZShub2RlKTsKLSAgICBpZiAoYXV0byogcGFnZURPTURlYnVnZ2VyQWdl
bnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLnBhZ2VET01EZWJ1Z2dlckFnZW50KCkpCisgICAgaWYg
KGF1dG8qIHBhZ2VET01EZWJ1Z2dlckFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5lbmFibGVk
UGFnZURPTURlYnVnZ2VyQWdlbnQoKSkKICAgICAgICAgcGFnZURPTURlYnVnZ2VyQWdlbnQtPmRp
ZEluc2VydERPTU5vZGUobm9kZSk7CiB9CiAKIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
Ojp3aWxsUmVtb3ZlRE9NTm9kZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGlu
Z0FnZW50cywgTm9kZSYgbm9kZSkKIHsKLSAgICBpZiAoYXV0byogcGFnZURPTURlYnVnZ2VyQWdl
bnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLnBhZ2VET01EZWJ1Z2dlckFnZW50KCkpCisgICAgaWYg
KGF1dG8qIHBhZ2VET01EZWJ1Z2dlckFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5lbmFibGVk
UGFnZURPTURlYnVnZ2VyQWdlbnQoKSkKICAgICAgICAgcGFnZURPTURlYnVnZ2VyQWdlbnQtPndp
bGxSZW1vdmVET01Ob2RlKG5vZGUpOwogfQogCiB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6ZGlkUmVtb3ZlRE9NTm9kZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGlu
Z0FnZW50cywgTm9kZSYgbm9kZSkKIHsKLSAgICBpZiAoYXV0byogcGFnZURPTURlYnVnZ2VyQWdl
bnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLnBhZ2VET01EZWJ1Z2dlckFnZW50KCkpCisgICAgaWYg
KGF1dG8qIHBhZ2VET01EZWJ1Z2dlckFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5lbmFibGVk
UGFnZURPTURlYnVnZ2VyQWdlbnQoKSkKICAgICAgICAgcGFnZURPTURlYnVnZ2VyQWdlbnQtPmRp
ZFJlbW92ZURPTU5vZGUobm9kZSk7Ci0gICAgaWYgKEluc3BlY3RvckRPTUFnZW50KiBkb21BZ2Vu
dCA9IGluc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yRE9NQWdlbnQoKSkKKyAgICBpZiAoYXV0
byogZG9tQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLnBlcnNpc3RlbnRET01BZ2VudCgpKQog
ICAgICAgICBkb21BZ2VudC0+ZGlkUmVtb3ZlRE9NTm9kZShub2RlKTsKIH0KIAogdm9pZCBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxNb2RpZnlET01BdHRySW1wbChJbnN0cnVtZW50aW5n
QWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBFbGVtZW50JiBlbGVtZW50LCBjb25zdCBBdG9t
U3RyaW5nJiBvbGRWYWx1ZSwgY29uc3QgQXRvbVN0cmluZyYgbmV3VmFsdWUpCiB7Ci0gICAgaWYg
KGF1dG8qIHBhZ2VET01EZWJ1Z2dlckFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5wYWdlRE9N
RGVidWdnZXJBZ2VudCgpKQorICAgIGlmIChhdXRvKiBwYWdlRE9NRGVidWdnZXJBZ2VudCA9IGlu
c3RydW1lbnRpbmdBZ2VudHMuZW5hYmxlZFBhZ2VET01EZWJ1Z2dlckFnZW50KCkpCiAgICAgICAg
IHBhZ2VET01EZWJ1Z2dlckFnZW50LT53aWxsTW9kaWZ5RE9NQXR0cihlbGVtZW50KTsKLSAgICBp
ZiAoSW5zcGVjdG9yRE9NQWdlbnQqIGRvbUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5pbnNw
ZWN0b3JET01BZ2VudCgpKQorICAgIGlmIChhdXRvKiBkb21BZ2VudCA9IGluc3RydW1lbnRpbmdB
Z2VudHMucGVyc2lzdGVudERPTUFnZW50KCkpCiAgICAgICAgIGRvbUFnZW50LT53aWxsTW9kaWZ5
RE9NQXR0cihlbGVtZW50LCBvbGRWYWx1ZSwgbmV3VmFsdWUpOwogfQogCiB2b2lkIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6ZGlkTW9kaWZ5RE9NQXR0ckltcGwoSW5zdHJ1bWVudGluZ0FnZW50
cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgRWxlbWVudCYgZWxlbWVudCwgY29uc3QgQXRvbVN0cmlu
ZyYgbmFtZSwgY29uc3QgQXRvbVN0cmluZyYgdmFsdWUpCiB7Ci0gICAgaWYgKEluc3BlY3RvckRP
TUFnZW50KiBkb21BZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yRE9NQWdlbnQo
KSkKKyAgICBpZiAoYXV0byogZG9tQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLnBlcnNpc3Rl
bnRET01BZ2VudCgpKQogICAgICAgICBkb21BZ2VudC0+ZGlkTW9kaWZ5RE9NQXR0cihlbGVtZW50
LCBuYW1lLCB2YWx1ZSk7CiB9CiAKIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRS
ZW1vdmVET01BdHRySW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRz
LCBFbGVtZW50JiBlbGVtZW50LCBjb25zdCBBdG9tU3RyaW5nJiBuYW1lKQogewotICAgIGlmIChJ
bnNwZWN0b3JET01BZ2VudCogZG9tQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3Rv
ckRPTUFnZW50KCkpCisgICAgaWYgKGF1dG8qIGRvbUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50
cy5wZXJzaXN0ZW50RE9NQWdlbnQoKSkKICAgICAgICAgZG9tQWdlbnQtPmRpZFJlbW92ZURPTUF0
dHIoZWxlbWVudCwgbmFtZSk7CiB9CiAKIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3
aWxsSW52YWxpZGF0ZVN0eWxlQXR0ckltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVu
dGluZ0FnZW50cywgRWxlbWVudCYgZWxlbWVudCkKIHsKLSAgICBpZiAoYXV0byogcGFnZURPTURl
YnVnZ2VyQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLnBhZ2VET01EZWJ1Z2dlckFnZW50KCkp
CisgICAgaWYgKGF1dG8qIHBhZ2VET01EZWJ1Z2dlckFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50
cy5lbmFibGVkUGFnZURPTURlYnVnZ2VyQWdlbnQoKSkKICAgICAgICAgcGFnZURPTURlYnVnZ2Vy
QWdlbnQtPndpbGxJbnZhbGlkYXRlU3R5bGVBdHRyKGVsZW1lbnQpOwogfQogCiB2b2lkIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkSW52YWxpZGF0ZVN0eWxlQXR0ckltcGwoSW5zdHJ1bWVu
dGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgRWxlbWVudCYgZWxlbWVudCkKIHsKLSAg
ICBpZiAoYXV0byogZG9tQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3RvckRPTUFn
ZW50KCkpCisgICAgaWYgKGF1dG8qIGRvbUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5wZXJz
aXN0ZW50RE9NQWdlbnQoKSkKICAgICAgICAgZG9tQWdlbnQtPmRpZEludmFsaWRhdGVTdHlsZUF0
dHIoZWxlbWVudCk7CiB9CiAKIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkb2N1bWVu
dERldGFjaGVkSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBE
b2N1bWVudCYgZG9jdW1lbnQpCiB7Ci0gICAgaWYgKEluc3BlY3RvckNTU0FnZW50KiBjc3NBZ2Vu
dCA9IGluc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yQ1NTQWdlbnQoKSkKKyAgICBpZiAoYXV0
byogY3NzQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmVuYWJsZWRDU1NBZ2VudCgpKQogICAg
ICAgICBjc3NBZ2VudC0+ZG9jdW1lbnREZXRhY2hlZChkb2N1bWVudCk7CiB9CiAKQEAgLTIyMiwz
NjAgKzIyMiwzNjAgQEAgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmZyYW1lV2luZG93
RGlzY2FyZGVkSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnMKICAgICBpZiAoTElLRUxZKCFp
bnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3RvckVudmlyb25tZW50KCkuZGV2ZWxvcGVyRXh0cmFz
RW5hYmxlZCgpKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKFdlYkNvbnNvbGVBZ2VudCog
Y29uc29sZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy53ZWJDb25zb2xlQWdlbnQoKSkKKyAg
ICBpZiAoYXV0byogY29uc29sZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy53ZWJDb25zb2xl
QWdlbnQoKSkKICAgICAgICAgY29uc29sZUFnZW50LT5mcmFtZVdpbmRvd0Rpc2NhcmRlZCh3aW5k
b3cpOwogfQogCiB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6bWVkaWFRdWVyeVJlc3Vs
dENoYW5nZWRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMpCiB7
Ci0gICAgaWYgKEluc3BlY3RvckNTU0FnZW50KiBjc3NBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2Vu
dHMuaW5zcGVjdG9yQ1NTQWdlbnQoKSkKKyAgICBpZiAoYXV0byogY3NzQWdlbnQgPSBpbnN0cnVt
ZW50aW5nQWdlbnRzLmVuYWJsZWRDU1NBZ2VudCgpKQogICAgICAgICBjc3NBZ2VudC0+bWVkaWFR
dWVyeVJlc3VsdENoYW5nZWQoKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OmFjdGl2ZVN0eWxlU2hlZXRzVXBkYXRlZEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1
bWVudGluZ0FnZW50cywgRG9jdW1lbnQmIGRvY3VtZW50KQogewotICAgIGlmIChJbnNwZWN0b3JD
U1NBZ2VudCogY3NzQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3RvckNTU0FnZW50
KCkpCisgICAgaWYgKGF1dG8qIGNzc0FnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5lbmFibGVk
Q1NTQWdlbnQoKSkKICAgICAgICAgY3NzQWdlbnQtPmFjdGl2ZVN0eWxlU2hlZXRzVXBkYXRlZChk
b2N1bWVudCk7CiB9CiAKIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRQdXNoU2hh
ZG93Um9vdEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgRWxl
bWVudCYgaG9zdCwgU2hhZG93Um9vdCYgcm9vdCkKIHsKLSAgICBpZiAoSW5zcGVjdG9yRE9NQWdl
bnQqIGRvbUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JET01BZ2VudCgpKQor
ICAgIGlmIChhdXRvKiBkb21BZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMucGVyc2lzdGVudERP
TUFnZW50KCkpCiAgICAgICAgIGRvbUFnZW50LT5kaWRQdXNoU2hhZG93Um9vdChob3N0LCByb290
KTsKIH0KIAogdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxQb3BTaGFkb3dSb290
SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBFbGVtZW50JiBo
b3N0LCBTaGFkb3dSb290JiByb290KQogewotICAgIGlmIChJbnNwZWN0b3JET01BZ2VudCogZG9t
QWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3RvckRPTUFnZW50KCkpCisgICAgaWYg
KGF1dG8qIGRvbUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5wZXJzaXN0ZW50RE9NQWdlbnQo
KSkKICAgICAgICAgZG9tQWdlbnQtPndpbGxQb3BTaGFkb3dSb290KGhvc3QsIHJvb3QpOwogfQog
CiB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkQ2hhbmdlQ3VzdG9tRWxlbWVudFN0
YXRlSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBFbGVtZW50
JiBlbGVtZW50KQogewotICAgIGlmIChJbnNwZWN0b3JET01BZ2VudCogZG9tQWdlbnQgPSBpbnN0
cnVtZW50aW5nQWdlbnRzLmluc3BlY3RvckRPTUFnZW50KCkpCisgICAgaWYgKGF1dG8qIGRvbUFn
ZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5wZXJzaXN0ZW50RE9NQWdlbnQoKSkKICAgICAgICAg
ZG9tQWdlbnQtPmRpZENoYW5nZUN1c3RvbUVsZW1lbnRTdGF0ZShlbGVtZW50KTsKIH0KIAogdm9p
ZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnBzZXVkb0VsZW1lbnRDcmVhdGVkSW1wbChJbnN0
cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBQc2V1ZG9FbGVtZW50JiBwc2V1
ZG9FbGVtZW50KQogewotICAgIGlmIChJbnNwZWN0b3JET01BZ2VudCogZG9tQWdlbnQgPSBpbnN0
cnVtZW50aW5nQWdlbnRzLmluc3BlY3RvckRPTUFnZW50KCkpCisgICAgaWYgKGF1dG8qIGRvbUFn
ZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5wZXJzaXN0ZW50RE9NQWdlbnQoKSkKICAgICAgICAg
ZG9tQWdlbnQtPnBzZXVkb0VsZW1lbnRDcmVhdGVkKHBzZXVkb0VsZW1lbnQpOwogfQogCiB2b2lk
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6cHNldWRvRWxlbWVudERlc3Ryb3llZEltcGwoSW5z
dHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgUHNldWRvRWxlbWVudCYgcHNl
dWRvRWxlbWVudCkKIHsKLSAgICBpZiAoSW5zcGVjdG9yRE9NQWdlbnQqIGRvbUFnZW50ID0gaW5z
dHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JET01BZ2VudCgpKQorICAgIGlmIChhdXRvKiBkb21B
Z2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMucGVyc2lzdGVudERPTUFnZW50KCkpCiAgICAgICAg
IGRvbUFnZW50LT5wc2V1ZG9FbGVtZW50RGVzdHJveWVkKHBzZXVkb0VsZW1lbnQpOwotICAgIGlm
IChJbnNwZWN0b3JMYXllclRyZWVBZ2VudCogbGF5ZXJUcmVlQWdlbnQgPSBpbnN0cnVtZW50aW5n
QWdlbnRzLmluc3BlY3RvckxheWVyVHJlZUFnZW50KCkpCisgICAgaWYgKGF1dG8qIGxheWVyVHJl
ZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5lbmFibGVkTGF5ZXJUcmVlQWdlbnQoKSkKICAg
ICAgICAgbGF5ZXJUcmVlQWdlbnQtPnBzZXVkb0VsZW1lbnREZXN0cm95ZWQocHNldWRvRWxlbWVu
dCk7CiB9CiAKIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjptb3VzZURpZE1vdmVPdmVy
RWxlbWVudEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgY29u
c3QgSGl0VGVzdFJlc3VsdCYgcmVzdWx0LCB1bnNpZ25lZCBtb2RpZmllckZsYWdzKQogewotICAg
IGlmIChJbnNwZWN0b3JET01BZ2VudCogZG9tQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmlu
c3BlY3RvckRPTUFnZW50KCkpCisgICAgaWYgKGF1dG8qIGRvbUFnZW50ID0gaW5zdHJ1bWVudGlu
Z0FnZW50cy5wZXJzaXN0ZW50RE9NQWdlbnQoKSkKICAgICAgICAgZG9tQWdlbnQtPm1vdXNlRGlk
TW92ZU92ZXJFbGVtZW50KHJlc3VsdCwgbW9kaWZpZXJGbGFncyk7CiB9CiAKIHZvaWQgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRTY3JvbGxJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGlu
c3RydW1lbnRpbmdBZ2VudHMpCiB7Ci0gICAgaWYgKEluc3BlY3RvclBhZ2VBZ2VudCogcGFnZUFn
ZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JQYWdlQWdlbnQoKSkKKyAgICBpZiAo
YXV0byogcGFnZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5lbmFibGVkUGFnZUFnZW50KCkp
CiAgICAgICAgIHBhZ2VBZ2VudC0+ZGlkU2Nyb2xsKCk7CiB9CiAKIGJvb2wgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjpoYW5kbGVUb3VjaEV2ZW50SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBp
bnN0cnVtZW50aW5nQWdlbnRzLCBOb2RlJiBub2RlKQogewotICAgIGlmIChJbnNwZWN0b3JET01B
Z2VudCogZG9tQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3RvckRPTUFnZW50KCkp
CisgICAgaWYgKGF1dG8qIGRvbUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5wZXJzaXN0ZW50
RE9NQWdlbnQoKSkKICAgICAgICAgcmV0dXJuIGRvbUFnZW50LT5oYW5kbGVUb3VjaEV2ZW50KG5v
ZGUpOwogICAgIHJldHVybiBmYWxzZTsKIH0KIAogYm9vbCBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OmhhbmRsZU1vdXNlUHJlc3NJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRp
bmdBZ2VudHMpCiB7Ci0gICAgaWYgKEluc3BlY3RvckRPTUFnZW50KiBkb21BZ2VudCA9IGluc3Ry
dW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yRE9NQWdlbnQoKSkKKyAgICBpZiAoYXV0byogZG9tQWdl
bnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLnBlcnNpc3RlbnRET01BZ2VudCgpKQogICAgICAgICBy
ZXR1cm4gZG9tQWdlbnQtPmhhbmRsZU1vdXNlUHJlc3MoKTsKICAgICByZXR1cm4gZmFsc2U7CiB9
CiAKIGJvb2wgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpmb3JjZVBzZXVkb1N0YXRlSW1wbChJ
bnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBjb25zdCBFbGVtZW50JiBl
bGVtZW50LCBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NUeXBlIHBzZXVkb1N0YXRlKQogewotICAg
IGlmIChJbnNwZWN0b3JDU1NBZ2VudCogY3NzQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmlu
c3BlY3RvckNTU0FnZW50KCkpCisgICAgaWYgKGF1dG8qIGNzc0FnZW50ID0gaW5zdHJ1bWVudGlu
Z0FnZW50cy5lbmFibGVkQ1NTQWdlbnQoKSkKICAgICAgICAgcmV0dXJuIGNzc0FnZW50LT5mb3Jj
ZVBzZXVkb1N0YXRlKGVsZW1lbnQsIHBzZXVkb1N0YXRlKTsKICAgICByZXR1cm4gZmFsc2U7CiB9
CiAKIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpjaGFyYWN0ZXJEYXRhTW9kaWZpZWRJ
bXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIENoYXJhY3RlckRh
dGEmIGNoYXJhY3RlckRhdGEpCiB7Ci0gICAgaWYgKEluc3BlY3RvckRPTUFnZW50KiBkb21BZ2Vu
dCA9IGluc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yRE9NQWdlbnQoKSkKKyAgICBpZiAoYXV0
byogZG9tQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLnBlcnNpc3RlbnRET01BZ2VudCgpKQog
ICAgICAgICBkb21BZ2VudC0+Y2hhcmFjdGVyRGF0YU1vZGlmaWVkKGNoYXJhY3RlckRhdGEpOwog
fQogCiB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFNlbmRYTUxIdHRwUmVxdWVz
dEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgY29uc3QgU3Ry
aW5nJiB1cmwpCiB7Ci0gICAgaWYgKEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQqIGRvbURlYnVn
Z2VyQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQo
KSkKKyAgICBpZiAoYXV0byogZG9tRGVidWdnZXJBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMu
ZW5hYmxlZERPTURlYnVnZ2VyQWdlbnQoKSkKICAgICAgICAgZG9tRGVidWdnZXJBZ2VudC0+d2ls
bFNlbmRYTUxIdHRwUmVxdWVzdCh1cmwpOwogfQogCiB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6d2lsbEZldGNoSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdl
bnRzLCBjb25zdCBTdHJpbmcmIHVybCkKIHsKLSAgICBpZiAoSW5zcGVjdG9yRE9NRGVidWdnZXJB
Z2VudCogZG9tRGVidWdnZXJBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yRE9N
RGVidWdnZXJBZ2VudCgpKQorICAgIGlmIChhdXRvKiBkb21EZWJ1Z2dlckFnZW50ID0gaW5zdHJ1
bWVudGluZ0FnZW50cy5lbmFibGVkRE9NRGVidWdnZXJBZ2VudCgpKQogICAgICAgICBkb21EZWJ1
Z2dlckFnZW50LT53aWxsRmV0Y2godXJsKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OmRpZEluc3RhbGxUaW1lckltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVu
dGluZ0FnZW50cywgaW50IHRpbWVySWQsIFNlY29uZHMgdGltZW91dCwgYm9vbCBzaW5nbGVTaG90
LCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KQogewotICAgIGlmIChhdXRvKiB3ZWJE
ZWJ1Z2dlckFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy53ZWJEZWJ1Z2dlckFnZW50KCkpCisg
ICAgaWYgKGF1dG8qIHdlYkRlYnVnZ2VyQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmVuYWJs
ZWRXZWJEZWJ1Z2dlckFnZW50KCkpCiAgICAgICAgIHdlYkRlYnVnZ2VyQWdlbnQtPmRpZFNjaGVk
dWxlQXN5bmNDYWxsKGNvbnRleHQuZXhlY1N0YXRlKCksIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6
OkFzeW5jQ2FsbFR5cGU6OkRPTVRpbWVyLCB0aW1lcklkLCBzaW5nbGVTaG90KTsKIAotICAgIGlm
IChJbnNwZWN0b3JUaW1lbGluZUFnZW50KiB0aW1lbGluZUFnZW50ID0gaW5zdHJ1bWVudGluZ0Fn
ZW50cy50cmFja2luZ0luc3BlY3RvclRpbWVsaW5lQWdlbnQoKSkKKyAgICBpZiAoYXV0byogdGlt
ZWxpbmVBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMudHJhY2tpbmdUaW1lbGluZUFnZW50KCkp
CiAgICAgICAgIHRpbWVsaW5lQWdlbnQtPmRpZEluc3RhbGxUaW1lcih0aW1lcklkLCB0aW1lb3V0
LCBzaW5nbGVTaG90LCBmcmFtZUZvclNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoY29udGV4dCkpOwog
fQogCiB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVtb3ZlVGltZXJJbXBsKElu
c3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIGludCB0aW1lcklkLCBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KQogewotICAgIGlmIChhdXRvKiB3ZWJEZWJ1Z2dl
ckFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy53ZWJEZWJ1Z2dlckFnZW50KCkpCisgICAgaWYg
KGF1dG8qIHdlYkRlYnVnZ2VyQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmVuYWJsZWRXZWJE
ZWJ1Z2dlckFnZW50KCkpCiAgICAgICAgIHdlYkRlYnVnZ2VyQWdlbnQtPmRpZENhbmNlbEFzeW5j
Q2FsbChJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpBc3luY0NhbGxUeXBlOjpET01UaW1lciwgdGlt
ZXJJZCk7Ci0gICAgaWYgKEluc3BlY3RvclRpbWVsaW5lQWdlbnQqIHRpbWVsaW5lQWdlbnQgPSBp
bnN0cnVtZW50aW5nQWdlbnRzLnRyYWNraW5nSW5zcGVjdG9yVGltZWxpbmVBZ2VudCgpKQorICAg
IGlmIChhdXRvKiB0aW1lbGluZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy50cmFja2luZ1Rp
bWVsaW5lQWdlbnQoKSkKICAgICAgICAgdGltZWxpbmVBZ2VudC0+ZGlkUmVtb3ZlVGltZXIodGlt
ZXJJZCwgZnJhbWVGb3JTY3JpcHRFeGVjdXRpb25Db250ZXh0KGNvbnRleHQpKTsKIH0KIAogdm9p
ZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEFkZEV2ZW50TGlzdGVuZXJJbXBsKEluc3Ry
dW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIEV2ZW50VGFyZ2V0JiB0YXJnZXQs
IGNvbnN0IEF0b21TdHJpbmcmIGV2ZW50VHlwZSwgRXZlbnRMaXN0ZW5lciYgbGlzdGVuZXIsIGJv
b2wgY2FwdHVyZSkKIHsKLSAgICBpZiAoYXV0byogd2ViRGVidWdnZXJBZ2VudCA9IGluc3RydW1l
bnRpbmdBZ2VudHMud2ViRGVidWdnZXJBZ2VudCgpKQorICAgIGlmIChhdXRvKiB3ZWJEZWJ1Z2dl
ckFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5lbmFibGVkV2ViRGVidWdnZXJBZ2VudCgpKQog
ICAgICAgICB3ZWJEZWJ1Z2dlckFnZW50LT5kaWRBZGRFdmVudExpc3RlbmVyKHRhcmdldCwgZXZl
bnRUeXBlLCBsaXN0ZW5lciwgY2FwdHVyZSk7Ci0gICAgaWYgKEluc3BlY3RvckRPTUFnZW50KiBk
b21BZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yRE9NQWdlbnQoKSkKKyAgICBp
ZiAoYXV0byogZG9tQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLnBlcnNpc3RlbnRET01BZ2Vu
dCgpKQogICAgICAgICBkb21BZ2VudC0+ZGlkQWRkRXZlbnRMaXN0ZW5lcih0YXJnZXQpOwogfQog
CiB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFJlbW92ZUV2ZW50TGlzdGVuZXJJ
bXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIEV2ZW50VGFyZ2V0
JiB0YXJnZXQsIGNvbnN0IEF0b21TdHJpbmcmIGV2ZW50VHlwZSwgRXZlbnRMaXN0ZW5lciYgbGlz
dGVuZXIsIGJvb2wgY2FwdHVyZSkKIHsKLSAgICBpZiAoYXV0byogd2ViRGVidWdnZXJBZ2VudCA9
IGluc3RydW1lbnRpbmdBZ2VudHMud2ViRGVidWdnZXJBZ2VudCgpKQorICAgIGlmIChhdXRvKiB3
ZWJEZWJ1Z2dlckFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5lbmFibGVkV2ViRGVidWdnZXJB
Z2VudCgpKQogICAgICAgICB3ZWJEZWJ1Z2dlckFnZW50LT53aWxsUmVtb3ZlRXZlbnRMaXN0ZW5l
cih0YXJnZXQsIGV2ZW50VHlwZSwgbGlzdGVuZXIsIGNhcHR1cmUpOwotICAgIGlmIChJbnNwZWN0
b3JET01BZ2VudCogZG9tQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3RvckRPTUFn
ZW50KCkpCisgICAgaWYgKGF1dG8qIGRvbUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5wZXJz
aXN0ZW50RE9NQWdlbnQoKSkKICAgICAgICAgZG9tQWdlbnQtPndpbGxSZW1vdmVFdmVudExpc3Rl
bmVyKHRhcmdldCwgZXZlbnRUeXBlLCBsaXN0ZW5lciwgY2FwdHVyZSk7CiB9CiAKIGJvb2wgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjppc0V2ZW50TGlzdGVuZXJEaXNhYmxlZEltcGwoSW5zdHJ1
bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgRXZlbnRUYXJnZXQmIHRhcmdldCwg
Y29uc3QgQXRvbVN0cmluZyYgZXZlbnRUeXBlLCBFdmVudExpc3RlbmVyJiBsaXN0ZW5lciwgYm9v
bCBjYXB0dXJlKQogewotICAgIGlmIChJbnNwZWN0b3JET01BZ2VudCogZG9tQWdlbnQgPSBpbnN0
cnVtZW50aW5nQWdlbnRzLmluc3BlY3RvckRPTUFnZW50KCkpCisgICAgaWYgKGF1dG8qIGRvbUFn
ZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5wZXJzaXN0ZW50RE9NQWdlbnQoKSkKICAgICAgICAg
cmV0dXJuIGRvbUFnZW50LT5pc0V2ZW50TGlzdGVuZXJEaXNhYmxlZCh0YXJnZXQsIGV2ZW50VHlw
ZSwgbGlzdGVuZXIsIGNhcHR1cmUpOwogICAgIHJldHVybiBmYWxzZTsKIH0KIAogaW50IEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFBvc3RNZXNzYWdlSW1wbChJbnN0cnVtZW50aW5nQWdl
bnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzKQogewotICAgIGlmIChhdXRvKiB3ZWJEZWJ1Z2dlckFn
ZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy53ZWJEZWJ1Z2dlckFnZW50KCkpCisgICAgaWYgKGF1
dG8qIHdlYkRlYnVnZ2VyQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmVuYWJsZWRXZWJEZWJ1
Z2dlckFnZW50KCkpCiAgICAgICAgIHJldHVybiB3ZWJEZWJ1Z2dlckFnZW50LT53aWxsUG9zdE1l
c3NhZ2UoKTsKICAgICByZXR1cm4gMDsKIH0KIAogdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OmRpZFBvc3RNZXNzYWdlSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5n
QWdlbnRzLCBpbnQgcG9zdE1lc3NhZ2VJZGVudGlmaWVyLCBKU0M6OkpTR2xvYmFsT2JqZWN0JiBz
dGF0ZSkKIHsKLSAgICBpZiAoYXV0byogd2ViRGVidWdnZXJBZ2VudCA9IGluc3RydW1lbnRpbmdB
Z2VudHMud2ViRGVidWdnZXJBZ2VudCgpKQorICAgIGlmIChhdXRvKiB3ZWJEZWJ1Z2dlckFnZW50
ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5lbmFibGVkV2ViRGVidWdnZXJBZ2VudCgpKQogICAgICAg
ICB3ZWJEZWJ1Z2dlckFnZW50LT5kaWRQb3N0TWVzc2FnZShwb3N0TWVzc2FnZUlkZW50aWZpZXIs
IHN0YXRlKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEZhaWxQb3N0
TWVzc2FnZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgaW50
IHBvc3RNZXNzYWdlSWRlbnRpZmllcikKIHsKLSAgICBpZiAoYXV0byogd2ViRGVidWdnZXJBZ2Vu
dCA9IGluc3RydW1lbnRpbmdBZ2VudHMud2ViRGVidWdnZXJBZ2VudCgpKQorICAgIGlmIChhdXRv
KiB3ZWJEZWJ1Z2dlckFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5lbmFibGVkV2ViRGVidWdn
ZXJBZ2VudCgpKQogICAgICAgICB3ZWJEZWJ1Z2dlckFnZW50LT5kaWRGYWlsUG9zdE1lc3NhZ2Uo
cG9zdE1lc3NhZ2VJZGVudGlmaWVyKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OndpbGxEaXNwYXRjaFBvc3RNZXNzYWdlSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0
cnVtZW50aW5nQWdlbnRzLCBpbnQgcG9zdE1lc3NhZ2VJZGVudGlmaWVyKQogewotICAgIGlmIChh
dXRvKiB3ZWJEZWJ1Z2dlckFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy53ZWJEZWJ1Z2dlckFn
ZW50KCkpCisgICAgaWYgKGF1dG8qIHdlYkRlYnVnZ2VyQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdl
bnRzLmVuYWJsZWRXZWJEZWJ1Z2dlckFnZW50KCkpCiAgICAgICAgIHdlYkRlYnVnZ2VyQWdlbnQt
PndpbGxEaXNwYXRjaFBvc3RNZXNzYWdlKHBvc3RNZXNzYWdlSWRlbnRpZmllcik7CiB9CiAKIHZv
aWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWREaXNwYXRjaFBvc3RNZXNzYWdlSW1wbChJ
bnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBpbnQgcG9zdE1lc3NhZ2VJ
ZGVudGlmaWVyKQogewotICAgIGlmIChhdXRvKiB3ZWJEZWJ1Z2dlckFnZW50ID0gaW5zdHJ1bWVu
dGluZ0FnZW50cy53ZWJEZWJ1Z2dlckFnZW50KCkpCisgICAgaWYgKGF1dG8qIHdlYkRlYnVnZ2Vy
QWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmVuYWJsZWRXZWJEZWJ1Z2dlckFnZW50KCkpCiAg
ICAgICAgIHdlYkRlYnVnZ2VyQWdlbnQtPmRpZERpc3BhdGNoUG9zdE1lc3NhZ2UocG9zdE1lc3Nh
Z2VJZGVudGlmaWVyKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxD
YWxsRnVuY3Rpb25JbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMs
IGNvbnN0IFN0cmluZyYgc2NyaXB0TmFtZSwgaW50IHNjcmlwdExpbmUsIGludCBzY3JpcHRDb2x1
bW4sIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCiB7Ci0gICAgaWYgKGF1dG8qIHRp
bWVsaW5lQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLnRyYWNraW5nSW5zcGVjdG9yVGltZWxp
bmVBZ2VudCgpKQorICAgIGlmIChhdXRvKiB0aW1lbGluZUFnZW50ID0gaW5zdHJ1bWVudGluZ0Fn
ZW50cy50cmFja2luZ1RpbWVsaW5lQWdlbnQoKSkKICAgICAgICAgdGltZWxpbmVBZ2VudC0+d2ls
bENhbGxGdW5jdGlvbihzY3JpcHROYW1lLCBzY3JpcHRMaW5lLCBzY3JpcHRDb2x1bW4sIGZyYW1l
Rm9yU2NyaXB0RXhlY3V0aW9uQ29udGV4dChjb250ZXh0KSk7CiB9CiAKIHZvaWQgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjpkaWRDYWxsRnVuY3Rpb25JbXBsKEluc3RydW1lbnRpbmdBZ2VudHMm
IGluc3RydW1lbnRpbmdBZ2VudHMsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCiB7
Ci0gICAgaWYgKGF1dG8qIHRpbWVsaW5lQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLnRyYWNr
aW5nSW5zcGVjdG9yVGltZWxpbmVBZ2VudCgpKQorICAgIGlmIChhdXRvKiB0aW1lbGluZUFnZW50
ID0gaW5zdHJ1bWVudGluZ0FnZW50cy50cmFja2luZ1RpbWVsaW5lQWdlbnQoKSkKICAgICAgICAg
dGltZWxpbmVBZ2VudC0+ZGlkQ2FsbEZ1bmN0aW9uKGZyYW1lRm9yU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dChjb250ZXh0KSk7CiB9CiAKIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxs
RGlzcGF0Y2hFdmVudEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50
cywgRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBFdmVudCYgZXZlbnQpCiB7Ci0gICAgaWYgKGF1
dG8qIHRpbWVsaW5lQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLnRyYWNraW5nSW5zcGVjdG9y
VGltZWxpbmVBZ2VudCgpKQorICAgIGlmIChhdXRvKiB0aW1lbGluZUFnZW50ID0gaW5zdHJ1bWVu
dGluZ0FnZW50cy50cmFja2luZ1RpbWVsaW5lQWdlbnQoKSkKICAgICAgICAgdGltZWxpbmVBZ2Vu
dC0+d2lsbERpc3BhdGNoRXZlbnQoZXZlbnQsIGRvY3VtZW50LmZyYW1lKCkpOwogfQogCiB2b2lk
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbEhhbmRsZUV2ZW50SW1wbChJbnN0cnVtZW50
aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBFdmVudCYgZXZlbnQsIGNvbnN0IFJlZ2lz
dGVyZWRFdmVudExpc3RlbmVyJiBsaXN0ZW5lcikKIHsKLSAgICBpZiAoYXV0byogd2ViRGVidWdn
ZXJBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMud2ViRGVidWdnZXJBZ2VudCgpKQorICAgIGlm
IChhdXRvKiB3ZWJEZWJ1Z2dlckFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5lbmFibGVkV2Vi
RGVidWdnZXJBZ2VudCgpKQogICAgICAgICB3ZWJEZWJ1Z2dlckFnZW50LT53aWxsSGFuZGxlRXZl
bnQobGlzdGVuZXIpOwogCi0gICAgaWYgKEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQqIGRvbURl
YnVnZ2VyQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3RvckRPTURlYnVnZ2VyQWdl
bnQoKSkKKyAgICBpZiAoYXV0byogZG9tRGVidWdnZXJBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2Vu
dHMuZW5hYmxlZERPTURlYnVnZ2VyQWdlbnQoKSkKICAgICAgICAgZG9tRGVidWdnZXJBZ2VudC0+
d2lsbEhhbmRsZUV2ZW50KGV2ZW50LCBsaXN0ZW5lcik7CiB9CiAKIHZvaWQgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjpkaWRIYW5kbGVFdmVudEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5z
dHJ1bWVudGluZ0FnZW50cykKIHsKLSAgICBpZiAoYXV0byogd2ViRGVidWdnZXJBZ2VudCA9IGlu
c3RydW1lbnRpbmdBZ2VudHMud2ViRGVidWdnZXJBZ2VudCgpKQorICAgIGlmIChhdXRvKiB3ZWJE
ZWJ1Z2dlckFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5lbmFibGVkV2ViRGVidWdnZXJBZ2Vu
dCgpKQogICAgICAgICB3ZWJEZWJ1Z2dlckFnZW50LT5kaWREaXNwYXRjaEFzeW5jQ2FsbCgpOwog
Ci0gICAgaWYgKEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQqIGRvbURlYnVnZ2VyQWdlbnQgPSBp
bnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQoKSkKKyAgICBpZiAo
YXV0byogZG9tRGVidWdnZXJBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuZW5hYmxlZERPTURl
YnVnZ2VyQWdlbnQoKSkKICAgICAgICAgZG9tRGVidWdnZXJBZ2VudC0+ZGlkSGFuZGxlRXZlbnQo
KTsKIH0KIAogdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZERpc3BhdGNoRXZlbnRJ
bXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIGNvbnN0IEV2ZW50
JiBldmVudCkKIHsKLSAgICBpZiAoYXV0byogdGltZWxpbmVBZ2VudCA9IGluc3RydW1lbnRpbmdB
Z2VudHMudHJhY2tpbmdJbnNwZWN0b3JUaW1lbGluZUFnZW50KCkpCisgICAgaWYgKGF1dG8qIHRp
bWVsaW5lQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLnRyYWNraW5nVGltZWxpbmVBZ2VudCgp
KQogICAgICAgICB0aW1lbGluZUFnZW50LT5kaWREaXNwYXRjaEV2ZW50KGV2ZW50LmRlZmF1bHRQ
cmV2ZW50ZWQoKSk7CiB9CiAKIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsRGlz
cGF0Y2hFdmVudE9uV2luZG93SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5n
QWdlbnRzLCBjb25zdCBFdmVudCYgZXZlbnQsIERPTVdpbmRvdyYgd2luZG93KQogewotICAgIGlm
IChhdXRvKiB0aW1lbGluZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy50cmFja2luZ0luc3Bl
Y3RvclRpbWVsaW5lQWdlbnQoKSkKKyAgICBpZiAoYXV0byogdGltZWxpbmVBZ2VudCA9IGluc3Ry
dW1lbnRpbmdBZ2VudHMudHJhY2tpbmdUaW1lbGluZUFnZW50KCkpCiAgICAgICAgIHRpbWVsaW5l
QWdlbnQtPndpbGxEaXNwYXRjaEV2ZW50KGV2ZW50LCB3aW5kb3cuZnJhbWUoKSk7CiB9CiAKIHZv
aWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWREaXNwYXRjaEV2ZW50T25XaW5kb3dJbXBs
KEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIGNvbnN0IEV2ZW50JiBl
dmVudCkKIHsKLSAgICBpZiAoYXV0byogdGltZWxpbmVBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2Vu
dHMudHJhY2tpbmdJbnNwZWN0b3JUaW1lbGluZUFnZW50KCkpCisgICAgaWYgKGF1dG8qIHRpbWVs
aW5lQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLnRyYWNraW5nVGltZWxpbmVBZ2VudCgpKQog
ICAgICAgICB0aW1lbGluZUFnZW50LT5kaWREaXNwYXRjaEV2ZW50KGV2ZW50LmRlZmF1bHRQcmV2
ZW50ZWQoKSk7CiB9CiAKIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpldmVudERpZFJl
c2V0QWZ0ZXJEaXNwYXRjaEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0Fn
ZW50cywgY29uc3QgRXZlbnQmIGV2ZW50KQogewotICAgIGlmIChhdXRvKiBkb21BZ2VudCA9IGlu
c3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yRE9NQWdlbnQoKSkKKyAgICBpZiAoYXV0byogZG9t
QWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLnBlcnNpc3RlbnRET01BZ2VudCgpKQogICAgICAg
ICBkb21BZ2VudC0+ZXZlbnREaWRSZXNldEFmdGVyRGlzcGF0Y2goZXZlbnQpOwogfQogCiB2b2lk
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbEV2YWx1YXRlU2NyaXB0SW1wbChJbnN0cnVt
ZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBGcmFtZSYgZnJhbWUsIGNvbnN0IFN0
cmluZyYgdXJsLCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlcikKIHsKLSAgICBpZiAo
YXV0byogdGltZWxpbmVBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMudHJhY2tpbmdJbnNwZWN0
b3JUaW1lbGluZUFnZW50KCkpCisgICAgaWYgKGF1dG8qIHRpbWVsaW5lQWdlbnQgPSBpbnN0cnVt
ZW50aW5nQWdlbnRzLnRyYWNraW5nVGltZWxpbmVBZ2VudCgpKQogICAgICAgICB0aW1lbGluZUFn
ZW50LT53aWxsRXZhbHVhdGVTY3JpcHQodXJsLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIGZy
YW1lKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEV2YWx1YXRlU2Ny
aXB0SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBGcmFtZSYg
ZnJhbWUpCiB7Ci0gICAgaWYgKGF1dG8qIHRpbWVsaW5lQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdl
bnRzLnRyYWNraW5nSW5zcGVjdG9yVGltZWxpbmVBZ2VudCgpKQorICAgIGlmIChhdXRvKiB0aW1l
bGluZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy50cmFja2luZ1RpbWVsaW5lQWdlbnQoKSkK
ICAgICAgICAgdGltZWxpbmVBZ2VudC0+ZGlkRXZhbHVhdGVTY3JpcHQoZnJhbWUpOwogfQogCiB2
b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbEZpcmVUaW1lckltcGwoSW5zdHJ1bWVu
dGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgaW50IHRpbWVySWQsIGJvb2wgb25lU2hv
dCwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkKIHsKLSAgICBpZiAoYXV0byogd2Vi
RGVidWdnZXJBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMud2ViRGVidWdnZXJBZ2VudCgpKQor
ICAgIGlmIChhdXRvKiB3ZWJEZWJ1Z2dlckFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5lbmFi
bGVkV2ViRGVidWdnZXJBZ2VudCgpKQogICAgICAgICB3ZWJEZWJ1Z2dlckFnZW50LT53aWxsRGlz
cGF0Y2hBc3luY0NhbGwoSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6QXN5bmNDYWxsVHlwZTo6RE9N
VGltZXIsIHRpbWVySWQpOwotICAgIGlmIChhdXRvKiBkb21EZWJ1Z2dlckFnZW50ID0gaW5zdHJ1
bWVudGluZ0FnZW50cy5pbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50KCkpCisgICAgaWYgKGF1dG8q
IGRvbURlYnVnZ2VyQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmVuYWJsZWRET01EZWJ1Z2dl
ckFnZW50KCkpCiAgICAgICAgIGRvbURlYnVnZ2VyQWdlbnQtPndpbGxGaXJlVGltZXIob25lU2hv
dCk7Ci0gICAgaWYgKGF1dG8qIHRpbWVsaW5lQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLnRy
YWNraW5nSW5zcGVjdG9yVGltZWxpbmVBZ2VudCgpKQorICAgIGlmIChhdXRvKiB0aW1lbGluZUFn
ZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy50cmFja2luZ1RpbWVsaW5lQWdlbnQoKSkKICAgICAg
ICAgdGltZWxpbmVBZ2VudC0+d2lsbEZpcmVUaW1lcih0aW1lcklkLCBmcmFtZUZvclNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoY29udGV4dCkpOwogfQogCiB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6ZGlkRmlyZVRpbWVySW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5n
QWdlbnRzKQogewotICAgIGlmIChhdXRvKiB3ZWJEZWJ1Z2dlckFnZW50ID0gaW5zdHJ1bWVudGlu
Z0FnZW50cy53ZWJEZWJ1Z2dlckFnZW50KCkpCisgICAgaWYgKGF1dG8qIHdlYkRlYnVnZ2VyQWdl
bnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmVuYWJsZWRXZWJEZWJ1Z2dlckFnZW50KCkpCiAgICAg
ICAgIHdlYkRlYnVnZ2VyQWdlbnQtPmRpZERpc3BhdGNoQXN5bmNDYWxsKCk7Ci0gICAgaWYgKGF1
dG8qIHRpbWVsaW5lQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLnRyYWNraW5nSW5zcGVjdG9y
VGltZWxpbmVBZ2VudCgpKQorICAgIGlmIChhdXRvKiB0aW1lbGluZUFnZW50ID0gaW5zdHJ1bWVu
dGluZ0FnZW50cy50cmFja2luZ1RpbWVsaW5lQWdlbnQoKSkKICAgICAgICAgdGltZWxpbmVBZ2Vu
dC0+ZGlkRmlyZVRpbWVyKCk7CiB9CiAKIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpk
aWRJbnZhbGlkYXRlTGF5b3V0SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5n
QWdlbnRzLCBGcmFtZSYgZnJhbWUpCiB7Ci0gICAgaWYgKEluc3BlY3RvclRpbWVsaW5lQWdlbnQq
IHRpbWVsaW5lQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLnRyYWNraW5nSW5zcGVjdG9yVGlt
ZWxpbmVBZ2VudCgpKQorICAgIGlmIChhdXRvKiB0aW1lbGluZUFnZW50ID0gaW5zdHJ1bWVudGlu
Z0FnZW50cy50cmFja2luZ1RpbWVsaW5lQWdlbnQoKSkKICAgICAgICAgdGltZWxpbmVBZ2VudC0+
ZGlkSW52YWxpZGF0ZUxheW91dChmcmFtZSk7CiB9CiAKIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uOjp3aWxsTGF5b3V0SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5n
QWdlbnRzLCBGcmFtZSYgZnJhbWUpCiB7Ci0gICAgaWYgKGF1dG8qIHRpbWVsaW5lQWdlbnQgPSBp
bnN0cnVtZW50aW5nQWdlbnRzLnRyYWNraW5nSW5zcGVjdG9yVGltZWxpbmVBZ2VudCgpKQorICAg
IGlmIChhdXRvKiB0aW1lbGluZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy50cmFja2luZ1Rp
bWVsaW5lQWdlbnQoKSkKICAgICAgICAgdGltZWxpbmVBZ2VudC0+d2lsbExheW91dChmcmFtZSk7
CiB9CiAKIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRMYXlvdXRJbXBsKEluc3Ry
dW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIFJlbmRlck9iamVjdCYgcm9vdCkK
IHsKLSAgICBpZiAoYXV0byogdGltZWxpbmVBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMudHJh
Y2tpbmdJbnNwZWN0b3JUaW1lbGluZUFnZW50KCkpCisgICAgaWYgKGF1dG8qIHRpbWVsaW5lQWdl
bnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLnRyYWNraW5nVGltZWxpbmVBZ2VudCgpKQogICAgICAg
ICB0aW1lbGluZUFnZW50LT5kaWRMYXlvdXQocm9vdCk7Ci0gICAgaWYgKGF1dG8qIHBhZ2VBZ2Vu
dCA9IGluc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yUGFnZUFnZW50KCkpCisgICAgaWYgKGF1
dG8qIHBhZ2VBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuZW5hYmxlZFBhZ2VBZ2VudCgpKQog
ICAgICAgICBwYWdlQWdlbnQtPmRpZExheW91dCgpOwogfQogCiB2b2lkIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6d2lsbENvbXBvc2l0ZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1
bWVudGluZ0FnZW50cywgRnJhbWUmIGZyYW1lKQogewotICAgIGlmIChJbnNwZWN0b3JUaW1lbGlu
ZUFnZW50KiB0aW1lbGluZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy50cmFja2luZ0luc3Bl
Y3RvclRpbWVsaW5lQWdlbnQoKSkKKyAgICBpZiAoYXV0byogdGltZWxpbmVBZ2VudCA9IGluc3Ry
dW1lbnRpbmdBZ2VudHMudHJhY2tpbmdUaW1lbGluZUFnZW50KCkpCiAgICAgICAgIHRpbWVsaW5l
QWdlbnQtPndpbGxDb21wb3NpdGUoZnJhbWUpOwogfQogCiB2b2lkIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6ZGlkQ29tcG9zaXRlSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50
aW5nQWdlbnRzKQogewotICAgIGlmIChJbnNwZWN0b3JUaW1lbGluZUFnZW50KiB0aW1lbGluZUFn
ZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy50cmFja2luZ0luc3BlY3RvclRpbWVsaW5lQWdlbnQo
KSkKKyAgICBpZiAoYXV0byogdGltZWxpbmVBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMudHJh
Y2tpbmdUaW1lbGluZUFnZW50KCkpCiAgICAgICAgIHRpbWVsaW5lQWdlbnQtPmRpZENvbXBvc2l0
ZSgpOwogfQogCiB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFBhaW50SW1wbChJ
bnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBSZW5kZXJPYmplY3QmIHJl
bmRlcmVyKQogewotICAgIGlmIChJbnNwZWN0b3JUaW1lbGluZUFnZW50KiB0aW1lbGluZUFnZW50
ID0gaW5zdHJ1bWVudGluZ0FnZW50cy50cmFja2luZ0luc3BlY3RvclRpbWVsaW5lQWdlbnQoKSkK
KyAgICBpZiAoYXV0byogdGltZWxpbmVBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMudHJhY2tp
bmdUaW1lbGluZUFnZW50KCkpCiAgICAgICAgIHRpbWVsaW5lQWdlbnQtPndpbGxQYWludChyZW5k
ZXJlci5mcmFtZSgpKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFBh
aW50SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBSZW5kZXJP
YmplY3QmIHJlbmRlcmVyLCBjb25zdCBMYXlvdXRSZWN0JiByZWN0KQogewotICAgIGlmIChJbnNw
ZWN0b3JUaW1lbGluZUFnZW50KiB0aW1lbGluZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy50
cmFja2luZ0luc3BlY3RvclRpbWVsaW5lQWdlbnQoKSkKKyAgICBpZiAoYXV0byogdGltZWxpbmVB
Z2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMudHJhY2tpbmdUaW1lbGluZUFnZW50KCkpCiAgICAg
ICAgIHRpbWVsaW5lQWdlbnQtPmRpZFBhaW50KHJlbmRlcmVyLCByZWN0KTsKIAotICAgIGlmIChJ
bnNwZWN0b3JQYWdlQWdlbnQqIHBhZ2VBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVj
dG9yUGFnZUFnZW50KCkpCisgICAgaWYgKGF1dG8qIHBhZ2VBZ2VudCA9IGluc3RydW1lbnRpbmdB
Z2VudHMuZW5hYmxlZFBhZ2VBZ2VudCgpKQogICAgICAgICBwYWdlQWdlbnQtPmRpZFBhaW50KHJl
bmRlcmVyLCByZWN0KTsKIH0KIAogdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxS
ZWNhbGN1bGF0ZVN0eWxlSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdl
bnRzLCBEb2N1bWVudCYgZG9jdW1lbnQpCiB7Ci0gICAgaWYgKGF1dG8qIHRpbWVsaW5lQWdlbnQg
PSBpbnN0cnVtZW50aW5nQWdlbnRzLnRyYWNraW5nSW5zcGVjdG9yVGltZWxpbmVBZ2VudCgpKQor
ICAgIGlmIChhdXRvKiB0aW1lbGluZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy50cmFja2lu
Z1RpbWVsaW5lQWdlbnQoKSkKICAgICAgICAgdGltZWxpbmVBZ2VudC0+d2lsbFJlY2FsY3VsYXRl
U3R5bGUoZG9jdW1lbnQuZnJhbWUoKSk7Ci0gICAgaWYgKEluc3BlY3Rvck5ldHdvcmtBZ2VudCog
bmV0d29ya0FnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JOZXR3b3JrQWdlbnQo
KSkKKyAgICBpZiAoYXV0byogbmV0d29ya0FnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5lbmFi
bGVkTmV0d29ya0FnZW50KCkpCiAgICAgICAgIG5ldHdvcmtBZ2VudC0+d2lsbFJlY2FsY3VsYXRl
U3R5bGUoKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlY2FsY3Vs
YXRlU3R5bGVJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMpCiB7
Ci0gICAgaWYgKGF1dG8qIHRpbWVsaW5lQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLnRyYWNr
aW5nSW5zcGVjdG9yVGltZWxpbmVBZ2VudCgpKQorICAgIGlmIChhdXRvKiB0aW1lbGluZUFnZW50
ID0gaW5zdHJ1bWVudGluZ0FnZW50cy50cmFja2luZ1RpbWVsaW5lQWdlbnQoKSkKICAgICAgICAg
dGltZWxpbmVBZ2VudC0+ZGlkUmVjYWxjdWxhdGVTdHlsZSgpOwotICAgIGlmIChJbnNwZWN0b3JO
ZXR3b3JrQWdlbnQqIG5ldHdvcmtBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9y
TmV0d29ya0FnZW50KCkpCisgICAgaWYgKGF1dG8qIG5ldHdvcmtBZ2VudCA9IGluc3RydW1lbnRp
bmdBZ2VudHMuZW5hYmxlZE5ldHdvcmtBZ2VudCgpKQogICAgICAgICBuZXR3b3JrQWdlbnQtPmRp
ZFJlY2FsY3VsYXRlU3R5bGUoKTsKLSAgICBpZiAoSW5zcGVjdG9yUGFnZUFnZW50KiBwYWdlQWdl
bnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3RvclBhZ2VBZ2VudCgpKQorICAgIGlmIChh
dXRvKiBwYWdlQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmVuYWJsZWRQYWdlQWdlbnQoKSkK
ICAgICAgICAgcGFnZUFnZW50LT5kaWRSZWNhbGN1bGF0ZVN0eWxlKCk7CiB9CiAKIHZvaWQgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRTY2hlZHVsZVN0eWxlUmVjYWxjdWxhdGlvbkltcGwo
SW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgRG9jdW1lbnQmIGRvY3Vt
ZW50KQogewotICAgIGlmIChJbnNwZWN0b3JUaW1lbGluZUFnZW50KiB0aW1lbGluZUFnZW50ID0g
aW5zdHJ1bWVudGluZ0FnZW50cy50cmFja2luZ0luc3BlY3RvclRpbWVsaW5lQWdlbnQoKSkKKyAg
ICBpZiAoYXV0byogdGltZWxpbmVBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMudHJhY2tpbmdU
aW1lbGluZUFnZW50KCkpCiAgICAgICAgIHRpbWVsaW5lQWdlbnQtPmRpZFNjaGVkdWxlU3R5bGVS
ZWNhbGN1bGF0aW9uKGRvY3VtZW50LmZyYW1lKCkpOwotICAgIGlmIChJbnNwZWN0b3JOZXR3b3Jr
QWdlbnQqIG5ldHdvcmtBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yTmV0d29y
a0FnZW50KCkpCisgICAgaWYgKGF1dG8qIG5ldHdvcmtBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2Vu
dHMuZW5hYmxlZE5ldHdvcmtBZ2VudCgpKQogICAgICAgICBuZXR3b3JrQWdlbnQtPmRpZFNjaGVk
dWxlU3R5bGVSZWNhbGN1bGF0aW9uKGRvY3VtZW50KTsKIH0KIAogdm9pZCBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OmFwcGx5VXNlckFnZW50T3ZlcnJpZGVJbXBsKEluc3RydW1lbnRpbmdBZ2Vu
dHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIFN0cmluZyYgdXNlckFnZW50KQogewotICAgIGlmIChJ
bnNwZWN0b3JQYWdlQWdlbnQqIHBhZ2VBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVj
dG9yUGFnZUFnZW50KCkpCisgICAgaWYgKGF1dG8qIHBhZ2VBZ2VudCA9IGluc3RydW1lbnRpbmdB
Z2VudHMuZW5hYmxlZFBhZ2VBZ2VudCgpKQogICAgICAgICBwYWdlQWdlbnQtPmFwcGx5VXNlckFn
ZW50T3ZlcnJpZGUodXNlckFnZW50KTsKIH0KIAogdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OmFwcGx5RW11bGF0ZWRNZWRpYUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVu
dGluZ0FnZW50cywgU3RyaW5nJiBtZWRpYSkKIHsKLSAgICBpZiAoSW5zcGVjdG9yUGFnZUFnZW50
KiBwYWdlQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3RvclBhZ2VBZ2VudCgpKQor
ICAgIGlmIChhdXRvKiBwYWdlQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmVuYWJsZWRQYWdl
QWdlbnQoKSkKICAgICAgICAgcGFnZUFnZW50LT5hcHBseUVtdWxhdGVkTWVkaWEobWVkaWEpOwog
fQogCiB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFNlbmRSZXF1ZXN0SW1wbChJ
bnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCB1bnNpZ25lZCBsb25nIGlk
ZW50aWZpZXIsIERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIFJlc291cmNlUmVxdWVzdCYgcmVxdWVz
dCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSkKIHsKLSAgICBpZiAo
SW5zcGVjdG9yTmV0d29ya0FnZW50KiBuZXR3b3JrQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRz
Lmluc3BlY3Rvck5ldHdvcmtBZ2VudCgpKQorICAgIGlmIChhdXRvKiBuZXR3b3JrQWdlbnQgPSBp
bnN0cnVtZW50aW5nQWdlbnRzLmVuYWJsZWROZXR3b3JrQWdlbnQoKSkKICAgICAgICAgbmV0d29y
a0FnZW50LT53aWxsU2VuZFJlcXVlc3QoaWRlbnRpZmllciwgbG9hZGVyLCByZXF1ZXN0LCByZWRp
cmVjdFJlc3BvbnNlKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxT
ZW5kUmVxdWVzdE9mVHlwZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0Fn
ZW50cywgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBEb2N1bWVudExvYWRlciogbG9hZGVyLCBS
ZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIExvYWRUeXBlIGxvYWRUeXBlKQogewotICAgIGlmIChJ
bnNwZWN0b3JOZXR3b3JrQWdlbnQqIG5ldHdvcmtBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMu
aW5zcGVjdG9yTmV0d29ya0FnZW50KCkpCisgICAgaWYgKGF1dG8qIG5ldHdvcmtBZ2VudCA9IGlu
c3RydW1lbnRpbmdBZ2VudHMuZW5hYmxlZE5ldHdvcmtBZ2VudCgpKQogICAgICAgICBuZXR3b3Jr
QWdlbnQtPndpbGxTZW5kUmVxdWVzdE9mVHlwZShpZGVudGlmaWVyLCBsb2FkZXIsIHJlcXVlc3Qs
IGxvYWRUeXBlKTsKIH0KIApAQCAtNTg0LDcgKzU4NCw3IEBAIHZvaWQgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjpkaWRMb2FkUmVzb3VyY2VGcm9tTWVtb3J5Q2FjaGVJbXBsKEluc3RydW1lbnRp
bmdBCiAgICAgaWYgKCFsb2FkZXIgfHwgIWNhY2hlZFJlc291cmNlKQogICAgICAgICByZXR1cm47
CiAKLSAgICBpZiAoSW5zcGVjdG9yTmV0d29ya0FnZW50KiBuZXR3b3JrQWdlbnQgPSBpbnN0cnVt
ZW50aW5nQWdlbnRzLmluc3BlY3Rvck5ldHdvcmtBZ2VudCgpKQorICAgIGlmIChhdXRvKiBuZXR3
b3JrQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmVuYWJsZWROZXR3b3JrQWdlbnQoKSkKICAg
ICAgICAgbmV0d29ya0FnZW50LT5kaWRMb2FkUmVzb3VyY2VGcm9tTWVtb3J5Q2FjaGUobG9hZGVy
LCAqY2FjaGVkUmVzb3VyY2UpOwogfQogCkBAIC01OTMsMjcgKzU5MywyNyBAQCB2b2lkIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZVJlc291cmNlUmVzcG9uc2VJbXBsKEluc3Ry
dW1lbnRpbmdBZ2VudAogICAgIGlmIChMSUtFTFkoIWluc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVj
dG9yRW52aXJvbm1lbnQoKS5kZXZlbG9wZXJFeHRyYXNFbmFibGVkKCkpKQogICAgICAgICByZXR1
cm47CiAKLSAgICBpZiAoSW5zcGVjdG9yTmV0d29ya0FnZW50KiBuZXR3b3JrQWdlbnQgPSBpbnN0
cnVtZW50aW5nQWdlbnRzLmluc3BlY3Rvck5ldHdvcmtBZ2VudCgpKQorICAgIGlmIChhdXRvKiBu
ZXR3b3JrQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmVuYWJsZWROZXR3b3JrQWdlbnQoKSkK
ICAgICAgICAgbmV0d29ya0FnZW50LT5kaWRSZWNlaXZlUmVzcG9uc2UoaWRlbnRpZmllciwgbG9h
ZGVyLCByZXNwb25zZSwgcmVzb3VyY2VMb2FkZXIpOwotICAgIGlmIChXZWJDb25zb2xlQWdlbnQq
IGNvbnNvbGVBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMud2ViQ29uc29sZUFnZW50KCkpCisg
ICAgaWYgKGF1dG8qIGNvbnNvbGVBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMud2ViQ29uc29s
ZUFnZW50KCkpCiAgICAgICAgIGNvbnNvbGVBZ2VudC0+ZGlkUmVjZWl2ZVJlc3BvbnNlKGlkZW50
aWZpZXIsIHJlc3BvbnNlKTsgLy8gVGhpcyBzaG91bGQgY29tZSBBRlRFUiByZXNvdXJjZSBub3Rp
ZmljYXRpb24sIGZyb250LWVuZCByZWxpZXMgb24gdGhpcy4KIH0KIAogdm9pZCBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246OmRpZFJlY2VpdmVUaHJlYWRhYmxlTG9hZGVyUmVzcG9uc2VJbXBsKElu
c3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIERvY3VtZW50VGhyZWFkYWJs
ZUxvYWRlciYgZG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLCB1bnNpZ25lZCBsb25nIGlkZW50aWZp
ZXIpCiB7Ci0gICAgaWYgKEluc3BlY3Rvck5ldHdvcmtBZ2VudCogbmV0d29ya0FnZW50ID0gaW5z
dHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JOZXR3b3JrQWdlbnQoKSkKKyAgICBpZiAoYXV0byog
bmV0d29ya0FnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5lbmFibGVkTmV0d29ya0FnZW50KCkp
CiAgICAgICAgIG5ldHdvcmtBZ2VudC0+ZGlkUmVjZWl2ZVRocmVhZGFibGVMb2FkZXJSZXNwb25z
ZShpZGVudGlmaWVyLCBkb2N1bWVudFRocmVhZGFibGVMb2FkZXIpOwogfQogCiB2b2lkIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZURhdGFJbXBsKEluc3RydW1lbnRpbmdBZ2Vu
dHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3Qg
Y2hhciogZGF0YSwgaW50IGRhdGFMZW5ndGgsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkKIHsKLSAg
ICBpZiAoSW5zcGVjdG9yTmV0d29ya0FnZW50KiBuZXR3b3JrQWdlbnQgPSBpbnN0cnVtZW50aW5n
QWdlbnRzLmluc3BlY3Rvck5ldHdvcmtBZ2VudCgpKQorICAgIGlmIChhdXRvKiBuZXR3b3JrQWdl
bnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmVuYWJsZWROZXR3b3JrQWdlbnQoKSkKICAgICAgICAg
bmV0d29ya0FnZW50LT5kaWRSZWNlaXZlRGF0YShpZGVudGlmaWVyLCBkYXRhLCBkYXRhTGVuZ3Ro
LCBlbmNvZGVkRGF0YUxlbmd0aCk7CiB9CiAKIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
OjpkaWRGaW5pc2hMb2FkaW5nSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5n
QWdlbnRzLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIERvY3VtZW50TG9hZGVyKiBsb2FkZXIs
IGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbmV0d29ya0xvYWRNZXRyaWNzLCBSZXNvdXJjZUxv
YWRlciogcmVzb3VyY2VMb2FkZXIpCiB7Ci0gICAgaWYgKEluc3BlY3Rvck5ldHdvcmtBZ2VudCog
bmV0d29ya0FnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JOZXR3b3JrQWdlbnQo
KSkKKyAgICBpZiAoYXV0byogbmV0d29ya0FnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5lbmFi
bGVkTmV0d29ya0FnZW50KCkpCiAgICAgICAgIG5ldHdvcmtBZ2VudC0+ZGlkRmluaXNoTG9hZGlu
ZyhpZGVudGlmaWVyLCBsb2FkZXIsIG5ldHdvcmtMb2FkTWV0cmljcywgcmVzb3VyY2VMb2FkZXIp
OwogfQogCkBAIC02MjIsMzkgKzYyMiwzOSBAQCB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6ZGlkRmFpbExvYWRpbmdJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbgogICAg
IGlmIChMSUtFTFkoIWluc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yRW52aXJvbm1lbnQoKS5k
ZXZlbG9wZXJFeHRyYXNFbmFibGVkKCkpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoSW5z
cGVjdG9yTmV0d29ya0FnZW50KiBuZXR3b3JrQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmlu
c3BlY3Rvck5ldHdvcmtBZ2VudCgpKQorICAgIGlmIChhdXRvKiBuZXR3b3JrQWdlbnQgPSBpbnN0
cnVtZW50aW5nQWdlbnRzLmVuYWJsZWROZXR3b3JrQWdlbnQoKSkKICAgICAgICAgbmV0d29ya0Fn
ZW50LT5kaWRGYWlsTG9hZGluZyhpZGVudGlmaWVyLCBsb2FkZXIsIGVycm9yKTsKLSAgICBpZiAo
V2ViQ29uc29sZUFnZW50KiBjb25zb2xlQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLndlYkNv
bnNvbGVBZ2VudCgpKQorICAgIGlmIChhdXRvKiBjb25zb2xlQWdlbnQgPSBpbnN0cnVtZW50aW5n
QWdlbnRzLndlYkNvbnNvbGVBZ2VudCgpKQogICAgICAgICBjb25zb2xlQWdlbnQtPmRpZEZhaWxM
b2FkaW5nKGlkZW50aWZpZXIsIGVycm9yKTsgLy8gVGhpcyBzaG91bGQgY29tZSBBRlRFUiByZXNv
dXJjZSBub3RpZmljYXRpb24sIGZyb250LWVuZCByZWxpZXMgb24gdGhpcy4KIH0KIAogdm9pZCBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxMb2FkWEhSU3luY2hyb25vdXNseUltcGwoSW5z
dHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cykKIHsKLSAgICBpZiAoSW5zcGVj
dG9yTmV0d29ya0FnZW50KiBuZXR3b3JrQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmluc3Bl
Y3Rvck5ldHdvcmtBZ2VudCgpKQorICAgIGlmIChhdXRvKiBuZXR3b3JrQWdlbnQgPSBpbnN0cnVt
ZW50aW5nQWdlbnRzLmVuYWJsZWROZXR3b3JrQWdlbnQoKSkKICAgICAgICAgbmV0d29ya0FnZW50
LT53aWxsTG9hZFhIUlN5bmNocm9ub3VzbHkoKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OmRpZExvYWRYSFJTeW5jaHJvbm91c2x5SW1wbChJbnN0cnVtZW50aW5nQWdlbnRz
JiBpbnN0cnVtZW50aW5nQWdlbnRzKQogewotICAgIGlmIChJbnNwZWN0b3JOZXR3b3JrQWdlbnQq
IG5ldHdvcmtBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yTmV0d29ya0FnZW50
KCkpCisgICAgaWYgKGF1dG8qIG5ldHdvcmtBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuZW5h
YmxlZE5ldHdvcmtBZ2VudCgpKQogICAgICAgICBuZXR3b3JrQWdlbnQtPmRpZExvYWRYSFJTeW5j
aHJvbm91c2x5KCk7CiB9CiAKIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzY3JpcHRJ
bXBvcnRlZEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgdW5z
aWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVN0cmluZykKIHsKLSAg
ICBpZiAoSW5zcGVjdG9yTmV0d29ya0FnZW50KiBuZXR3b3JrQWdlbnQgPSBpbnN0cnVtZW50aW5n
QWdlbnRzLmluc3BlY3Rvck5ldHdvcmtBZ2VudCgpKQorICAgIGlmIChhdXRvKiBuZXR3b3JrQWdl
bnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmVuYWJsZWROZXR3b3JrQWdlbnQoKSkKICAgICAgICAg
bmV0d29ya0FnZW50LT5zZXRJbml0aWFsU2NyaXB0Q29udGVudChpZGVudGlmaWVyLCBzb3VyY2VT
dHJpbmcpOwogfQogCiB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6c2NyaXB0RXhlY3V0
aW9uQmxvY2tlZEJ5Q1NQSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdl
bnRzLCBjb25zdCBTdHJpbmcmIGRpcmVjdGl2ZVRleHQpCiB7Ci0gICAgaWYgKGF1dG8qIHdlYkRl
YnVnZ2VyQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLndlYkRlYnVnZ2VyQWdlbnQoKSkKKyAg
ICBpZiAoYXV0byogd2ViRGVidWdnZXJBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuZW5hYmxl
ZFdlYkRlYnVnZ2VyQWdlbnQoKSkKICAgICAgICAgd2ViRGVidWdnZXJBZ2VudC0+c2NyaXB0RXhl
Y3V0aW9uQmxvY2tlZEJ5Q1NQKGRpcmVjdGl2ZVRleHQpOwogfQogCiB2b2lkIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZVNjcmlwdFJlc3BvbnNlSW1wbChJbnN0cnVtZW50aW5n
QWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIpCiB7
Ci0gICAgaWYgKEluc3BlY3Rvck5ldHdvcmtBZ2VudCogbmV0d29ya0FnZW50ID0gaW5zdHJ1bWVu
dGluZ0FnZW50cy5pbnNwZWN0b3JOZXR3b3JrQWdlbnQoKSkKKyAgICBpZiAoYXV0byogbmV0d29y
a0FnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5lbmFibGVkTmV0d29ya0FnZW50KCkpCiAgICAg
ICAgIG5ldHdvcmtBZ2VudC0+ZGlkUmVjZWl2ZVNjcmlwdFJlc3BvbnNlKGlkZW50aWZpZXIpOwog
fQogCkBAIC02NjMsNyArNjYzLDcgQEAgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRv
bUNvbnRlbnRMb2FkZWRFdmVudEZpcmVkSW1wbChJbnN0cnVtZW50aW5nQWdlbnQKICAgICBpZiAo
IWZyYW1lLmlzTWFpbkZyYW1lKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChJbnNwZWN0
b3JQYWdlQWdlbnQqIHBhZ2VBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yUGFn
ZUFnZW50KCkpCisgICAgaWYgKGF1dG8qIHBhZ2VBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMu
ZW5hYmxlZFBhZ2VBZ2VudCgpKQogICAgICAgICBwYWdlQWdlbnQtPmRvbUNvbnRlbnRFdmVudEZp
cmVkKCk7CiB9CiAKQEAgLTY3MiwxMyArNjcyLDEzIEBAIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uOjpsb2FkRXZlbnRGaXJlZEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVu
CiAgICAgaWYgKCFmcmFtZSB8fCAhZnJhbWUtPmlzTWFpbkZyYW1lKCkpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIGlmIChJbnNwZWN0b3JQYWdlQWdlbnQqIHBhZ2VBZ2VudCA9IGluc3RydW1lbnRp
bmdBZ2VudHMuaW5zcGVjdG9yUGFnZUFnZW50KCkpCisgICAgaWYgKGF1dG8qIHBhZ2VBZ2VudCA9
IGluc3RydW1lbnRpbmdBZ2VudHMuZW5hYmxlZFBhZ2VBZ2VudCgpKQogICAgICAgICBwYWdlQWdl
bnQtPmxvYWRFdmVudEZpcmVkKCk7CiB9CiAKIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
OjpmcmFtZURldGFjaGVkRnJvbVBhcmVudEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1
bWVudGluZ0FnZW50cywgRnJhbWUmIGZyYW1lKQogewotICAgIGlmIChJbnNwZWN0b3JQYWdlQWdl
bnQqIHBhZ2VBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yUGFnZUFnZW50KCkp
CisgICAgaWYgKGF1dG8qIHBhZ2VBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuZW5hYmxlZFBh
Z2VBZ2VudCgpKQogICAgICAgICBwYWdlQWdlbnQtPmZyYW1lRGV0YWNoZWQoZnJhbWUpOwogfQog
CkBAIC02OTYsMTA3ICs2OTYsMTA3IEBAIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpk
aWRDb21taXRMb2FkSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50CiAgICAgQVNT
RVJUKGxvYWRlci0+ZnJhbWUoKSA9PSAmZnJhbWUpOwogCiAgICAgaWYgKGZyYW1lLmlzTWFpbkZy
YW1lKCkpIHsKLSAgICAgICAgaWYgKFdlYkNvbnNvbGVBZ2VudCogY29uc29sZUFnZW50ID0gaW5z
dHJ1bWVudGluZ0FnZW50cy53ZWJDb25zb2xlQWdlbnQoKSkKKyAgICAgICAgaWYgKGF1dG8qIGNv
bnNvbGVBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMud2ViQ29uc29sZUFnZW50KCkpCiAgICAg
ICAgICAgICBjb25zb2xlQWdlbnQtPnJlc2V0KCk7CiAKLSAgICAgICAgaWYgKEluc3BlY3Rvck5l
dHdvcmtBZ2VudCogbmV0d29ya0FnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JO
ZXR3b3JrQWdlbnQoKSkKKyAgICAgICAgaWYgKGF1dG8qIG5ldHdvcmtBZ2VudCA9IGluc3RydW1l
bnRpbmdBZ2VudHMuZW5hYmxlZE5ldHdvcmtBZ2VudCgpKQogICAgICAgICAgICAgbmV0d29ya0Fn
ZW50LT5tYWluRnJhbWVOYXZpZ2F0ZWQoKmxvYWRlcik7CiAKLSAgICAgICAgaWYgKEluc3BlY3Rv
ckNTU0FnZW50KiBjc3NBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yQ1NTQWdl
bnQoKSkKKyAgICAgICAgaWYgKGF1dG8qIGNzc0FnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5l
bmFibGVkQ1NTQWdlbnQoKSkKICAgICAgICAgICAgIGNzc0FnZW50LT5yZXNldCgpOwogCi0gICAg
ICAgIGlmIChhdXRvKiBkYXRhYmFzZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0
b3JEYXRhYmFzZUFnZW50KCkpCisgICAgICAgIGlmIChhdXRvKiBkYXRhYmFzZUFnZW50ID0gaW5z
dHJ1bWVudGluZ0FnZW50cy5lbmFibGVkRGF0YWJhc2VBZ2VudCgpKQogICAgICAgICAgICAgZGF0
YWJhc2VBZ2VudC0+ZGlkQ29tbWl0TG9hZCgpOwogCi0gICAgICAgIGlmIChJbnNwZWN0b3JET01B
Z2VudCogZG9tQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3RvckRPTUFnZW50KCkp
CisgICAgICAgIGlmIChhdXRvKiBkb21BZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMucGVyc2lz
dGVudERPTUFnZW50KCkpCiAgICAgICAgICAgICBkb21BZ2VudC0+c2V0RG9jdW1lbnQoZnJhbWUu
ZG9jdW1lbnQoKSk7CiAKLSAgICAgICAgaWYgKEluc3BlY3RvckxheWVyVHJlZUFnZW50KiBsYXll
clRyZWVBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQo
KSkKKyAgICAgICAgaWYgKGF1dG8qIGxheWVyVHJlZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50
cy5lbmFibGVkTGF5ZXJUcmVlQWdlbnQoKSkKICAgICAgICAgICAgIGxheWVyVHJlZUFnZW50LT5y
ZXNldCgpOwogCi0gICAgICAgIGlmIChhdXRvKiBwYWdlRGVidWdnZXJBZ2VudCA9IGluc3RydW1l
bnRpbmdBZ2VudHMucGFnZURlYnVnZ2VyQWdlbnQoKSkKKyAgICAgICAgaWYgKGF1dG8qIHBhZ2VE
ZWJ1Z2dlckFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5lbmFibGVkUGFnZURlYnVnZ2VyQWdl
bnQoKSkKICAgICAgICAgICAgIHBhZ2VEZWJ1Z2dlckFnZW50LT5tYWluRnJhbWVOYXZpZ2F0ZWQo
KTsKIAotICAgICAgICBpZiAoUGFnZUhlYXBBZ2VudCogcGFnZUhlYXBBZ2VudCA9IGluc3RydW1l
bnRpbmdBZ2VudHMucGFnZUhlYXBBZ2VudCgpKQotICAgICAgICAgICAgcGFnZUhlYXBBZ2VudC0+
bWFpbkZyYW1lTmF2aWdhdGVkKCk7CisgICAgICAgIGlmIChhdXRvKiBlbmFibGVkUGFnZUhlYXBB
Z2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuZW5hYmxlZFBhZ2VIZWFwQWdlbnQoKSkKKyAgICAg
ICAgICAgIGVuYWJsZWRQYWdlSGVhcEFnZW50LT5tYWluRnJhbWVOYXZpZ2F0ZWQoKTsKICAgICB9
CiAKLSAgICBpZiAoYXV0byogcGFnZVJ1bnRpbWVBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMu
cGFnZVJ1bnRpbWVBZ2VudCgpKQorICAgIGlmIChhdXRvKiBwYWdlUnVudGltZUFnZW50ID0gaW5z
dHJ1bWVudGluZ0FnZW50cy5lbmFibGVkUGFnZVJ1bnRpbWVBZ2VudCgpKQogICAgICAgICBwYWdl
UnVudGltZUFnZW50LT5mcmFtZU5hdmlnYXRlZChmcmFtZSk7CiAKLSAgICBpZiAoSW5zcGVjdG9y
Q2FudmFzQWdlbnQqIGNhbnZhc0FnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JD
YW52YXNBZ2VudCgpKQorICAgIGlmIChhdXRvKiBjYW52YXNBZ2VudCA9IGluc3RydW1lbnRpbmdB
Z2VudHMuZW5hYmxlZENhbnZhc0FnZW50KCkpCiAgICAgICAgIGNhbnZhc0FnZW50LT5mcmFtZU5h
dmlnYXRlZChmcmFtZSk7CiAKLSAgICBpZiAoYXV0byogYW5pbWF0aW9uQWdlbnQgPSBpbnN0cnVt
ZW50aW5nQWdlbnRzLmVuYWJsZWRJbnNwZWN0b3JBbmltYXRpb25BZ2VudCgpKQorICAgIGlmIChh
dXRvKiBhbmltYXRpb25BZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuZW5hYmxlZEFuaW1hdGlv
bkFnZW50KCkpCiAgICAgICAgIGFuaW1hdGlvbkFnZW50LT5mcmFtZU5hdmlnYXRlZChmcmFtZSk7
CiAKLSAgICBpZiAoSW5zcGVjdG9yRE9NQWdlbnQqIGRvbUFnZW50ID0gaW5zdHJ1bWVudGluZ0Fn
ZW50cy5pbnNwZWN0b3JET01BZ2VudCgpKQorICAgIGlmIChhdXRvKiBkb21BZ2VudCA9IGluc3Ry
dW1lbnRpbmdBZ2VudHMucGVyc2lzdGVudERPTUFnZW50KCkpCiAgICAgICAgIGRvbUFnZW50LT5k
aWRDb21taXRMb2FkKGZyYW1lLmRvY3VtZW50KCkpOwogCi0gICAgaWYgKEluc3BlY3RvclBhZ2VB
Z2VudCogcGFnZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JQYWdlQWdlbnQo
KSkKKyAgICBpZiAoYXV0byogcGFnZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5lbmFibGVk
UGFnZUFnZW50KCkpCiAgICAgICAgIHBhZ2VBZ2VudC0+ZnJhbWVOYXZpZ2F0ZWQoZnJhbWUpOwog
CiAgICAgaWYgKGZyYW1lLmlzTWFpbkZyYW1lKCkpIHsKLSAgICAgICAgaWYgKEluc3BlY3RvclRp
bWVsaW5lQWdlbnQqIHRpbWVsaW5lQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLnRyYWNraW5n
SW5zcGVjdG9yVGltZWxpbmVBZ2VudCgpKQorICAgICAgICBpZiAoYXV0byogdGltZWxpbmVBZ2Vu
dCA9IGluc3RydW1lbnRpbmdBZ2VudHMudHJhY2tpbmdUaW1lbGluZUFnZW50KCkpCiAgICAgICAg
ICAgICB0aW1lbGluZUFnZW50LT5tYWluRnJhbWVOYXZpZ2F0ZWQoKTsKICAgICB9CiB9CiAKIHZv
aWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpmcmFtZURvY3VtZW50VXBkYXRlZEltcGwoSW5z
dHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgRnJhbWUmIGZyYW1lKQogewot
ICAgIGlmIChJbnNwZWN0b3JET01BZ2VudCogZG9tQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRz
Lmluc3BlY3RvckRPTUFnZW50KCkpCisgICAgaWYgKGF1dG8qIGRvbUFnZW50ID0gaW5zdHJ1bWVu
dGluZ0FnZW50cy5wZXJzaXN0ZW50RE9NQWdlbnQoKSkKICAgICAgICAgZG9tQWdlbnQtPmZyYW1l
RG9jdW1lbnRVcGRhdGVkKGZyYW1lKTsKIAotICAgIGlmIChhdXRvKiBwYWdlRE9NRGVidWdnZXJB
Z2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMucGFnZURPTURlYnVnZ2VyQWdlbnQoKSkKKyAgICBp
ZiAoYXV0byogcGFnZURPTURlYnVnZ2VyQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmVuYWJs
ZWRQYWdlRE9NRGVidWdnZXJBZ2VudCgpKQogICAgICAgICBwYWdlRE9NRGVidWdnZXJBZ2VudC0+
ZnJhbWVEb2N1bWVudFVwZGF0ZWQoZnJhbWUpOwogfQogCiB2b2lkIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6bG9hZGVyRGV0YWNoZWRGcm9tRnJhbWVJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMm
IGluc3RydW1lbnRpbmdBZ2VudHMsIERvY3VtZW50TG9hZGVyJiBsb2FkZXIpCiB7Ci0gICAgaWYg
KEluc3BlY3RvclBhZ2VBZ2VudCogaW5zcGVjdG9yUGFnZUFnZW50ID0gaW5zdHJ1bWVudGluZ0Fn
ZW50cy5pbnNwZWN0b3JQYWdlQWdlbnQoKSkKKyAgICBpZiAoYXV0byogaW5zcGVjdG9yUGFnZUFn
ZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5lbmFibGVkUGFnZUFnZW50KCkpCiAgICAgICAgIGlu
c3BlY3RvclBhZ2VBZ2VudC0+bG9hZGVyRGV0YWNoZWRGcm9tRnJhbWUobG9hZGVyKTsKIH0KIAog
dm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmZyYW1lU3RhcnRlZExvYWRpbmdJbXBsKElu
c3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIEZyYW1lJiBmcmFtZSkKIHsK
ICAgICBpZiAoZnJhbWUuaXNNYWluRnJhbWUoKSkgewotICAgICAgICBpZiAoYXV0byogcGFnZURl
YnVnZ2VyQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLnBhZ2VEZWJ1Z2dlckFnZW50KCkpCisg
ICAgICAgIGlmIChhdXRvKiBwYWdlRGVidWdnZXJBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMu
ZW5hYmxlZFBhZ2VEZWJ1Z2dlckFnZW50KCkpCiAgICAgICAgICAgICBwYWdlRGVidWdnZXJBZ2Vu
dC0+bWFpbkZyYW1lU3RhcnRlZExvYWRpbmcoKTsKLSAgICAgICAgaWYgKEluc3BlY3RvclRpbWVs
aW5lQWdlbnQqIHRpbWVsaW5lQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3RvclRp
bWVsaW5lQWdlbnQoKSkKKyAgICAgICAgaWYgKGF1dG8qIHRpbWVsaW5lQWdlbnQgPSBpbnN0cnVt
ZW50aW5nQWdlbnRzLmVuYWJsZWRUaW1lbGluZUFnZW50KCkpCiAgICAgICAgICAgICB0aW1lbGlu
ZUFnZW50LT5tYWluRnJhbWVTdGFydGVkTG9hZGluZygpOwogICAgIH0KIAotICAgIGlmIChJbnNw
ZWN0b3JQYWdlQWdlbnQqIGluc3BlY3RvclBhZ2VBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMu
aW5zcGVjdG9yUGFnZUFnZW50KCkpCisgICAgaWYgKGF1dG8qIGluc3BlY3RvclBhZ2VBZ2VudCA9
IGluc3RydW1lbnRpbmdBZ2VudHMuZW5hYmxlZFBhZ2VBZ2VudCgpKQogICAgICAgICBpbnNwZWN0
b3JQYWdlQWdlbnQtPmZyYW1lU3RhcnRlZExvYWRpbmcoZnJhbWUpOwogfQogCiB2b2lkIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6ZnJhbWVTdG9wcGVkTG9hZGluZ0ltcGwoSW5zdHJ1bWVudGlu
Z0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgRnJhbWUmIGZyYW1lKQogewogICAgIGlmIChm
cmFtZS5pc01haW5GcmFtZSgpKSB7Ci0gICAgICAgIGlmIChhdXRvKiBwYWdlRGVidWdnZXJBZ2Vu
dCA9IGluc3RydW1lbnRpbmdBZ2VudHMucGFnZURlYnVnZ2VyQWdlbnQoKSkKKyAgICAgICAgaWYg
KGF1dG8qIHBhZ2VEZWJ1Z2dlckFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5lbmFibGVkUGFn
ZURlYnVnZ2VyQWdlbnQoKSkKICAgICAgICAgICAgIHBhZ2VEZWJ1Z2dlckFnZW50LT5tYWluRnJh
bWVTdG9wcGVkTG9hZGluZygpOwogICAgIH0KIAotICAgIGlmIChJbnNwZWN0b3JQYWdlQWdlbnQq
IGluc3BlY3RvclBhZ2VBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yUGFnZUFn
ZW50KCkpCisgICAgaWYgKGF1dG8qIGluc3BlY3RvclBhZ2VBZ2VudCA9IGluc3RydW1lbnRpbmdB
Z2VudHMuZW5hYmxlZFBhZ2VBZ2VudCgpKQogICAgICAgICBpbnNwZWN0b3JQYWdlQWdlbnQtPmZy
YW1lU3RvcHBlZExvYWRpbmcoZnJhbWUpOwogfQogCiB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6ZnJhbWVTY2hlZHVsZWROYXZpZ2F0aW9uSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBp
bnN0cnVtZW50aW5nQWdlbnRzLCBGcmFtZSYgZnJhbWUsIFNlY29uZHMgZGVsYXkpCiB7Ci0gICAg
aWYgKEluc3BlY3RvclBhZ2VBZ2VudCogaW5zcGVjdG9yUGFnZUFnZW50ID0gaW5zdHJ1bWVudGlu
Z0FnZW50cy5pbnNwZWN0b3JQYWdlQWdlbnQoKSkKKyAgICBpZiAoYXV0byogaW5zcGVjdG9yUGFn
ZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5lbmFibGVkUGFnZUFnZW50KCkpCiAgICAgICAg
IGluc3BlY3RvclBhZ2VBZ2VudC0+ZnJhbWVTY2hlZHVsZWROYXZpZ2F0aW9uKGZyYW1lLCBkZWxh
eSk7CiB9CiAKIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpmcmFtZUNsZWFyZWRTY2hl
ZHVsZWROYXZpZ2F0aW9uSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdl
bnRzLCBGcmFtZSYgZnJhbWUpCiB7Ci0gICAgaWYgKEluc3BlY3RvclBhZ2VBZ2VudCogaW5zcGVj
dG9yUGFnZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JQYWdlQWdlbnQoKSkK
KyAgICBpZiAoYXV0byogaW5zcGVjdG9yUGFnZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5l
bmFibGVkUGFnZUFnZW50KCkpCiAgICAgICAgIGluc3BlY3RvclBhZ2VBZ2VudC0+ZnJhbWVDbGVh
cmVkU2NoZWR1bGVkTmF2aWdhdGlvbihmcmFtZSk7CiB9CiAKICNpZiBFTkFCTEUoREFSS19NT0RF
X0NTUykgfHwgSEFWRShPU19EQVJLX01PREVfU1VQUE9SVCkKIHZvaWQgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjpkZWZhdWx0QXBwZWFyYW5jZURpZENoYW5nZUltcGwoSW5zdHJ1bWVudGluZ0Fn
ZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgYm9vbCB1c2VEYXJrQXBwZWFyYW5jZSkKIHsKLSAg
ICBpZiAoSW5zcGVjdG9yUGFnZUFnZW50KiBpbnNwZWN0b3JQYWdlQWdlbnQgPSBpbnN0cnVtZW50
aW5nQWdlbnRzLmluc3BlY3RvclBhZ2VBZ2VudCgpKQorICAgIGlmIChhdXRvKiBpbnNwZWN0b3JQ
YWdlQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmVuYWJsZWRQYWdlQWdlbnQoKSkKICAgICAg
ICAgaW5zcGVjdG9yUGFnZUFnZW50LT5kZWZhdWx0QXBwZWFyYW5jZURpZENoYW5nZSh1c2VEYXJr
QXBwZWFyYW5jZSk7CiB9CiAjZW5kaWYKQEAgLTgwNywyOCArODA3LDI4IEBAIHZvaWQgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsRGVzdHJveUNhY2hlZFJlc291cmNlSW1wbChDYWNoZWRS
ZXNvdXJjZSYgY2FjCiAgICAgICAgIHJldHVybjsKIAogICAgIGZvciAoYXV0byogaW5zdHJ1bWVu
dGluZ0FnZW50IDogKnNfaW5zdHJ1bWVudGluZ0FnZW50c1NldCkgewotICAgICAgICBpZiAoSW5z
cGVjdG9yTmV0d29ya0FnZW50KiBpbnNwZWN0b3JOZXR3b3JrQWdlbnQgPSBpbnN0cnVtZW50aW5n
QWdlbnQtPmluc3BlY3Rvck5ldHdvcmtBZ2VudCgpKQorICAgICAgICBpZiAoYXV0byogaW5zcGVj
dG9yTmV0d29ya0FnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50LT5lbmFibGVkTmV0d29ya0FnZW50
KCkpCiAgICAgICAgICAgICBpbnNwZWN0b3JOZXR3b3JrQWdlbnQtPndpbGxEZXN0cm95Q2FjaGVk
UmVzb3VyY2UoY2FjaGVkUmVzb3VyY2UpOwogICAgIH0KIH0KIAogYm9vbCBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OndpbGxJbnRlcmNlcHRSZXF1ZXN0SW1wbChJbnN0cnVtZW50aW5nQWdlbnRz
JiBpbnN0cnVtZW50aW5nQWdlbnRzLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCiB7
Ci0gICAgaWYgKGF1dG8qIG5ldHdvcmtBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVj
dG9yTmV0d29ya0FnZW50KCkpCisgICAgaWYgKGF1dG8qIG5ldHdvcmtBZ2VudCA9IGluc3RydW1l
bnRpbmdBZ2VudHMuZW5hYmxlZE5ldHdvcmtBZ2VudCgpKQogICAgICAgICByZXR1cm4gbmV0d29y
a0FnZW50LT53aWxsSW50ZXJjZXB0UmVxdWVzdChyZXF1ZXN0KTsKICAgICByZXR1cm4gZmFsc2U7
CiB9CiAKIGJvb2wgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzaG91bGRJbnRlcmNlcHRSZXNw
b25zZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7Ci0gICAgaWYgKGF1dG8qIG5ldHdvcmtBZ2Vu
dCA9IGluc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yTmV0d29ya0FnZW50KCkpCisgICAgaWYg
KGF1dG8qIG5ldHdvcmtBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuZW5hYmxlZE5ldHdvcmtB
Z2VudCgpKQogICAgICAgICByZXR1cm4gbmV0d29ya0FnZW50LT5zaG91bGRJbnRlcmNlcHRSZXNw
b25zZShyZXNwb25zZSk7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCiB2b2lkIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6aW50ZXJjZXB0UmVzcG9uc2VJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMm
IGluc3RydW1lbnRpbmdBZ2VudHMsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCB1
bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYsIFJlZlB0cjxTaGFyZWRCdWZmZXI+KT4mJiBoYW5kbGVyKQogewotICAg
IGlmIChhdXRvKiBuZXR3b3JrQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3Rvck5l
dHdvcmtBZ2VudCgpKQorICAgIGlmIChhdXRvKiBuZXR3b3JrQWdlbnQgPSBpbnN0cnVtZW50aW5n
QWdlbnRzLmVuYWJsZWROZXR3b3JrQWdlbnQoKSkKICAgICAgICAgbmV0d29ya0FnZW50LT5pbnRl
cmNlcHRSZXNwb25zZShyZXNwb25zZSwgaWRlbnRpZmllciwgV1RGTW92ZShoYW5kbGVyKSk7CiB9
CiAKQEAgLTg0NywxMCArODQ3LDEwIEBAIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjph
ZGRNZXNzYWdlVG9Db25zb2xlSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0CiAgICAgTWVz
c2FnZVR5cGUgdHlwZSA9IG1lc3NhZ2UtPnR5cGUoKTsKICAgICBTdHJpbmcgbWVzc2FnZVRleHQg
PSBtZXNzYWdlLT5tZXNzYWdlKCk7CiAKLSAgICBpZiAoV2ViQ29uc29sZUFnZW50KiBjb25zb2xl
QWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLndlYkNvbnNvbGVBZ2VudCgpKQorICAgIGlmIChh
dXRvKiBjb25zb2xlQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLndlYkNvbnNvbGVBZ2VudCgp
KQogICAgICAgICBjb25zb2xlQWdlbnQtPmFkZE1lc3NhZ2VUb0NvbnNvbGUoV1RGTW92ZShtZXNz
YWdlKSk7CiAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIGp1c3QgcGFzcyB0aGUgbWVzc2FnZSBv
biB0byB0aGUgZGVidWdnZXIgYWdlbnQuIEphdmFTY3JpcHRDb3JlIEluc3BlY3RvckRlYnVnZ2Vy
QWdlbnQgc2hvdWxkIGtub3cgQ29uc29sZSBNZXNzYWdlVHlwZXMuCi0gICAgaWYgKGF1dG8qIHdl
YkRlYnVnZ2VyQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLndlYkRlYnVnZ2VyQWdlbnQoKSkg
eworICAgIGlmIChhdXRvKiB3ZWJEZWJ1Z2dlckFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5l
bmFibGVkV2ViRGVidWdnZXJBZ2VudCgpKSB7CiAgICAgICAgIGlmIChpc0NvbnNvbGVBc3NlcnRN
ZXNzYWdlKHNvdXJjZSwgdHlwZSkpCiAgICAgICAgICAgICB3ZWJEZWJ1Z2dlckFnZW50LT5oYW5k
bGVDb25zb2xlQXNzZXJ0KG1lc3NhZ2VUZXh0KTsKICAgICB9CkBAIC04NzYsNyArODc2LDcgQEAg
dm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmNvbnNvbGVDb3VudFJlc2V0SW1wbChJbnN0
cnVtZW50aW5nQWdlbnRzJiBpbnN0cnUKIAogdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OnRha2VIZWFwU25hcHNob3RJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdB
Z2VudHMsIGNvbnN0IFN0cmluZyYgdGl0bGUpCiB7Ci0gICAgaWYgKFdlYkNvbnNvbGVBZ2VudCog
Y29uc29sZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy53ZWJDb25zb2xlQWdlbnQoKSkKKyAg
ICBpZiAoYXV0byogY29uc29sZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy53ZWJDb25zb2xl
QWdlbnQoKSkKICAgICAgICAgY29uc29sZUFnZW50LT50YWtlSGVhcFNuYXBzaG90KHRpdGxlKTsK
IH0KIApAQCAtODg1LDcgKzg4NSw3IEBAIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpz
dGFydENvbnNvbGVUaW1pbmdJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RyCiAgICAgaWYg
KExJS0VMWSghaW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JFbnZpcm9ubWVudCgpLmRldmVs
b3BlckV4dHJhc0VuYWJsZWQoKSkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChhdXRvKiB0
aW1lbGluZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy50cmFja2luZ0luc3BlY3RvclRpbWVs
aW5lQWdlbnQoKSkKKyAgICBpZiAoYXV0byogdGltZWxpbmVBZ2VudCA9IGluc3RydW1lbnRpbmdB
Z2VudHMudHJhY2tpbmdUaW1lbGluZUFnZW50KCkpCiAgICAgICAgIHRpbWVsaW5lQWdlbnQtPnRp
bWUoZnJhbWUsIGxhYmVsKTsKICAgICBpZiAoYXV0byogY29uc29sZUFnZW50ID0gaW5zdHJ1bWVu
dGluZ0FnZW50cy53ZWJDb25zb2xlQWdlbnQoKSkKICAgICAgICAgY29uc29sZUFnZW50LT5zdGFy
dFRpbWluZyhleGVjLCBsYWJlbCk7CkBAIC05MTYsNyArOTE2LDcgQEAgdm9pZCBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246OnN0b3BDb25zb2xlVGltaW5nSW1wbChJbnN0cnVtZW50aW5nQWdlbnRz
JiBpbnN0cnUKIAogICAgIGlmIChhdXRvKiBjb25zb2xlQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdl
bnRzLndlYkNvbnNvbGVBZ2VudCgpKQogICAgICAgICBjb25zb2xlQWdlbnQtPnN0b3BUaW1pbmco
ZXhlYywgbGFiZWwpOwotICAgIGlmIChhdXRvKiB0aW1lbGluZUFnZW50ID0gaW5zdHJ1bWVudGlu
Z0FnZW50cy50cmFja2luZ0luc3BlY3RvclRpbWVsaW5lQWdlbnQoKSkKKyAgICBpZiAoYXV0byog
dGltZWxpbmVBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMudHJhY2tpbmdUaW1lbGluZUFnZW50
KCkpCiAgICAgICAgIHRpbWVsaW5lQWdlbnQtPnRpbWVFbmQoZnJhbWUsIGxhYmVsKTsKIH0KIApA
QCAtOTMxLDcgKzkzMSw3IEBAIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzdG9wQ29u
c29sZVRpbWluZ0ltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1CiAKIHZvaWQgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjpjb25zb2xlVGltZVN0YW1wSW1wbChJbnN0cnVtZW50aW5nQWdl
bnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBGcmFtZSYgZnJhbWUsIFJlZjxTY3JpcHRBcmd1bWVu
dHM+JiYgYXJndW1lbnRzKQogewotICAgIGlmIChJbnNwZWN0b3JUaW1lbGluZUFnZW50KiB0aW1l
bGluZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy50cmFja2luZ0luc3BlY3RvclRpbWVsaW5l
QWdlbnQoKSkgeworICAgIGlmIChhdXRvKiB0aW1lbGluZUFnZW50ID0gaW5zdHJ1bWVudGluZ0Fn
ZW50cy50cmFja2luZ1RpbWVsaW5lQWdlbnQoKSkgewogICAgICAgICBTdHJpbmcgbWVzc2FnZTsK
ICAgICAgICAgYXJndW1lbnRzLT5nZXRGaXJzdEFyZ3VtZW50QXNTdHJpbmcobWVzc2FnZSk7CiAg
ICAgICAgIHRpbWVsaW5lQWdlbnQtPmRpZFRpbWVTdGFtcChmcmFtZSwgbWVzc2FnZSk7CkBAIC05
NDAsMTYwICs5NDAsMTYwIEBAIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpjb25zb2xl
VGltZVN0YW1wSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtCiAKIHZvaWQgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjpzdGFydFByb2ZpbGluZ0ltcGwoSW5zdHJ1bWVudGluZ0FnZW50
cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgSlNDOjpKU0dsb2JhbE9iamVjdCogZXhlYywgY29uc3Qg
U3RyaW5nJiB0aXRsZSkKIHsKLSAgICBpZiAoSW5zcGVjdG9yVGltZWxpbmVBZ2VudCogdGltZWxp
bmVBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yVGltZWxpbmVBZ2VudCgpKQor
ICAgIGlmIChhdXRvKiB0aW1lbGluZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5lbmFibGVk
VGltZWxpbmVBZ2VudCgpKQogICAgICAgICB0aW1lbGluZUFnZW50LT5zdGFydEZyb21Db25zb2xl
KGV4ZWMsIHRpdGxlKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnN0b3BQ
cm9maWxpbmdJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIEpT
Qzo6SlNHbG9iYWxPYmplY3QqIGV4ZWMsIGNvbnN0IFN0cmluZyYgdGl0bGUpCiB7Ci0gICAgaWYg
KEluc3BlY3RvclRpbWVsaW5lQWdlbnQqIHRpbWVsaW5lQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdl
bnRzLmluc3BlY3RvclRpbWVsaW5lQWdlbnQoKSkKKyAgICBpZiAoYXV0byogdGltZWxpbmVBZ2Vu
dCA9IGluc3RydW1lbnRpbmdBZ2VudHMuZW5hYmxlZFRpbWVsaW5lQWdlbnQoKSkKICAgICAgICAg
dGltZWxpbmVBZ2VudC0+c3RvcEZyb21Db25zb2xlKGV4ZWMsIHRpdGxlKTsKIH0KIAogdm9pZCBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmNvbnNvbGVTdGFydFJlY29yZGluZ0NhbnZhc0ltcGwo
SW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgQ2FudmFzUmVuZGVyaW5n
Q29udGV4dCYgY29udGV4dCwgSlNDOjpKU0dsb2JhbE9iamVjdCYgZXhlYywgSlNDOjpKU09iamVj
dCogb3B0aW9ucykKIHsKLSAgICBpZiAoSW5zcGVjdG9yQ2FudmFzQWdlbnQqIGNhbnZhc0FnZW50
ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JDYW52YXNBZ2VudCgpKQorICAgIGlmIChh
dXRvKiBjYW52YXNBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuZW5hYmxlZENhbnZhc0FnZW50
KCkpCiAgICAgICAgIGNhbnZhc0FnZW50LT5jb25zb2xlU3RhcnRSZWNvcmRpbmdDYW52YXMoY29u
dGV4dCwgZXhlYywgb3B0aW9ucyk7CiB9CiAKIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
Ojpjb25zb2xlU3RvcFJlY29yZGluZ0NhbnZhc0ltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5z
dHJ1bWVudGluZ0FnZW50cywgQ2FudmFzUmVuZGVyaW5nQ29udGV4dCYgY29udGV4dCkKIHsKLSAg
ICBpZiAoYXV0byogY2FudmFzQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3RvckNh
bnZhc0FnZW50KCkpCisgICAgaWYgKGF1dG8qIGNhbnZhc0FnZW50ID0gaW5zdHJ1bWVudGluZ0Fn
ZW50cy5lbmFibGVkQ2FudmFzQWdlbnQoKSkKICAgICAgICAgY2FudmFzQWdlbnQtPmNvbnNvbGVT
dG9wUmVjb3JkaW5nQ2FudmFzKGNvbnRleHQpOwogfQogCiB2b2lkIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6ZGlkT3BlbkRhdGFiYXNlSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVt
ZW50aW5nQWdlbnRzLCBEYXRhYmFzZSYgZGF0YWJhc2UpCiB7Ci0gICAgaWYgKGF1dG8qIGRhdGFi
YXNlQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3RvckRhdGFiYXNlQWdlbnQoKSkK
KyAgICBpZiAoYXV0byogZGF0YWJhc2VBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuZW5hYmxl
ZERhdGFiYXNlQWdlbnQoKSkKICAgICAgICAgZGF0YWJhc2VBZ2VudC0+ZGlkT3BlbkRhdGFiYXNl
KGRhdGFiYXNlKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZERpc3Bh
dGNoRE9NU3RvcmFnZUV2ZW50SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5n
QWdlbnRzLCBjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiBvbGRWYWx1ZSwgY29uc3Qg
U3RyaW5nJiBuZXdWYWx1ZSwgU3RvcmFnZVR5cGUgc3RvcmFnZVR5cGUsIFNlY3VyaXR5T3JpZ2lu
KiBzZWN1cml0eU9yaWdpbikKIHsKLSAgICBpZiAoSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50KiBk
b21TdG9yYWdlQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3RvckRPTVN0b3JhZ2VB
Z2VudCgpKQorICAgIGlmIChhdXRvKiBkb21TdG9yYWdlQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdl
bnRzLmVuYWJsZWRET01TdG9yYWdlQWdlbnQoKSkKICAgICAgICAgZG9tU3RvcmFnZUFnZW50LT5k
aWREaXNwYXRjaERPTVN0b3JhZ2VFdmVudChrZXksIG9sZFZhbHVlLCBuZXdWYWx1ZSwgc3RvcmFn
ZVR5cGUsIHNlY3VyaXR5T3JpZ2luKTsKIH0KIAogYm9vbCBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OnNob3VsZFdhaXRGb3JEZWJ1Z2dlck9uU3RhcnRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMm
IGluc3RydW1lbnRpbmdBZ2VudHMpCiB7Ci0gICAgaWYgKEluc3BlY3RvcldvcmtlckFnZW50KiB3
b3JrZXJBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yV29ya2VyQWdlbnQoKSkK
KyAgICBpZiAoYXV0byogd29ya2VyQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLnBlcnNpc3Rl
bnRXb3JrZXJBZ2VudCgpKQogICAgICAgICByZXR1cm4gd29ya2VyQWdlbnQtPnNob3VsZFdhaXRG
b3JEZWJ1Z2dlck9uU3RhcnQoKTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKIHZvaWQgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjp3b3JrZXJTdGFydGVkSW1wbChJbnN0cnVtZW50aW5nQWdlbnRz
JiBpbnN0cnVtZW50aW5nQWdlbnRzLCBXb3JrZXJJbnNwZWN0b3JQcm94eSYgcHJveHkpCiB7Ci0g
ICAgaWYgKEluc3BlY3RvcldvcmtlckFnZW50KiB3b3JrZXJBZ2VudCA9IGluc3RydW1lbnRpbmdB
Z2VudHMuaW5zcGVjdG9yV29ya2VyQWdlbnQoKSkKKyAgICBpZiAoYXV0byogd29ya2VyQWdlbnQg
PSBpbnN0cnVtZW50aW5nQWdlbnRzLnBlcnNpc3RlbnRXb3JrZXJBZ2VudCgpKQogICAgICAgICB3
b3JrZXJBZ2VudC0+d29ya2VyU3RhcnRlZChwcm94eSk7CiB9CiAKIHZvaWQgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjp3b3JrZXJUZXJtaW5hdGVkSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBp
bnN0cnVtZW50aW5nQWdlbnRzLCBXb3JrZXJJbnNwZWN0b3JQcm94eSYgcHJveHkpCiB7Ci0gICAg
aWYgKEluc3BlY3RvcldvcmtlckFnZW50KiB3b3JrZXJBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2Vu
dHMuaW5zcGVjdG9yV29ya2VyQWdlbnQoKSkKKyAgICBpZiAoYXV0byogd29ya2VyQWdlbnQgPSBp
bnN0cnVtZW50aW5nQWdlbnRzLnBlcnNpc3RlbnRXb3JrZXJBZ2VudCgpKQogICAgICAgICB3b3Jr
ZXJBZ2VudC0+d29ya2VyVGVybWluYXRlZChwcm94eSk7CiB9CiAKIHZvaWQgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjpkaWRDcmVhdGVXZWJTb2NrZXRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMm
IGluc3RydW1lbnRpbmdBZ2VudHMsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgVVJM
JiByZXF1ZXN0VVJMKQogewotICAgIGlmIChJbnNwZWN0b3JOZXR3b3JrQWdlbnQqIG5ldHdvcmtB
Z2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yTmV0d29ya0FnZW50KCkpCisgICAg
aWYgKGF1dG8qIG5ldHdvcmtBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuZW5hYmxlZE5ldHdv
cmtBZ2VudCgpKQogICAgICAgICBuZXR3b3JrQWdlbnQtPmRpZENyZWF0ZVdlYlNvY2tldChpZGVu
dGlmaWVyLCByZXF1ZXN0VVJMKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OndpbGxTZW5kV2ViU29ja2V0SGFuZHNoYWtlUmVxdWVzdEltcGwoSW5zdHJ1bWVudGluZ0FnZW50
cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCiB7Ci0gICAgaWYgKEluc3BlY3Rvck5ldHdvcmtBZ2Vu
dCogbmV0d29ya0FnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JOZXR3b3JrQWdl
bnQoKSkKKyAgICBpZiAoYXV0byogbmV0d29ya0FnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5l
bmFibGVkTmV0d29ya0FnZW50KCkpCiAgICAgICAgIG5ldHdvcmtBZ2VudC0+d2lsbFNlbmRXZWJT
b2NrZXRIYW5kc2hha2VSZXF1ZXN0KGlkZW50aWZpZXIsIHJlcXVlc3QpOwogfQogCiB2b2lkIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZVdlYlNvY2tldEhhbmRzaGFrZVJlc3Bv
bnNlSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCB1bnNpZ25l
ZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogewot
ICAgIGlmIChJbnNwZWN0b3JOZXR3b3JrQWdlbnQqIG5ldHdvcmtBZ2VudCA9IGluc3RydW1lbnRp
bmdBZ2VudHMuaW5zcGVjdG9yTmV0d29ya0FnZW50KCkpCisgICAgaWYgKGF1dG8qIG5ldHdvcmtB
Z2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuZW5hYmxlZE5ldHdvcmtBZ2VudCgpKQogICAgICAg
ICBuZXR3b3JrQWdlbnQtPmRpZFJlY2VpdmVXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZShpZGVu
dGlmaWVyLCByZXNwb25zZSk7CiB9CiAKIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpk
aWRDbG9zZVdlYlNvY2tldEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0Fn
ZW50cywgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyKQogewotICAgIGlmIChJbnNwZWN0b3JOZXR3
b3JrQWdlbnQqIG5ldHdvcmtBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yTmV0
d29ya0FnZW50KCkpCisgICAgaWYgKGF1dG8qIG5ldHdvcmtBZ2VudCA9IGluc3RydW1lbnRpbmdB
Z2VudHMuZW5hYmxlZE5ldHdvcmtBZ2VudCgpKQogICAgICAgICBuZXR3b3JrQWdlbnQtPmRpZENs
b3NlV2ViU29ja2V0KGlkZW50aWZpZXIpOwogfQogCiB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6ZGlkUmVjZWl2ZVdlYlNvY2tldEZyYW1lSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBp
bnN0cnVtZW50aW5nQWdlbnRzLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFdlYlNv
Y2tldEZyYW1lJiBmcmFtZSkKIHsKLSAgICBpZiAoSW5zcGVjdG9yTmV0d29ya0FnZW50KiBuZXR3
b3JrQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3Rvck5ldHdvcmtBZ2VudCgpKQor
ICAgIGlmIChhdXRvKiBuZXR3b3JrQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmVuYWJsZWRO
ZXR3b3JrQWdlbnQoKSkKICAgICAgICAgbmV0d29ya0FnZW50LT5kaWRSZWNlaXZlV2ViU29ja2V0
RnJhbWUoaWRlbnRpZmllciwgZnJhbWUpOwogfQogCiB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6ZGlkUmVjZWl2ZVdlYlNvY2tldEZyYW1lRXJyb3JJbXBsKEluc3RydW1lbnRpbmdBZ2Vu
dHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3Qg
U3RyaW5nJiBlcnJvck1lc3NhZ2UpCiB7Ci0gICAgaWYgKEluc3BlY3Rvck5ldHdvcmtBZ2VudCog
bmV0d29ya0FnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JOZXR3b3JrQWdlbnQo
KSkKKyAgICBpZiAoYXV0byogbmV0d29ya0FnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5lbmFi
bGVkTmV0d29ya0FnZW50KCkpCiAgICAgICAgIG5ldHdvcmtBZ2VudC0+ZGlkUmVjZWl2ZVdlYlNv
Y2tldEZyYW1lRXJyb3IoaWRlbnRpZmllciwgZXJyb3JNZXNzYWdlKTsKIH0KIAogdm9pZCBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFNlbmRXZWJTb2NrZXRGcmFtZUltcGwoSW5zdHJ1bWVu
dGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVy
LCBjb25zdCBXZWJTb2NrZXRGcmFtZSYgZnJhbWUpCiB7Ci0gICAgaWYgKEluc3BlY3Rvck5ldHdv
cmtBZ2VudCogbmV0d29ya0FnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JOZXR3
b3JrQWdlbnQoKSkKKyAgICBpZiAoYXV0byogbmV0d29ya0FnZW50ID0gaW5zdHJ1bWVudGluZ0Fn
ZW50cy5lbmFibGVkTmV0d29ya0FnZW50KCkpCiAgICAgICAgIG5ldHdvcmtBZ2VudC0+ZGlkU2Vu
ZFdlYlNvY2tldEZyYW1lKGlkZW50aWZpZXIsIGZyYW1lKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246OmRpZENoYW5nZUNTU0NhbnZhc0NsaWVudE5vZGVzSW1wbChJbnN0cnVt
ZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBDYW52YXNCYXNlJiBjYW52YXNCYXNl
KQogewotICAgIGlmIChJbnNwZWN0b3JDYW52YXNBZ2VudCogY2FudmFzQWdlbnQgPSBpbnN0cnVt
ZW50aW5nQWdlbnRzLmluc3BlY3RvckNhbnZhc0FnZW50KCkpCisgICAgaWYgKGF1dG8qIGNhbnZh
c0FnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5lbmFibGVkQ2FudmFzQWdlbnQoKSkKICAgICAg
ICAgY2FudmFzQWdlbnQtPmRpZENoYW5nZUNTU0NhbnZhc0NsaWVudE5vZGVzKGNhbnZhc0Jhc2Up
OwogfQogCiB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkQ3JlYXRlQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50
cywgQ2FudmFzUmVuZGVyaW5nQ29udGV4dCYgY29udGV4dCkKIHsKLSAgICBpZiAoSW5zcGVjdG9y
Q2FudmFzQWdlbnQqIGNhbnZhc0FnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JD
YW52YXNBZ2VudCgpKQorICAgIGlmIChhdXRvKiBjYW52YXNBZ2VudCA9IGluc3RydW1lbnRpbmdB
Z2VudHMuZW5hYmxlZENhbnZhc0FnZW50KCkpCiAgICAgICAgIGNhbnZhc0FnZW50LT5kaWRDcmVh
dGVDYW52YXNSZW5kZXJpbmdDb250ZXh0KGNvbnRleHQpOwogfQogCiB2b2lkIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6ZGlkQ2hhbmdlQ2FudmFzTWVtb3J5SW1wbChJbnN0cnVtZW50aW5nQWdl
bnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBDYW52YXNSZW5kZXJpbmdDb250ZXh0JiBjb250ZXh0
KQogewotICAgIGlmIChJbnNwZWN0b3JDYW52YXNBZ2VudCogY2FudmFzQWdlbnQgPSBpbnN0cnVt
ZW50aW5nQWdlbnRzLmluc3BlY3RvckNhbnZhc0FnZW50KCkpCisgICAgaWYgKGF1dG8qIGNhbnZh
c0FnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5lbmFibGVkQ2FudmFzQWdlbnQoKSkKICAgICAg
ICAgY2FudmFzQWdlbnQtPmRpZENoYW5nZUNhbnZhc01lbW9yeShjb250ZXh0KTsKIH0KIAogdm9p
ZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnJlY29yZENhbnZhc0FjdGlvbkltcGwoSW5zdHJ1
bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgQ2FudmFzUmVuZGVyaW5nQ29udGV4
dCYgY2FudmFzUmVuZGVyaW5nQ29udGV4dCwgY29uc3QgU3RyaW5nJiBuYW1lLCBzdGQ6OmluaXRp
YWxpemVyX2xpc3Q8UmVjb3JkQ2FudmFzQWN0aW9uVmFyaWFudD4mJiBwYXJhbWV0ZXJzKQogewot
ICAgIGlmIChJbnNwZWN0b3JDYW52YXNBZ2VudCogY2FudmFzQWdlbnQgPSBpbnN0cnVtZW50aW5n
QWdlbnRzLmluc3BlY3RvckNhbnZhc0FnZW50KCkpCisgICAgaWYgKGF1dG8qIGNhbnZhc0FnZW50
ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5lbmFibGVkQ2FudmFzQWdlbnQoKSkKICAgICAgICAgY2Fu
dmFzQWdlbnQtPnJlY29yZENhbnZhc0FjdGlvbihjYW52YXNSZW5kZXJpbmdDb250ZXh0LCBuYW1l
LCBXVEZNb3ZlKHBhcmFtZXRlcnMpKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OmRpZEZpbmlzaFJlY29yZGluZ0NhbnZhc0ZyYW1lSW1wbChJbnN0cnVtZW50aW5nQWdlbnRz
JiBpbnN0cnVtZW50aW5nQWdlbnRzLCBDYW52YXNSZW5kZXJpbmdDb250ZXh0JiBjb250ZXh0LCBi
b29sIGZvcmNlRGlzcGF0Y2gpCiB7Ci0gICAgaWYgKEluc3BlY3RvckNhbnZhc0FnZW50KiBjYW52
YXNBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yQ2FudmFzQWdlbnQoKSkKKyAg
ICBpZiAoYXV0byogY2FudmFzQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmVuYWJsZWRDYW52
YXNBZ2VudCgpKQogICAgICAgICBjYW52YXNBZ2VudC0+ZGlkRmluaXNoUmVjb3JkaW5nQ2FudmFz
RnJhbWUoY29udGV4dCwgZm9yY2VEaXNwYXRjaCk7CiB9CiAKICNpZiBFTkFCTEUoV0VCR0wpCiB2
b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRW5hYmxlRXh0ZW5zaW9uSW1wbChJbnN0
cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBXZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlJiBjb250ZXh0V2ViR0xCYXNlLCBjb25zdCBTdHJpbmcmIGV4dGVuc2lvbikKIHsKLSAg
ICBpZiAoSW5zcGVjdG9yQ2FudmFzQWdlbnQqIGNhbnZhc0FnZW50ID0gaW5zdHJ1bWVudGluZ0Fn
ZW50cy5pbnNwZWN0b3JDYW52YXNBZ2VudCgpKQorICAgIGlmIChhdXRvKiBjYW52YXNBZ2VudCA9
IGluc3RydW1lbnRpbmdBZ2VudHMuZW5hYmxlZENhbnZhc0FnZW50KCkpCiAgICAgICAgIGNhbnZh
c0FnZW50LT5kaWRFbmFibGVFeHRlbnNpb24oY29udGV4dFdlYkdMQmFzZSwgZXh0ZW5zaW9uKTsK
IH0KIAogdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENyZWF0ZVdlYkdMUHJvZ3Jh
bUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgV2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZSYgY29udGV4dFdlYkdMQmFzZSwgV2ViR0xQcm9ncmFtJiBwcm9ncmFt
KQogewotICAgIGlmIChJbnNwZWN0b3JDYW52YXNBZ2VudCogY2FudmFzQWdlbnQgPSBpbnN0cnVt
ZW50aW5nQWdlbnRzLmluc3BlY3RvckNhbnZhc0FnZW50KCkpCisgICAgaWYgKGF1dG8qIGNhbnZh
c0FnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5lbmFibGVkQ2FudmFzQWdlbnQoKSkKICAgICAg
ICAgY2FudmFzQWdlbnQtPmRpZENyZWF0ZVdlYkdMUHJvZ3JhbShjb250ZXh0V2ViR0xCYXNlLCBw
cm9ncmFtKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxEZXN0cm95
V2ViR0xQcm9ncmFtSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRz
LCBXZWJHTFByb2dyYW0mIHByb2dyYW0pCiB7Ci0gICAgaWYgKEluc3BlY3RvckNhbnZhc0FnZW50
KiBjYW52YXNBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yQ2FudmFzQWdlbnQo
KSkKKyAgICBpZiAoYXV0byogY2FudmFzQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmVuYWJs
ZWRDYW52YXNBZ2VudCgpKQogICAgICAgICBjYW52YXNBZ2VudC0+d2lsbERlc3Ryb3lXZWJHTFBy
b2dyYW0ocHJvZ3JhbSk7CiB9CiAKIGJvb2wgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjppc1dl
YkdMUHJvZ3JhbURpc2FibGVkSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5n
QWdlbnRzLCBXZWJHTFByb2dyYW0mIHByb2dyYW0pCiB7Ci0gICAgaWYgKEluc3BlY3RvckNhbnZh
c0FnZW50KiBjYW52YXNBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yQ2FudmFz
QWdlbnQoKSkKKyAgICBpZiAoYXV0byogY2FudmFzQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRz
LmVuYWJsZWRDYW52YXNBZ2VudCgpKQogICAgICAgICByZXR1cm4gY2FudmFzQWdlbnQtPmlzV2Vi
R0xQcm9ncmFtRGlzYWJsZWQocHJvZ3JhbSk7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCiBib29s
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aXNXZWJHTFByb2dyYW1IaWdobGlnaHRlZEltcGwo
SW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgV2ViR0xQcm9ncmFtJiBw
cm9ncmFtKQogewotICAgIGlmIChJbnNwZWN0b3JDYW52YXNBZ2VudCogY2FudmFzQWdlbnQgPSBp
bnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3RvckNhbnZhc0FnZW50KCkpCisgICAgaWYgKGF1dG8q
IGNhbnZhc0FnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5lbmFibGVkQ2FudmFzQWdlbnQoKSkK
ICAgICAgICAgcmV0dXJuIGNhbnZhc0FnZW50LT5pc1dlYkdMUHJvZ3JhbUhpZ2hsaWdodGVkKHBy
b2dyYW0pOwogICAgIHJldHVybiBmYWxzZTsKIH0KQEAgLTExMDIsMzEgKzExMDIsMzEgQEAgYm9v
bCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmlzV2ViR0xQcm9ncmFtSGlnaGxpZ2h0ZWRJbXBs
KEluc3RydW1lbnRpbmdBZ2VudHMKICNpZiBFTkFCTEUoV0VCR1BVKQogdm9pZCBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246OmRpZENyZWF0ZVdlYkdQVURldmljZUltcGwoSW5zdHJ1bWVudGluZ0Fn
ZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgV2ViR1BVRGV2aWNlJiBkZXZpY2UpCiB7Ci0gICAg
aWYgKGF1dG8qIGNhbnZhc0FnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JDYW52
YXNBZ2VudCgpKQorICAgIGlmIChhdXRvKiBjYW52YXNBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2Vu
dHMuZW5hYmxlZENhbnZhc0FnZW50KCkpCiAgICAgICAgIGNhbnZhc0FnZW50LT5kaWRDcmVhdGVX
ZWJHUFVEZXZpY2UoZGV2aWNlKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OndpbGxEZXN0cm95V2ViR1BVRGV2aWNlSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVt
ZW50aW5nQWdlbnRzLCBXZWJHUFVEZXZpY2UmIGRldmljZSkKIHsKLSAgICBpZiAoYXV0byogY2Fu
dmFzQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3RvckNhbnZhc0FnZW50KCkpCisg
ICAgaWYgKGF1dG8qIGNhbnZhc0FnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5lbmFibGVkQ2Fu
dmFzQWdlbnQoKSkKICAgICAgICAgY2FudmFzQWdlbnQtPndpbGxEZXN0cm95V2ViR1BVRGV2aWNl
KGRldmljZSk7CiB9CiAKIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsQ29uZmln
dXJlU3dhcENoYWluSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRz
LCBHUFVDYW52YXNDb250ZXh0JiBjb250ZXh0R1BVLCBXZWJHUFVTd2FwQ2hhaW4mIG5ld1N3YXBD
aGFpbikKIHsKLSAgICBpZiAoYXV0byogY2FudmFzQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRz
Lmluc3BlY3RvckNhbnZhc0FnZW50KCkpCisgICAgaWYgKGF1dG8qIGNhbnZhc0FnZW50ID0gaW5z
dHJ1bWVudGluZ0FnZW50cy5lbmFibGVkQ2FudmFzQWdlbnQoKSkKICAgICAgICAgY2FudmFzQWdl
bnQtPndpbGxDb25maWd1cmVTd2FwQ2hhaW4oY29udGV4dEdQVSwgbmV3U3dhcENoYWluKTsKIH0K
IAogdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENyZWF0ZVdlYkdQVVBpcGVsaW5l
SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBXZWJHUFVEZXZp
Y2UmIGRldmljZSwgV2ViR1BVUGlwZWxpbmUmIHBpcGVsaW5lKQogewotICAgIGlmIChhdXRvKiBj
YW52YXNBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yQ2FudmFzQWdlbnQoKSkK
KyAgICBpZiAoYXV0byogY2FudmFzQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmVuYWJsZWRD
YW52YXNBZ2VudCgpKQogICAgICAgICBjYW52YXNBZ2VudC0+ZGlkQ3JlYXRlV2ViR1BVUGlwZWxp
bmUoZGV2aWNlLCBwaXBlbGluZSk7CiB9CiAKIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
Ojp3aWxsRGVzdHJveVdlYkdQVVBpcGVsaW5lSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0
cnVtZW50aW5nQWdlbnRzLCBXZWJHUFVQaXBlbGluZSYgcGlwZWxpbmUpCiB7Ci0gICAgaWYgKGF1
dG8qIGNhbnZhc0FnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JDYW52YXNBZ2Vu
dCgpKQorICAgIGlmIChhdXRvKiBjYW52YXNBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuZW5h
YmxlZENhbnZhc0FnZW50KCkpCiAgICAgICAgIGNhbnZhc0FnZW50LT53aWxsRGVzdHJveVdlYkdQ
VVBpcGVsaW5lKHBpcGVsaW5lKTsKIH0KIApAQCAtMTEzOCw2NyArMTEzOCw2NyBAQCBJbnN0cnVt
ZW50aW5nQWdlbnRzKiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246Omluc3RydW1lbnRpbmdBZ2Vu
dHNGb3JXZWJHUFVEZXZpYwogCiB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbEFw
cGx5S2V5ZnJhbWVFZmZlY3RJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdB
Z2VudHMsIEVsZW1lbnQmIHRhcmdldCwgS2V5ZnJhbWVFZmZlY3QmIGVmZmVjdCwgQ29tcHV0ZWRF
ZmZlY3RUaW1pbmcgY29tcHV0ZWRUaW1pbmcpCiB7Ci0gICAgaWYgKGF1dG8qIGFuaW1hdGlvbkFn
ZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy50cmFja2luZ0luc3BlY3RvckFuaW1hdGlvbkFnZW50
KCkpCisgICAgaWYgKGF1dG8qIGFuaW1hdGlvbkFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy50
cmFja2luZ0FuaW1hdGlvbkFnZW50KCkpCiAgICAgICAgIGFuaW1hdGlvbkFnZW50LT53aWxsQXBw
bHlLZXlmcmFtZUVmZmVjdCh0YXJnZXQsIGVmZmVjdCwgY29tcHV0ZWRUaW1pbmcpOwogfQogCiB2
b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkQ2hhbmdlV2ViQW5pbWF0aW9uTmFtZUlt
cGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgV2ViQW5pbWF0aW9u
JiBhbmltYXRpb24pCiB7Ci0gICAgaWYgKGF1dG8qIGFuaW1hdGlvbkFnZW50ID0gaW5zdHJ1bWVu
dGluZ0FnZW50cy5lbmFibGVkSW5zcGVjdG9yQW5pbWF0aW9uQWdlbnQoKSkKKyAgICBpZiAoYXV0
byogYW5pbWF0aW9uQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmVuYWJsZWRBbmltYXRpb25B
Z2VudCgpKQogICAgICAgICBhbmltYXRpb25BZ2VudC0+ZGlkQ2hhbmdlV2ViQW5pbWF0aW9uTmFt
ZShhbmltYXRpb24pOwogfQogCiB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkU2V0
V2ViQW5pbWF0aW9uRWZmZWN0SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5n
QWdlbnRzLCBXZWJBbmltYXRpb24mIGFuaW1hdGlvbikKIHsKLSAgICBpZiAoYXV0byogYW5pbWF0
aW9uQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmVuYWJsZWRJbnNwZWN0b3JBbmltYXRpb25B
Z2VudCgpKQorICAgIGlmIChhdXRvKiBhbmltYXRpb25BZ2VudCA9IGluc3RydW1lbnRpbmdBZ2Vu
dHMuZW5hYmxlZEFuaW1hdGlvbkFnZW50KCkpCiAgICAgICAgIGFuaW1hdGlvbkFnZW50LT5kaWRT
ZXRXZWJBbmltYXRpb25FZmZlY3QoYW5pbWF0aW9uKTsKLSAgICBlbHNlIGlmIChhdXRvKiBhbmlt
YXRpb25BZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMudHJhY2tpbmdJbnNwZWN0b3JBbmltYXRp
b25BZ2VudCgpKQorICAgIGVsc2UgaWYgKGF1dG8qIGFuaW1hdGlvbkFnZW50ID0gaW5zdHJ1bWVu
dGluZ0FnZW50cy50cmFja2luZ0FuaW1hdGlvbkFnZW50KCkpCiAgICAgICAgIGFuaW1hdGlvbkFn
ZW50LT5kaWRTZXRXZWJBbmltYXRpb25FZmZlY3QoYW5pbWF0aW9uKTsKIH0KIAogdm9pZCBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENoYW5nZVdlYkFuaW1hdGlvbkVmZmVjdFRpbWluZ0lt
cGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgV2ViQW5pbWF0aW9u
JiBhbmltYXRpb24pCiB7Ci0gICAgaWYgKGF1dG8qIGFuaW1hdGlvbkFnZW50ID0gaW5zdHJ1bWVu
dGluZ0FnZW50cy5lbmFibGVkSW5zcGVjdG9yQW5pbWF0aW9uQWdlbnQoKSkKKyAgICBpZiAoYXV0
byogYW5pbWF0aW9uQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmVuYWJsZWRBbmltYXRpb25B
Z2VudCgpKQogICAgICAgICBhbmltYXRpb25BZ2VudC0+ZGlkQ2hhbmdlV2ViQW5pbWF0aW9uRWZm
ZWN0VGltaW5nKGFuaW1hdGlvbik7CiB9CiAKIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
OjpkaWRDaGFuZ2VXZWJBbmltYXRpb25FZmZlY3RUYXJnZXRJbXBsKEluc3RydW1lbnRpbmdBZ2Vu
dHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIFdlYkFuaW1hdGlvbiYgYW5pbWF0aW9uKQogewotICAg
IGlmIChhdXRvKiBhbmltYXRpb25BZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuZW5hYmxlZElu
c3BlY3RvckFuaW1hdGlvbkFnZW50KCkpCisgICAgaWYgKGF1dG8qIGFuaW1hdGlvbkFnZW50ID0g
aW5zdHJ1bWVudGluZ0FnZW50cy5lbmFibGVkQW5pbWF0aW9uQWdlbnQoKSkKICAgICAgICAgYW5p
bWF0aW9uQWdlbnQtPmRpZENoYW5nZVdlYkFuaW1hdGlvbkVmZmVjdFRhcmdldChhbmltYXRpb24p
OwogfQogCiB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkQ3JlYXRlV2ViQW5pbWF0
aW9uSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBXZWJBbmlt
YXRpb24mIGFuaW1hdGlvbikKIHsKLSAgICBpZiAoYXV0byogYW5pbWF0aW9uQWdlbnQgPSBpbnN0
cnVtZW50aW5nQWdlbnRzLmVuYWJsZWRJbnNwZWN0b3JBbmltYXRpb25BZ2VudCgpKQorICAgIGlm
IChhdXRvKiBhbmltYXRpb25BZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuZW5hYmxlZEFuaW1h
dGlvbkFnZW50KCkpCiAgICAgICAgIGFuaW1hdGlvbkFnZW50LT5kaWRDcmVhdGVXZWJBbmltYXRp
b24oYW5pbWF0aW9uKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxE
ZXN0cm95V2ViQW5pbWF0aW9uSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5n
QWdlbnRzLCBXZWJBbmltYXRpb24mIGFuaW1hdGlvbikKIHsKLSAgICBpZiAoYXV0byogYW5pbWF0
aW9uQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmVuYWJsZWRJbnNwZWN0b3JBbmltYXRpb25B
Z2VudCgpKQorICAgIGlmIChhdXRvKiBhbmltYXRpb25BZ2VudCA9IGluc3RydW1lbnRpbmdBZ2Vu
dHMuZW5hYmxlZEFuaW1hdGlvbkFnZW50KCkpCiAgICAgICAgIGFuaW1hdGlvbkFnZW50LT53aWxs
RGVzdHJveVdlYkFuaW1hdGlvbihhbmltYXRpb24pOwotICAgIGVsc2UgaWYgKGF1dG8qIGFuaW1h
dGlvbkFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy50cmFja2luZ0luc3BlY3RvckFuaW1hdGlv
bkFnZW50KCkpCisgICAgZWxzZSBpZiAoYXV0byogYW5pbWF0aW9uQWdlbnQgPSBpbnN0cnVtZW50
aW5nQWdlbnRzLnRyYWNraW5nQW5pbWF0aW9uQWdlbnQoKSkKICAgICAgICAgYW5pbWF0aW9uQWdl
bnQtPndpbGxEZXN0cm95V2ViQW5pbWF0aW9uKGFuaW1hdGlvbik7CiB9CiAKICNpZiBFTkFCTEUo
UkVTT1VSQ0VfVVNBR0UpCiB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkSGFuZGxl
TWVtb3J5UHJlc3N1cmVJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2Vu
dHMsIENyaXRpY2FsIGNyaXRpY2FsKQogewotICAgIGlmIChJbnNwZWN0b3JNZW1vcnlBZ2VudCog
bWVtb3J5QWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3Rvck1lbW9yeUFnZW50KCkp
CisgICAgaWYgKGF1dG8qIG1lbW9yeUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5lbmFibGVk
TWVtb3J5QWdlbnQoKSkKICAgICAgICAgbWVtb3J5QWdlbnQtPmRpZEhhbmRsZU1lbW9yeVByZXNz
dXJlKGNyaXRpY2FsKTsKIH0KICNlbmRpZgogCiB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6bmV0d29ya1N0YXRlQ2hhbmdlZEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVu
dGluZ0FnZW50cykKIHsKLSAgICBpZiAoSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50KiBh
cHBsaWNhdGlvbkNhY2hlQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3RvckFwcGxp
Y2F0aW9uQ2FjaGVBZ2VudCgpKQorICAgIGlmIChhdXRvKiBhcHBsaWNhdGlvbkNhY2hlQWdlbnQg
PSBpbnN0cnVtZW50aW5nQWdlbnRzLmVuYWJsZWRBcHBsaWNhdGlvbkNhY2hlQWdlbnQoKSkKICAg
ICAgICAgYXBwbGljYXRpb25DYWNoZUFnZW50LT5uZXR3b3JrU3RhdGVDaGFuZ2VkKCk7CiB9CiAK
IHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp1cGRhdGVBcHBsaWNhdGlvbkNhY2hlU3Rh
dHVzSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBGcmFtZSYg
ZnJhbWUpCiB7Ci0gICAgaWYgKGF1dG8qIGFwcGxpY2F0aW9uQ2FjaGVBZ2VudCA9IGluc3RydW1l
bnRpbmdBZ2VudHMuaW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50KCkpCisgICAgaWYgKGF1
dG8qIGFwcGxpY2F0aW9uQ2FjaGVBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuZW5hYmxlZEFw
cGxpY2F0aW9uQ2FjaGVBZ2VudCgpKQogICAgICAgICBhcHBsaWNhdGlvbkNhY2hlQWdlbnQtPnVw
ZGF0ZUFwcGxpY2F0aW9uQ2FjaGVTdGF0dXMoJmZyYW1lKTsKIH0KIApAQCAtMTIxNiw1MyArMTIx
Niw1MyBAQCBib29sIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6dGltZWxpbmVBZ2VudFRyYWNr
aW5nKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcgogewogICAgIEZBU1RfUkVUVVJOX0lGX05P
X0ZST05URU5EUyhmYWxzZSk7CiAgICAgaWYgKGF1dG8qIGluc3RydW1lbnRpbmdBZ2VudHMgPSBp
bnN0cnVtZW50aW5nQWdlbnRzRm9yQ29udGV4dChzY3JpcHRFeGVjdXRpb25Db250ZXh0KSkKLSAg
ICAgICAgcmV0dXJuIGluc3RydW1lbnRpbmdBZ2VudHMtPnRyYWNraW5nSW5zcGVjdG9yVGltZWxp
bmVBZ2VudCgpOworICAgICAgICByZXR1cm4gaW5zdHJ1bWVudGluZ0FnZW50cy0+dHJhY2tpbmdU
aW1lbGluZUFnZW50KCk7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCiB2b2lkIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6ZGlkUmVxdWVzdEFuaW1hdGlvbkZyYW1lSW1wbChJbnN0cnVtZW50aW5n
QWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBpbnQgY2FsbGJhY2tJZCwgRG9jdW1lbnQmIGRv
Y3VtZW50KQogewotICAgIGlmIChhdXRvKiBwYWdlRGVidWdnZXJBZ2VudCA9IGluc3RydW1lbnRp
bmdBZ2VudHMucGFnZURlYnVnZ2VyQWdlbnQoKSkKKyAgICBpZiAoYXV0byogcGFnZURlYnVnZ2Vy
QWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmVuYWJsZWRQYWdlRGVidWdnZXJBZ2VudCgpKQog
ICAgICAgICBwYWdlRGVidWdnZXJBZ2VudC0+ZGlkUmVxdWVzdEFuaW1hdGlvbkZyYW1lKGNhbGxi
YWNrSWQsIGRvY3VtZW50KTsKLSAgICBpZiAoSW5zcGVjdG9yVGltZWxpbmVBZ2VudCogdGltZWxp
bmVBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMudHJhY2tpbmdJbnNwZWN0b3JUaW1lbGluZUFn
ZW50KCkpCisgICAgaWYgKGF1dG8qIHRpbWVsaW5lQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRz
LnRyYWNraW5nVGltZWxpbmVBZ2VudCgpKQogICAgICAgICB0aW1lbGluZUFnZW50LT5kaWRSZXF1
ZXN0QW5pbWF0aW9uRnJhbWUoY2FsbGJhY2tJZCwgZG9jdW1lbnQuZnJhbWUoKSk7CiB9CiAKIHZv
aWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRDYW5jZWxBbmltYXRpb25GcmFtZUltcGwo
SW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgaW50IGNhbGxiYWNrSWQs
IERvY3VtZW50JiBkb2N1bWVudCkKIHsKLSAgICBpZiAoYXV0byogcGFnZURlYnVnZ2VyQWdlbnQg
PSBpbnN0cnVtZW50aW5nQWdlbnRzLnBhZ2VEZWJ1Z2dlckFnZW50KCkpCisgICAgaWYgKGF1dG8q
IHBhZ2VEZWJ1Z2dlckFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5lbmFibGVkUGFnZURlYnVn
Z2VyQWdlbnQoKSkKICAgICAgICAgcGFnZURlYnVnZ2VyQWdlbnQtPmRpZENhbmNlbEFuaW1hdGlv
bkZyYW1lKGNhbGxiYWNrSWQpOwotICAgIGlmIChJbnNwZWN0b3JUaW1lbGluZUFnZW50KiB0aW1l
bGluZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy50cmFja2luZ0luc3BlY3RvclRpbWVsaW5l
QWdlbnQoKSkKKyAgICBpZiAoYXV0byogdGltZWxpbmVBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2Vu
dHMudHJhY2tpbmdUaW1lbGluZUFnZW50KCkpCiAgICAgICAgIHRpbWVsaW5lQWdlbnQtPmRpZENh
bmNlbEFuaW1hdGlvbkZyYW1lKGNhbGxiYWNrSWQsIGRvY3VtZW50LmZyYW1lKCkpOwogfQogCiB2
b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbEZpcmVBbmltYXRpb25GcmFtZUltcGwo
SW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgaW50IGNhbGxiYWNrSWQs
IERvY3VtZW50JiBkb2N1bWVudCkKIHsKLSAgICBpZiAoYXV0byogcGFnZURlYnVnZ2VyQWdlbnQg
PSBpbnN0cnVtZW50aW5nQWdlbnRzLnBhZ2VEZWJ1Z2dlckFnZW50KCkpCisgICAgaWYgKGF1dG8q
IHBhZ2VEZWJ1Z2dlckFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5lbmFibGVkUGFnZURlYnVn
Z2VyQWdlbnQoKSkKICAgICAgICAgcGFnZURlYnVnZ2VyQWdlbnQtPndpbGxGaXJlQW5pbWF0aW9u
RnJhbWUoY2FsbGJhY2tJZCk7Ci0gICAgaWYgKGF1dG8qIHBhZ2VET01EZWJ1Z2dlckFnZW50ID0g
aW5zdHJ1bWVudGluZ0FnZW50cy5wYWdlRE9NRGVidWdnZXJBZ2VudCgpKQorICAgIGlmIChhdXRv
KiBwYWdlRE9NRGVidWdnZXJBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuZW5hYmxlZFBhZ2VE
T01EZWJ1Z2dlckFnZW50KCkpCiAgICAgICAgIHBhZ2VET01EZWJ1Z2dlckFnZW50LT53aWxsRmly
ZUFuaW1hdGlvbkZyYW1lKCk7Ci0gICAgaWYgKGF1dG8qIHRpbWVsaW5lQWdlbnQgPSBpbnN0cnVt
ZW50aW5nQWdlbnRzLnRyYWNraW5nSW5zcGVjdG9yVGltZWxpbmVBZ2VudCgpKQorICAgIGlmIChh
dXRvKiB0aW1lbGluZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy50cmFja2luZ1RpbWVsaW5l
QWdlbnQoKSkKICAgICAgICAgdGltZWxpbmVBZ2VudC0+d2lsbEZpcmVBbmltYXRpb25GcmFtZShj
YWxsYmFja0lkLCBkb2N1bWVudC5mcmFtZSgpKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OmRpZEZpcmVBbmltYXRpb25GcmFtZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYg
aW5zdHJ1bWVudGluZ0FnZW50cykKIHsKLSAgICBpZiAoYXV0byogd2ViRGVidWdnZXJBZ2VudCA9
IGluc3RydW1lbnRpbmdBZ2VudHMud2ViRGVidWdnZXJBZ2VudCgpKQorICAgIGlmIChhdXRvKiB3
ZWJEZWJ1Z2dlckFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5lbmFibGVkV2ViRGVidWdnZXJB
Z2VudCgpKQogICAgICAgICB3ZWJEZWJ1Z2dlckFnZW50LT5kaWREaXNwYXRjaEFzeW5jQ2FsbCgp
OwotICAgIGlmIChhdXRvKiB0aW1lbGluZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy50cmFj
a2luZ0luc3BlY3RvclRpbWVsaW5lQWdlbnQoKSkKKyAgICBpZiAoYXV0byogdGltZWxpbmVBZ2Vu
dCA9IGluc3RydW1lbnRpbmdBZ2VudHMudHJhY2tpbmdUaW1lbGluZUFnZW50KCkpCiAgICAgICAg
IHRpbWVsaW5lQWdlbnQtPmRpZEZpcmVBbmltYXRpb25GcmFtZSgpOwogfQogCiB2b2lkIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbEZpcmVPYnNlcnZlckNhbGxiYWNrSW1wbChJbnN0cnVt
ZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBjb25zdCBTdHJpbmcmIGNhbGxiYWNr
VHlwZSwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkKIHsKLSAgICBpZiAoYXV0byog
dGltZWxpbmVBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMudHJhY2tpbmdJbnNwZWN0b3JUaW1l
bGluZUFnZW50KCkpCisgICAgaWYgKGF1dG8qIHRpbWVsaW5lQWdlbnQgPSBpbnN0cnVtZW50aW5n
QWdlbnRzLnRyYWNraW5nVGltZWxpbmVBZ2VudCgpKQogICAgICAgICB0aW1lbGluZUFnZW50LT53
aWxsRmlyZU9ic2VydmVyQ2FsbGJhY2soY2FsbGJhY2tUeXBlLCBmcmFtZUZvclNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoJmNvbnRleHQpKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OmRpZEZpcmVPYnNlcnZlckNhbGxiYWNrSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0
cnVtZW50aW5nQWdlbnRzKQogewotICAgIGlmIChhdXRvKiB0aW1lbGluZUFnZW50ID0gaW5zdHJ1
bWVudGluZ0FnZW50cy50cmFja2luZ0luc3BlY3RvclRpbWVsaW5lQWdlbnQoKSkKKyAgICBpZiAo
YXV0byogdGltZWxpbmVBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMudHJhY2tpbmdUaW1lbGlu
ZUFnZW50KCkpCiAgICAgICAgIHRpbWVsaW5lQWdlbnQtPmRpZEZpcmVPYnNlcnZlckNhbGxiYWNr
KCk7CiB9CiAKQEAgLTEyOTMsMTMgKzEyOTMsMTMgQEAgSW5zdHJ1bWVudGluZ0FnZW50cyogSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjppbnN0cnVtZW50aW5nQWdlbnRzRm9yUmVuZGVyZXIoUmUK
IAogdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmxheWVyVHJlZURpZENoYW5nZUltcGwo
SW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cykKIHsKLSAgICBpZiAoSW5z
cGVjdG9yTGF5ZXJUcmVlQWdlbnQqIGxheWVyVHJlZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50
cy5pbnNwZWN0b3JMYXllclRyZWVBZ2VudCgpKQorICAgIGlmIChhdXRvKiBsYXllclRyZWVBZ2Vu
dCA9IGluc3RydW1lbnRpbmdBZ2VudHMuZW5hYmxlZExheWVyVHJlZUFnZW50KCkpCiAgICAgICAg
IGxheWVyVHJlZUFnZW50LT5sYXllclRyZWVEaWRDaGFuZ2UoKTsKIH0KIAogdm9pZCBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb246OnJlbmRlckxheWVyRGVzdHJveWVkSW1wbChJbnN0cnVtZW50aW5n
QWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBjb25zdCBSZW5kZXJMYXllciYgcmVuZGVyTGF5
ZXIpCiB7Ci0gICAgaWYgKEluc3BlY3RvckxheWVyVHJlZUFnZW50KiBsYXllclRyZWVBZ2VudCA9
IGluc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQoKSkKKyAgICBpZiAo
YXV0byogbGF5ZXJUcmVlQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmVuYWJsZWRMYXllclRy
ZWVBZ2VudCgpKQogICAgICAgICBsYXllclRyZWVBZ2VudC0+cmVuZGVyTGF5ZXJEZXN0cm95ZWQo
cmVuZGVyTGF5ZXIpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zdHJ1bWVudGluZ0FnZW50cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zdHJ1
bWVudGluZ0FnZW50cy5jcHAKaW5kZXggZDdhMmY3MTk1OGQ5NDNjY2NhYzQzNGVhYzkzZTMzZGFl
MjdjYzQwNC4uZGQ3ZmE0NTA4ZmJkYzhhYTk5YzMzYmE2ZDVmZjY0YjJkMTIwMjhlMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3RydW1lbnRpbmdBZ2VudHMuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnN0cnVtZW50aW5nQWdlbnRzLmNwcApAQCAt
NDQsMzQgKzQ0LDEzIEBAIEluc3RydW1lbnRpbmdBZ2VudHM6Okluc3RydW1lbnRpbmdBZ2VudHMo
SW5zcGVjdG9yRW52aXJvbm1lbnQmIGVudmlyb25tZW50KQogCiB2b2lkIEluc3RydW1lbnRpbmdB
Z2VudHM6OnJlc2V0KCkKIHsKLSAgICBtX2luc3BlY3RvckFnZW50ID0gbnVsbHB0cjsKLSAgICBt
X2luc3BlY3RvclBhZ2VBZ2VudCA9IG51bGxwdHI7Ci0gICAgbV9pbnNwZWN0b3JDU1NBZ2VudCA9
IG51bGxwdHI7Ci0gICAgbV9pbnNwZWN0b3JMYXllclRyZWVBZ2VudCA9IG51bGxwdHI7Ci0gICAg
bV9pbnNwZWN0b3JXb3JrZXJBZ2VudCA9IG51bGxwdHI7CiAgICAgbV93ZWJDb25zb2xlQWdlbnQg
PSBudWxscHRyOwotICAgIG1faW5zcGVjdG9yRE9NQWdlbnQgPSBudWxscHRyOwotICAgIG1faW5z
cGVjdG9yTmV0d29ya0FnZW50ID0gbnVsbHB0cjsKLSAgICBtX3BhZ2VSdW50aW1lQWdlbnQgPSBu
dWxscHRyOwotICAgIG1faW5zcGVjdG9yU2NyaXB0UHJvZmlsZXJBZ2VudCA9IG51bGxwdHI7Ci0g
ICAgbV9pbnNwZWN0b3JUaW1lbGluZUFnZW50ID0gbnVsbHB0cjsKLSAgICBtX3RyYWNraW5nSW5z
cGVjdG9yVGltZWxpbmVBZ2VudCA9IG51bGxwdHI7Ci0gICAgbV9pbnNwZWN0b3JET01TdG9yYWdl
QWdlbnQgPSBudWxscHRyOwotI2lmIEVOQUJMRShSRVNPVVJDRV9VU0FHRSkKLSAgICBtX2luc3Bl
Y3RvckNQVVByb2ZpbGVyQWdlbnQgPSBudWxscHRyOwotICAgIG1faW5zcGVjdG9yTWVtb3J5QWdl
bnQgPSBudWxscHRyOwotI2VuZGlmCi0gICAgbV9pbnNwZWN0b3JEYXRhYmFzZUFnZW50ID0gbnVs
bHB0cjsKLSAgICBtX2luc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudCA9IG51bGxwdHI7Ci0g
ICAgbV93ZWJEZWJ1Z2dlckFnZW50ID0gbnVsbHB0cjsKLSAgICBtX3BhZ2VEZWJ1Z2dlckFnZW50
ID0gbnVsbHB0cjsKLSAgICBtX3BhZ2VIZWFwQWdlbnQgPSBudWxscHRyOwotICAgIG1faW5zcGVj
dG9yRE9NRGVidWdnZXJBZ2VudCA9IG51bGxwdHI7Ci0gICAgbV9wYWdlRE9NRGVidWdnZXJBZ2Vu
dCA9IG51bGxwdHI7Ci0gICAgbV9pbnNwZWN0b3JDYW52YXNBZ2VudCA9IG51bGxwdHI7Ci0gICAg
bV9wZXJzaXN0ZW50SW5zcGVjdG9yQW5pbWF0aW9uQWdlbnQgPSBudWxscHRyOwotICAgIG1fZW5h
YmxlZEluc3BlY3RvckFuaW1hdGlvbkFnZW50ID0gbnVsbHB0cjsKLSAgICBtX3RyYWNraW5nSW5z
cGVjdG9yQW5pbWF0aW9uQWdlbnQgPSBudWxscHRyOworCisjZGVmaW5lIFJFU0VUX01FTUJFUl9W
QVJJQUJMRV9GT1JfSU5TUEVDVE9SX0FHRU5UKEFnZW50Q2xhc3MsIEFnZW50TmFtZSwgTGlmZXRp
bWVMb3dlciwgTGlmZXRpbWVVcHBlcikgXAorICAgIG1fICMjIExpZmV0aW1lTG93ZXIgIyMgQWdl
bnROYW1lID0gbnVsbHB0cjsgXAorCitGT1JfRUFDSF9JTlNQRUNUT1JfQUdFTlQoUkVTRVRfTUVN
QkVSX1ZBUklBQkxFX0ZPUl9JTlNQRUNUT1JfQUdFTlQpCisjdW5kZWYgUkVTRVRfTUVNQkVSX1ZB
UklBQkxFX0ZPUl9JTlNQRUNUT1JfQUdFTlQKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3RydW1lbnRpbmdBZ2VudHMu
aCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnN0cnVtZW50aW5nQWdlbnRzLmgKaW5kZXgg
ZjU5YzNkYmRjYWY3OGNmOWM2ZDhkYmI0MzJkY2NmMjJmMTVkNTA3ZC4uZjk1ZWJjMGUwN2ZlNTk3
NjI2ZjU2YmZmZDhmMGMyNmM1ZGZhMjQxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3RydW1lbnRpbmdBZ2VudHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zdHJ1bWVudGluZ0FnZW50cy5oCkBAIC01OSw3ICs1OSw2IEBAIGNsYXNzIEluc3BlY3Rv
ck5ldHdvcmtBZ2VudDsKIGNsYXNzIEluc3BlY3RvclBhZ2VBZ2VudDsKIGNsYXNzIEluc3BlY3Rv
clRpbWVsaW5lQWdlbnQ7CiBjbGFzcyBJbnNwZWN0b3JXb3JrZXJBZ2VudDsKLWNsYXNzIFBhZ2U7
CiBjbGFzcyBQYWdlRE9NRGVidWdnZXJBZ2VudDsKIGNsYXNzIFBhZ2VEZWJ1Z2dlckFnZW50Owog
Y2xhc3MgUGFnZUhlYXBBZ2VudDsKQEAgLTY3LDYgKzY2LDcyIEBAIGNsYXNzIFBhZ2VSdW50aW1l
QWdlbnQ7CiBjbGFzcyBXZWJDb25zb2xlQWdlbnQ7CiBjbGFzcyBXZWJEZWJ1Z2dlckFnZW50Owog
CisjZGVmaW5lIERFRklORV9JTlNQRUNUT1JfQUdFTlRfQW5pbWF0aW9uKG1hY3JvLCAuLi4pIG1h
Y3JvKEluc3BlY3RvckFuaW1hdGlvbkFnZW50LCBBbmltYXRpb25BZ2VudCwgX19WQV9BUkdTX18p
CisjZGVmaW5lIERFRklORV9JTlNQRUNUT1JfQUdFTlRfQXBwbGljYXRpb25DYWNoZShtYWNybywg
Li4uKSBtYWNybyhJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQsIEFwcGxpY2F0aW9uQ2Fj
aGVBZ2VudCwgX19WQV9BUkdTX18pCisjZGVmaW5lIERFRklORV9JTlNQRUNUT1JfQUdFTlRfQ2Fu
dmFzKG1hY3JvLCAuLi4pIG1hY3JvKEluc3BlY3RvckNhbnZhc0FnZW50LCBDYW52YXNBZ2VudCwg
X19WQV9BUkdTX18pCisjZGVmaW5lIERFRklORV9JTlNQRUNUT1JfQUdFTlRfQ1NTKG1hY3JvLCAu
Li4pIG1hY3JvKEluc3BlY3RvckNTU0FnZW50LCBDU1NBZ2VudCwgX19WQV9BUkdTX18pCisjZGVm
aW5lIERFRklORV9JTlNQRUNUT1JfQUdFTlRfRE9NKG1hY3JvLCAuLi4pIG1hY3JvKEluc3BlY3Rv
ckRPTUFnZW50LCBET01BZ2VudCwgX19WQV9BUkdTX18pCisjZGVmaW5lIERFRklORV9JTlNQRUNU
T1JfQUdFTlRfRE9NRGVidWdnZXIobWFjcm8sIC4uLikgbWFjcm8oSW5zcGVjdG9yRE9NRGVidWdn
ZXJBZ2VudCwgRE9NRGVidWdnZXJBZ2VudCwgX19WQV9BUkdTX18pCisjZGVmaW5lIERFRklORV9J
TlNQRUNUT1JfQUdFTlRfRE9NRGVidWdnZXJfUGFnZShtYWNybywgLi4uKSBtYWNybyhQYWdlRE9N
RGVidWdnZXJBZ2VudCwgUGFnZURPTURlYnVnZ2VyQWdlbnQsIF9fVkFfQVJHU19fKQorI2RlZmlu
ZSBERUZJTkVfSU5TUEVDVE9SX0FHRU5UX0RPTVN0b3JhZ2UobWFjcm8sIC4uLikgbWFjcm8oSW5z
cGVjdG9yRE9NU3RvcmFnZUFnZW50LCBET01TdG9yYWdlQWdlbnQsIF9fVkFfQVJHU19fKQorI2Rl
ZmluZSBERUZJTkVfSU5TUEVDVE9SX0FHRU5UX0RhdGFiYXNlKG1hY3JvLCAuLi4pIG1hY3JvKElu
c3BlY3RvckRhdGFiYXNlQWdlbnQsIERhdGFiYXNlQWdlbnQsIF9fVkFfQVJHU19fKQorI2RlZmlu
ZSBERUZJTkVfSU5TUEVDVE9SX0FHRU5UX0RlYnVnZ2VyX1dlYihtYWNybywgLi4uKSBtYWNybyhX
ZWJEZWJ1Z2dlckFnZW50LCBXZWJEZWJ1Z2dlckFnZW50LCBfX1ZBX0FSR1NfXykKKyNkZWZpbmUg
REVGSU5FX0lOU1BFQ1RPUl9BR0VOVF9EZWJ1Z2dlcl9QYWdlKG1hY3JvLCAuLi4pIG1hY3JvKFBh
Z2VEZWJ1Z2dlckFnZW50LCBQYWdlRGVidWdnZXJBZ2VudCwgX19WQV9BUkdTX18pCisjZGVmaW5l
IERFRklORV9JTlNQRUNUT1JfQUdFTlRfSGVhcF9QYWdlKG1hY3JvLCAuLi4pIG1hY3JvKFBhZ2VI
ZWFwQWdlbnQsIFBhZ2VIZWFwQWdlbnQsIF9fVkFfQVJHU19fKQorI2RlZmluZSBERUZJTkVfSU5T
UEVDVE9SX0FHRU5UX0luc3BlY3RvcihtYWNybywgLi4uKSBtYWNybyhJbnNwZWN0b3I6Okluc3Bl
Y3RvckFnZW50LCBJbnNwZWN0b3JBZ2VudCwgX19WQV9BUkdTX18pCisjZGVmaW5lIERFRklORV9J
TlNQRUNUT1JfQUdFTlRfTGF5ZXJUcmVlKG1hY3JvLCAuLi4pIG1hY3JvKEluc3BlY3RvckxheWVy
VHJlZUFnZW50LCBMYXllclRyZWVBZ2VudCwgX19WQV9BUkdTX18pCisjZGVmaW5lIERFRklORV9J
TlNQRUNUT1JfQUdFTlRfTmV0d29yayhtYWNybywgLi4uKSBtYWNybyhJbnNwZWN0b3JOZXR3b3Jr
QWdlbnQsIE5ldHdvcmtBZ2VudCwgX19WQV9BUkdTX18pCisjZGVmaW5lIERFRklORV9JTlNQRUNU
T1JfQUdFTlRfUGFnZShtYWNybywgLi4uKSBtYWNybyhJbnNwZWN0b3JQYWdlQWdlbnQsIFBhZ2VB
Z2VudCwgX19WQV9BUkdTX18pCisjZGVmaW5lIERFRklORV9JTlNQRUNUT1JfQUdFTlRfUnVudGlt
ZV9QYWdlKG1hY3JvLCAuLi4pIG1hY3JvKFBhZ2VSdW50aW1lQWdlbnQsIFBhZ2VSdW50aW1lQWdl
bnQsIF9fVkFfQVJHU19fKQorI2RlZmluZSBERUZJTkVfSU5TUEVDVE9SX0FHRU5UX1NjcmlwdFBy
b2ZpbGVyKG1hY3JvLCAuLi4pIG1hY3JvKEluc3BlY3Rvcjo6SW5zcGVjdG9yU2NyaXB0UHJvZmls
ZXJBZ2VudCwgU2NyaXB0UHJvZmlsZXJBZ2VudCwgX19WQV9BUkdTX18pCisjZGVmaW5lIERFRklO
RV9JTlNQRUNUT1JfQUdFTlRfVGltZWxpbmUobWFjcm8sIC4uLikgbWFjcm8oSW5zcGVjdG9yVGlt
ZWxpbmVBZ2VudCwgVGltZWxpbmVBZ2VudCwgX19WQV9BUkdTX18pCisjZGVmaW5lIERFRklORV9J
TlNQRUNUT1JfQUdFTlRfV29ya2VyKG1hY3JvLCAuLi4pIG1hY3JvKEluc3BlY3RvcldvcmtlckFn
ZW50LCBXb3JrZXJBZ2VudCwgX19WQV9BUkdTX18pCisKKyNpZiBFTkFCTEUoUkVTT1VSQ0VfVVNB
R0UpCisjZGVmaW5lIERFRklORV9JTlNQRUNUT1JfQUdFTlRfQ1BVUHJvZmlsZXIobWFjcm8sIC4u
LikgbWFjcm8oSW5zcGVjdG9yQ1BVUHJvZmlsZXJBZ2VudCwgQ1BVUHJvZmlsZXJBZ2VudCwgX19W
QV9BUkdTX18pCisjZGVmaW5lIERFRklORV9JTlNQRUNUT1JfQUdFTlRfTWVtb3J5KG1hY3JvLCAu
Li4pIG1hY3JvKEluc3BlY3Rvck1lbW9yeUFnZW50LCBNZW1vcnlBZ2VudCwgX19WQV9BUkdTX18p
CisjZWxzZQorI2RlZmluZSBERUZJTkVfSU5TUEVDVE9SX0FHRU5UX0NQVVByb2ZpbGVyKG1hY3Jv
LCAuLi4pCisjZGVmaW5lIERFRklORV9JTlNQRUNUT1JfQUdFTlRfTWVtb3J5KG1hY3JvLCAuLi4p
CisjZW5kaWYKKworLy8gU2V0IHdoZW4gV2ViIEluc3BlY3RvciBpcyBjb25uZWN0ZWQKKyNkZWZp
bmUgREVGSU5FX1BFUlNJU1RFTlRfSU5TUEVDVE9SX0FHRU5UKGFnZW50LCBtYWNybykgREVGSU5F
X0lOU1BFQ1RPUl9BR0VOVF8gIyMgYWdlbnQobWFjcm8sIHBlcnNpc3RlbnQsIFBlcnNpc3RlbnQp
CisKKy8vIFNldCB3aGVuIGBlbmFibGVgZCwgc3VjaCBhcyBpZiB0aGUgY29ycmVzcG9uZGluZyB0
YWIgaXMgdmlzaWJsZQorI2RlZmluZSBERUZJTkVfRU5BQkxFRF9JTlNQRUNUT1JfQUdFTlQoYWdl
bnQsIG1hY3JvKSBERUZJTkVfSU5TUEVDVE9SX0FHRU5UXyAjIyBhZ2VudChtYWNybywgZW5hYmxl
ZCwgRW5hYmxlZCkKKworLy8gU2V0IHdoZW4gcGFydCBvZiBhIHRpbWVsaW5lIHJlY29yZGluZy4K
KyNkZWZpbmUgREVGSU5FX1RSQUNLSU5HX0lOU1BFQ1RPUl9BR0VOVChhZ2VudCwgbWFjcm8pIERF
RklORV9JTlNQRUNUT1JfQUdFTlRfICMjIGFnZW50KG1hY3JvLCB0cmFja2luZywgVHJhY2tpbmcp
CisKKyNkZWZpbmUgRk9SX0VBQ0hfSU5TUEVDVE9SX0FHRU5UKG1hY3JvKSBcCisgICAgREVGSU5F
X1BFUlNJU1RFTlRfSU5TUEVDVE9SX0FHRU5UKEFuaW1hdGlvbiwgbWFjcm8pIFwKKyAgICBERUZJ
TkVfUEVSU0lTVEVOVF9JTlNQRUNUT1JfQUdFTlQoQ1BVUHJvZmlsZXIsIG1hY3JvKSBcCisgICAg
REVGSU5FX1BFUlNJU1RFTlRfSU5TUEVDVE9SX0FHRU5UKERPTSwgbWFjcm8pIFwKKyAgICBERUZJ
TkVfUEVSU0lTVEVOVF9JTlNQRUNUT1JfQUdFTlQoSW5zcGVjdG9yLCBtYWNybykgXAorICAgIERF
RklORV9QRVJTSVNURU5UX0lOU1BFQ1RPUl9BR0VOVChNZW1vcnksIG1hY3JvKSBcCisgICAgREVG
SU5FX1BFUlNJU1RFTlRfSU5TUEVDVE9SX0FHRU5UKFNjcmlwdFByb2ZpbGVyLCBtYWNybykgXAor
ICAgIERFRklORV9QRVJTSVNURU5UX0lOU1BFQ1RPUl9BR0VOVChXb3JrZXIsIG1hY3JvKSBcCisg
ICAgREVGSU5FX0VOQUJMRURfSU5TUEVDVE9SX0FHRU5UKEFuaW1hdGlvbiwgbWFjcm8pIFwKKyAg
ICBERUZJTkVfRU5BQkxFRF9JTlNQRUNUT1JfQUdFTlQoQXBwbGljYXRpb25DYWNoZSwgbWFjcm8p
IFwKKyAgICBERUZJTkVfRU5BQkxFRF9JTlNQRUNUT1JfQUdFTlQoQ2FudmFzLCBtYWNybykgXAor
ICAgIERFRklORV9FTkFCTEVEX0lOU1BFQ1RPUl9BR0VOVChDU1MsIG1hY3JvKSBcCisgICAgREVG
SU5FX0VOQUJMRURfSU5TUEVDVE9SX0FHRU5UKERhdGFiYXNlLCBtYWNybykgXAorICAgIERFRklO
RV9FTkFCTEVEX0lOU1BFQ1RPUl9BR0VOVChEZWJ1Z2dlcl9QYWdlLCBtYWNybykgXAorICAgIERF
RklORV9FTkFCTEVEX0lOU1BFQ1RPUl9BR0VOVChEZWJ1Z2dlcl9XZWIsIG1hY3JvKSBcCisgICAg
REVGSU5FX0VOQUJMRURfSU5TUEVDVE9SX0FHRU5UKERPTURlYnVnZ2VyLCBtYWNybykgXAorICAg
IERFRklORV9FTkFCTEVEX0lOU1BFQ1RPUl9BR0VOVChET01EZWJ1Z2dlcl9QYWdlLCBtYWNybykg
XAorICAgIERFRklORV9FTkFCTEVEX0lOU1BFQ1RPUl9BR0VOVChET01TdG9yYWdlLCBtYWNybykg
XAorICAgIERFRklORV9FTkFCTEVEX0lOU1BFQ1RPUl9BR0VOVChIZWFwX1BhZ2UsIG1hY3JvKSBc
CisgICAgREVGSU5FX0VOQUJMRURfSU5TUEVDVE9SX0FHRU5UKExheWVyVHJlZSwgbWFjcm8pIFwK
KyAgICBERUZJTkVfRU5BQkxFRF9JTlNQRUNUT1JfQUdFTlQoTWVtb3J5LCBtYWNybykgXAorICAg
IERFRklORV9FTkFCTEVEX0lOU1BFQ1RPUl9BR0VOVChOZXR3b3JrLCBtYWNybykgXAorICAgIERF
RklORV9FTkFCTEVEX0lOU1BFQ1RPUl9BR0VOVChQYWdlLCBtYWNybykgXAorICAgIERFRklORV9F
TkFCTEVEX0lOU1BFQ1RPUl9BR0VOVChSdW50aW1lX1BhZ2UsIG1hY3JvKSBcCisgICAgREVGSU5F
X0VOQUJMRURfSU5TUEVDVE9SX0FHRU5UKFRpbWVsaW5lLCBtYWNybykgXAorICAgIERFRklORV9U
UkFDS0lOR19JTlNQRUNUT1JfQUdFTlQoQW5pbWF0aW9uLCBtYWNybykgXAorICAgIERFRklORV9U
UkFDS0lOR19JTlNQRUNUT1JfQUdFTlQoVGltZWxpbmUsIG1hY3JvKSBcCisKIGNsYXNzIEluc3Ry
dW1lbnRpbmdBZ2VudHMgOiBwdWJsaWMgUmVmQ291bnRlZDxJbnN0cnVtZW50aW5nQWdlbnRzPiB7
CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSW5zdHJ1bWVudGluZ0FnZW50cyk7CiAgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CkBAIC04MiwxMTkgKzE0NywyOSBAQCBwdWJsaWM6CiAKICAg
ICBJbnNwZWN0b3I6Okluc3BlY3RvckVudmlyb25tZW50JiBpbnNwZWN0b3JFbnZpcm9ubWVudCgp
IGNvbnN0IHsgcmV0dXJuIG1fZW52aXJvbm1lbnQ7IH0KIAotICAgIEluc3BlY3Rvcjo6SW5zcGVj
dG9yQWdlbnQqIGluc3BlY3RvckFnZW50KCkgY29uc3QgeyByZXR1cm4gbV9pbnNwZWN0b3JBZ2Vu
dDsgfQotICAgIHZvaWQgc2V0SW5zcGVjdG9yQWdlbnQoSW5zcGVjdG9yOjpJbnNwZWN0b3JBZ2Vu
dCogYWdlbnQpIHsgbV9pbnNwZWN0b3JBZ2VudCA9IGFnZW50OyB9Ci0KLSAgICBJbnNwZWN0b3JQ
YWdlQWdlbnQqIGluc3BlY3RvclBhZ2VBZ2VudCgpIGNvbnN0IHsgcmV0dXJuIG1faW5zcGVjdG9y
UGFnZUFnZW50OyB9Ci0gICAgdm9pZCBzZXRJbnNwZWN0b3JQYWdlQWdlbnQoSW5zcGVjdG9yUGFn
ZUFnZW50KiBhZ2VudCkgeyBtX2luc3BlY3RvclBhZ2VBZ2VudCA9IGFnZW50OyB9Ci0KLSAgICBJ
bnNwZWN0b3JDYW52YXNBZ2VudCogaW5zcGVjdG9yQ2FudmFzQWdlbnQoKSBjb25zdCB7IHJldHVy
biBtX2luc3BlY3RvckNhbnZhc0FnZW50OyB9Ci0gICAgdm9pZCBzZXRJbnNwZWN0b3JDYW52YXNB
Z2VudChJbnNwZWN0b3JDYW52YXNBZ2VudCogYWdlbnQpIHsgbV9pbnNwZWN0b3JDYW52YXNBZ2Vu
dCA9IGFnZW50OyB9Ci0KLSAgICBJbnNwZWN0b3JDU1NBZ2VudCogaW5zcGVjdG9yQ1NTQWdlbnQo
KSBjb25zdCB7IHJldHVybiBtX2luc3BlY3RvckNTU0FnZW50OyB9Ci0gICAgdm9pZCBzZXRJbnNw
ZWN0b3JDU1NBZ2VudChJbnNwZWN0b3JDU1NBZ2VudCogYWdlbnQpIHsgbV9pbnNwZWN0b3JDU1NB
Z2VudCA9IGFnZW50OyB9Ci0KKyAgICAvLyBUaGUgQ29uc29sZSBhZ2VudCBpcyBzcGVjaWFsIGlu
IHRoYXQgaXQgZXhpc3RzIGV2ZW4gaWYgV2ViIEluc3BlY3RvciBpcyBub3Qgb3Blbi4KICAgICBX
ZWJDb25zb2xlQWdlbnQqIHdlYkNvbnNvbGVBZ2VudCgpIGNvbnN0IHsgcmV0dXJuIG1fd2ViQ29u
c29sZUFnZW50OyB9CiAgICAgdm9pZCBzZXRXZWJDb25zb2xlQWdlbnQoV2ViQ29uc29sZUFnZW50
KiBhZ2VudCkgeyBtX3dlYkNvbnNvbGVBZ2VudCA9IGFnZW50OyB9CiAKLSAgICBJbnNwZWN0b3JE
T01BZ2VudCogaW5zcGVjdG9yRE9NQWdlbnQoKSBjb25zdCB7IHJldHVybiBtX2luc3BlY3RvckRP
TUFnZW50OyB9Ci0gICAgdm9pZCBzZXRJbnNwZWN0b3JET01BZ2VudChJbnNwZWN0b3JET01BZ2Vu
dCogYWdlbnQpIHsgbV9pbnNwZWN0b3JET01BZ2VudCA9IGFnZW50OyB9CisjZGVmaW5lIERFQ0xB
UkVfR0VUVEVSX1NFVFRFUl9GT1JfSU5TUEVDVE9SX0FHRU5UKEFnZW50Q2xhc3MsIEFnZW50TmFt
ZSwgTGlmZXRpbWVMb3dlciwgTGlmZXRpbWVVcHBlcikgXAorICAgIEFnZW50Q2xhc3MqIExpZmV0
aW1lTG93ZXIgIyMgQWdlbnROYW1lKCkgY29uc3QgeyByZXR1cm4gbV8gIyMgTGlmZXRpbWVMb3dl
ciAjIyBBZ2VudE5hbWU7IH0gXAorICAgIHZvaWQgc2V0ICMjIExpZmV0aW1lVXBwZXIgIyMgQWdl
bnROYW1lKEFnZW50Q2xhc3MqIGFnZW50KSB7IG1fICMjIExpZmV0aW1lTG93ZXIgIyMgQWdlbnRO
YW1lID0gYWdlbnQ7IH0gXAogCi0gICAgSW5zcGVjdG9yTmV0d29ya0FnZW50KiBpbnNwZWN0b3JO
ZXR3b3JrQWdlbnQoKSBjb25zdCB7IHJldHVybiBtX2luc3BlY3Rvck5ldHdvcmtBZ2VudDsgfQot
ICAgIHZvaWQgc2V0SW5zcGVjdG9yTmV0d29ya0FnZW50KEluc3BlY3Rvck5ldHdvcmtBZ2VudCog
YWdlbnQpIHsgbV9pbnNwZWN0b3JOZXR3b3JrQWdlbnQgPSBhZ2VudDsgfQotCi0gICAgUGFnZVJ1
bnRpbWVBZ2VudCogcGFnZVJ1bnRpbWVBZ2VudCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZVJ1bnRp
bWVBZ2VudDsgfQotICAgIHZvaWQgc2V0UGFnZVJ1bnRpbWVBZ2VudChQYWdlUnVudGltZUFnZW50
KiBhZ2VudCkgeyBtX3BhZ2VSdW50aW1lQWdlbnQgPSBhZ2VudDsgfQotCi0gICAgSW5zcGVjdG9y
OjpJbnNwZWN0b3JTY3JpcHRQcm9maWxlckFnZW50KiBpbnNwZWN0b3JTY3JpcHRQcm9maWxlckFn
ZW50KCkgY29uc3QgeyByZXR1cm4gbV9pbnNwZWN0b3JTY3JpcHRQcm9maWxlckFnZW50OyB9Ci0g
ICAgdm9pZCBzZXRJbnNwZWN0b3JTY3JpcHRQcm9maWxlckFnZW50KEluc3BlY3Rvcjo6SW5zcGVj
dG9yU2NyaXB0UHJvZmlsZXJBZ2VudCogYWdlbnQpIHsgbV9pbnNwZWN0b3JTY3JpcHRQcm9maWxl
ckFnZW50ID0gYWdlbnQ7IH0KLQotICAgIEluc3BlY3RvclRpbWVsaW5lQWdlbnQqIGluc3BlY3Rv
clRpbWVsaW5lQWdlbnQoKSBjb25zdCB7IHJldHVybiBtX2luc3BlY3RvclRpbWVsaW5lQWdlbnQ7
IH0KLSAgICB2b2lkIHNldEluc3BlY3RvclRpbWVsaW5lQWdlbnQoSW5zcGVjdG9yVGltZWxpbmVB
Z2VudCogYWdlbnQpIHsgbV9pbnNwZWN0b3JUaW1lbGluZUFnZW50ID0gYWdlbnQ7IH0KLQotICAg
IEluc3BlY3RvclRpbWVsaW5lQWdlbnQqIHRyYWNraW5nSW5zcGVjdG9yVGltZWxpbmVBZ2VudCgp
IGNvbnN0IHsgcmV0dXJuIG1fdHJhY2tpbmdJbnNwZWN0b3JUaW1lbGluZUFnZW50OyB9Ci0gICAg
dm9pZCBzZXRUcmFja2luZ0luc3BlY3RvclRpbWVsaW5lQWdlbnQoSW5zcGVjdG9yVGltZWxpbmVB
Z2VudCogYWdlbnQpIHsgbV90cmFja2luZ0luc3BlY3RvclRpbWVsaW5lQWdlbnQgPSBhZ2VudDsg
fQotCi0gICAgSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50KiBpbnNwZWN0b3JET01TdG9yYWdlQWdl
bnQoKSBjb25zdCB7IHJldHVybiBtX2luc3BlY3RvckRPTVN0b3JhZ2VBZ2VudDsgfQotICAgIHZv
aWQgc2V0SW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50KEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudCog
YWdlbnQpIHsgbV9pbnNwZWN0b3JET01TdG9yYWdlQWdlbnQgPSBhZ2VudDsgfQotCi0jaWYgRU5B
QkxFKFJFU09VUkNFX1VTQUdFKQotICAgIEluc3BlY3RvckNQVVByb2ZpbGVyQWdlbnQqIGluc3Bl
Y3RvckNQVVByb2ZpbGVyQWdlbnQoKSBjb25zdCB7IHJldHVybiBtX2luc3BlY3RvckNQVVByb2Zp
bGVyQWdlbnQ7IH0KLSAgICB2b2lkIHNldEluc3BlY3RvckNQVVByb2ZpbGVyQWdlbnQoSW5zcGVj
dG9yQ1BVUHJvZmlsZXJBZ2VudCogYWdlbnQpIHsgbV9pbnNwZWN0b3JDUFVQcm9maWxlckFnZW50
ID0gYWdlbnQ7IH0KLQotICAgIEluc3BlY3Rvck1lbW9yeUFnZW50KiBpbnNwZWN0b3JNZW1vcnlB
Z2VudCgpIGNvbnN0IHsgcmV0dXJuIG1faW5zcGVjdG9yTWVtb3J5QWdlbnQ7IH0KLSAgICB2b2lk
IHNldEluc3BlY3Rvck1lbW9yeUFnZW50KEluc3BlY3Rvck1lbW9yeUFnZW50KiBhZ2VudCkgeyBt
X2luc3BlY3Rvck1lbW9yeUFnZW50ID0gYWdlbnQ7IH0KLSNlbmRpZgotCi0gICAgSW5zcGVjdG9y
RGF0YWJhc2VBZ2VudCogaW5zcGVjdG9yRGF0YWJhc2VBZ2VudCgpIGNvbnN0IHsgcmV0dXJuIG1f
aW5zcGVjdG9yRGF0YWJhc2VBZ2VudDsgfQotICAgIHZvaWQgc2V0SW5zcGVjdG9yRGF0YWJhc2VB
Z2VudChJbnNwZWN0b3JEYXRhYmFzZUFnZW50KiBhZ2VudCkgeyBtX2luc3BlY3RvckRhdGFiYXNl
QWdlbnQgPSBhZ2VudDsgfQotCi0gICAgSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50KiBp
bnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQoKSBjb25zdCB7IHJldHVybiBtX2luc3BlY3Rv
ckFwcGxpY2F0aW9uQ2FjaGVBZ2VudDsgfQotICAgIHZvaWQgc2V0SW5zcGVjdG9yQXBwbGljYXRp
b25DYWNoZUFnZW50KEluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudCogYWdlbnQpIHsgbV9p
bnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQgPSBhZ2VudDsgfQotCi0gICAgV2ViRGVidWdn
ZXJBZ2VudCogd2ViRGVidWdnZXJBZ2VudCgpIGNvbnN0IHsgcmV0dXJuIG1fd2ViRGVidWdnZXJB
Z2VudDsgfQotICAgIHZvaWQgc2V0V2ViRGVidWdnZXJBZ2VudChXZWJEZWJ1Z2dlckFnZW50KiBh
Z2VudCkgeyBtX3dlYkRlYnVnZ2VyQWdlbnQgPSBhZ2VudDsgfQotCi0gICAgUGFnZURlYnVnZ2Vy
QWdlbnQqIHBhZ2VEZWJ1Z2dlckFnZW50KCkgY29uc3QgeyByZXR1cm4gbV9wYWdlRGVidWdnZXJB
Z2VudDsgfQotICAgIHZvaWQgc2V0UGFnZURlYnVnZ2VyQWdlbnQoUGFnZURlYnVnZ2VyQWdlbnQq
IGFnZW50KSB7IG1fcGFnZURlYnVnZ2VyQWdlbnQgPSBhZ2VudDsgfQotCi0gICAgUGFnZUhlYXBB
Z2VudCogcGFnZUhlYXBBZ2VudCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZUhlYXBBZ2VudDsgfQot
ICAgIHZvaWQgc2V0UGFnZUhlYXBBZ2VudChQYWdlSGVhcEFnZW50KiBhZ2VudCkgeyBtX3BhZ2VI
ZWFwQWdlbnQgPSBhZ2VudDsgfQotCi0gICAgSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudCogaW5z
cGVjdG9yRE9NRGVidWdnZXJBZ2VudCgpIGNvbnN0IHsgcmV0dXJuIG1faW5zcGVjdG9yRE9NRGVi
dWdnZXJBZ2VudDsgfQotICAgIHZvaWQgc2V0SW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudChJbnNw
ZWN0b3JET01EZWJ1Z2dlckFnZW50KiBhZ2VudCkgeyBtX2luc3BlY3RvckRPTURlYnVnZ2VyQWdl
bnQgPSBhZ2VudDsgfQotCi0gICAgUGFnZURPTURlYnVnZ2VyQWdlbnQqIHBhZ2VET01EZWJ1Z2dl
ckFnZW50KCkgY29uc3QgeyByZXR1cm4gbV9wYWdlRE9NRGVidWdnZXJBZ2VudDsgfQotICAgIHZv
aWQgc2V0UGFnZURPTURlYnVnZ2VyQWdlbnQoUGFnZURPTURlYnVnZ2VyQWdlbnQqIGFnZW50KSB7
IG1fcGFnZURPTURlYnVnZ2VyQWdlbnQgPSBhZ2VudDsgfQotCi0gICAgSW5zcGVjdG9yTGF5ZXJU
cmVlQWdlbnQqIGluc3BlY3RvckxheWVyVHJlZUFnZW50KCkgY29uc3QgeyByZXR1cm4gbV9pbnNw
ZWN0b3JMYXllclRyZWVBZ2VudDsgfQotICAgIHZvaWQgc2V0SW5zcGVjdG9yTGF5ZXJUcmVlQWdl
bnQoSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQqIGFnZW50KSB7IG1faW5zcGVjdG9yTGF5ZXJUcmVl
QWdlbnQgPSBhZ2VudDsgfQotCi0gICAgSW5zcGVjdG9yV29ya2VyQWdlbnQqIGluc3BlY3Rvcldv
cmtlckFnZW50KCkgY29uc3QgeyByZXR1cm4gbV9pbnNwZWN0b3JXb3JrZXJBZ2VudDsgfQotICAg
IHZvaWQgc2V0SW5zcGVjdG9yV29ya2VyQWdlbnQoSW5zcGVjdG9yV29ya2VyQWdlbnQqIGFnZW50
KSB7IG1faW5zcGVjdG9yV29ya2VyQWdlbnQgPSBhZ2VudDsgfQotCi0gICAgSW5zcGVjdG9yQW5p
bWF0aW9uQWdlbnQqIHBlcnNpc3RlbnRJbnNwZWN0b3JBbmltYXRpb25BZ2VudCgpIGNvbnN0IHsg
cmV0dXJuIG1fcGVyc2lzdGVudEluc3BlY3RvckFuaW1hdGlvbkFnZW50OyB9Ci0gICAgdm9pZCBz
ZXRQZXJzaXN0ZW50SW5zcGVjdG9yQW5pbWF0aW9uQWdlbnQoSW5zcGVjdG9yQW5pbWF0aW9uQWdl
bnQqIGFnZW50KSB7IG1fcGVyc2lzdGVudEluc3BlY3RvckFuaW1hdGlvbkFnZW50ID0gYWdlbnQ7
IH0KLQotICAgIEluc3BlY3RvckFuaW1hdGlvbkFnZW50KiBlbmFibGVkSW5zcGVjdG9yQW5pbWF0
aW9uQWdlbnQoKSBjb25zdCB7IHJldHVybiBtX2VuYWJsZWRJbnNwZWN0b3JBbmltYXRpb25BZ2Vu
dDsgfQotICAgIHZvaWQgc2V0RW5hYmxlZEluc3BlY3RvckFuaW1hdGlvbkFnZW50KEluc3BlY3Rv
ckFuaW1hdGlvbkFnZW50KiBhZ2VudCkgeyBtX2VuYWJsZWRJbnNwZWN0b3JBbmltYXRpb25BZ2Vu
dCA9IGFnZW50OyB9Ci0KLSAgICBJbnNwZWN0b3JBbmltYXRpb25BZ2VudCogdHJhY2tpbmdJbnNw
ZWN0b3JBbmltYXRpb25BZ2VudCgpIGNvbnN0IHsgcmV0dXJuIG1fdHJhY2tpbmdJbnNwZWN0b3JB
bmltYXRpb25BZ2VudDsgfQotICAgIHZvaWQgc2V0VHJhY2tpbmdJbnNwZWN0b3JBbmltYXRpb25B
Z2VudChJbnNwZWN0b3JBbmltYXRpb25BZ2VudCogYWdlbnQpIHsgbV90cmFja2luZ0luc3BlY3Rv
ckFuaW1hdGlvbkFnZW50ID0gYWdlbnQ7IH0KK0ZPUl9FQUNIX0lOU1BFQ1RPUl9BR0VOVChERUNM
QVJFX0dFVFRFUl9TRVRURVJfRk9SX0lOU1BFQ1RPUl9BR0VOVCkKKyN1bmRlZiBERUNMQVJFX0dF
VFRFUl9TRVRURVJfRk9SX0lOU1BFQ1RPUl9BR0VOVAogCiBwcml2YXRlOgogICAgIEluc3RydW1l
bnRpbmdBZ2VudHMoSW5zcGVjdG9yOjpJbnNwZWN0b3JFbnZpcm9ubWVudCYpOwogCiAgICAgSW5z
cGVjdG9yOjpJbnNwZWN0b3JFbnZpcm9ubWVudCYgbV9lbnZpcm9ubWVudDsKIAotICAgIEluc3Bl
Y3Rvcjo6SW5zcGVjdG9yQWdlbnQqIG1faW5zcGVjdG9yQWdlbnQgeyBudWxscHRyIH07Ci0gICAg
SW5zcGVjdG9yUGFnZUFnZW50KiBtX2luc3BlY3RvclBhZ2VBZ2VudCB7IG51bGxwdHIgfTsKLSAg
ICBJbnNwZWN0b3JDU1NBZ2VudCogbV9pbnNwZWN0b3JDU1NBZ2VudCB7IG51bGxwdHIgfTsKLSAg
ICBJbnNwZWN0b3JMYXllclRyZWVBZ2VudCogbV9pbnNwZWN0b3JMYXllclRyZWVBZ2VudCB7IG51
bGxwdHIgfTsKLSAgICBJbnNwZWN0b3JXb3JrZXJBZ2VudCogbV9pbnNwZWN0b3JXb3JrZXJBZ2Vu
dCB7IG51bGxwdHIgfTsKICAgICBXZWJDb25zb2xlQWdlbnQqIG1fd2ViQ29uc29sZUFnZW50IHsg
bnVsbHB0ciB9OwotICAgIEluc3BlY3RvckRPTUFnZW50KiBtX2luc3BlY3RvckRPTUFnZW50IHsg
bnVsbHB0ciB9OwotICAgIEluc3BlY3Rvck5ldHdvcmtBZ2VudCogbV9pbnNwZWN0b3JOZXR3b3Jr
QWdlbnQgeyBudWxscHRyIH07Ci0gICAgUGFnZVJ1bnRpbWVBZ2VudCogbV9wYWdlUnVudGltZUFn
ZW50IHsgbnVsbHB0ciB9OwotICAgIEluc3BlY3Rvcjo6SW5zcGVjdG9yU2NyaXB0UHJvZmlsZXJB
Z2VudCogbV9pbnNwZWN0b3JTY3JpcHRQcm9maWxlckFnZW50IHsgbnVsbHB0ciB9OwotICAgIElu
c3BlY3RvclRpbWVsaW5lQWdlbnQqIG1faW5zcGVjdG9yVGltZWxpbmVBZ2VudCB7IG51bGxwdHIg
fTsKLSAgICBJbnNwZWN0b3JUaW1lbGluZUFnZW50KiBtX3RyYWNraW5nSW5zcGVjdG9yVGltZWxp
bmVBZ2VudCB7IG51bGxwdHIgfTsKLSAgICBJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQqIG1faW5z
cGVjdG9yRE9NU3RvcmFnZUFnZW50IHsgbnVsbHB0ciB9OwotI2lmIEVOQUJMRShSRVNPVVJDRV9V
U0FHRSkKLSAgICBJbnNwZWN0b3JDUFVQcm9maWxlckFnZW50KiBtX2luc3BlY3RvckNQVVByb2Zp
bGVyQWdlbnQgeyBudWxscHRyIH07Ci0gICAgSW5zcGVjdG9yTWVtb3J5QWdlbnQqIG1faW5zcGVj
dG9yTWVtb3J5QWdlbnQgeyBudWxscHRyIH07Ci0jZW5kaWYKLSAgICBJbnNwZWN0b3JEYXRhYmFz
ZUFnZW50KiBtX2luc3BlY3RvckRhdGFiYXNlQWdlbnQgeyBudWxscHRyIH07Ci0gICAgSW5zcGVj
dG9yQXBwbGljYXRpb25DYWNoZUFnZW50KiBtX2luc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2Vu
dCB7IG51bGxwdHIgfTsKLSAgICBXZWJEZWJ1Z2dlckFnZW50KiBtX3dlYkRlYnVnZ2VyQWdlbnQg
eyBudWxscHRyIH07Ci0gICAgUGFnZURlYnVnZ2VyQWdlbnQqIG1fcGFnZURlYnVnZ2VyQWdlbnQg
eyBudWxscHRyIH07Ci0gICAgUGFnZUhlYXBBZ2VudCogbV9wYWdlSGVhcEFnZW50IHsgbnVsbHB0
ciB9OwotICAgIEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQqIG1faW5zcGVjdG9yRE9NRGVidWdn
ZXJBZ2VudCB7IG51bGxwdHIgfTsKLSAgICBQYWdlRE9NRGVidWdnZXJBZ2VudCogbV9wYWdlRE9N
RGVidWdnZXJBZ2VudCB7IG51bGxwdHIgfTsKLSAgICBJbnNwZWN0b3JDYW52YXNBZ2VudCogbV9p
bnNwZWN0b3JDYW52YXNBZ2VudCB7IG51bGxwdHIgfTsKLSAgICBJbnNwZWN0b3JBbmltYXRpb25B
Z2VudCogbV9wZXJzaXN0ZW50SW5zcGVjdG9yQW5pbWF0aW9uQWdlbnQgeyBudWxscHRyIH07Ci0g
ICAgSW5zcGVjdG9yQW5pbWF0aW9uQWdlbnQqIG1fZW5hYmxlZEluc3BlY3RvckFuaW1hdGlvbkFn
ZW50IHsgbnVsbHB0ciB9OwotICAgIEluc3BlY3RvckFuaW1hdGlvbkFnZW50KiBtX3RyYWNraW5n
SW5zcGVjdG9yQW5pbWF0aW9uQWdlbnQgeyBudWxscHRyIH07CisKKyNkZWZpbmUgREVDTEFSRV9N
RU1CRVJfVkFSSUFCTEVfRk9SX0lOU1BFQ1RPUl9BR0VOVChBZ2VudENsYXNzLCBBZ2VudE5hbWUs
IExpZmV0aW1lTG93ZXIsIExpZmV0aW1lVXBwZXIpIFwKKyAgICBBZ2VudENsYXNzKiBtXyAjIyBM
aWZldGltZUxvd2VyICMjIEFnZW50TmFtZSB7IG51bGxwdHIgfTsgXAorCitGT1JfRUFDSF9JTlNQ
RUNUT1JfQUdFTlQoREVDTEFSRV9NRU1CRVJfVkFSSUFCTEVfRk9SX0lOU1BFQ1RPUl9BR0VOVCkK
KyN1bmRlZiBERUNMQVJFX01FTUJFUl9WQVJJQUJMRV9GT1JfSU5TUEVDVE9SX0FHRU5UCiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvYWdlbnRzL0luc3BlY3RvckFuaW1hdGlvbkFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQW5pbWF0aW9uQWdlbnQuY3BwCmluZGV4IGUxODU3
YjhmZjQ2MjRkNmY4MzA1NTZmM2U2OTI4MGI4ZWIxZDUxNjEuLjBmYjllOTM3ZjMxYjBmMjI3NjQx
M2M1NjNmZDE4NGU1OGE5NTIyNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvSW5zcGVjdG9yQW5pbWF0aW9uQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQW5pbWF0aW9uQWdlbnQuY3BwCkBAIC0yMzIsOCAr
MjMyLDggQEAgSW5zcGVjdG9yQW5pbWF0aW9uQWdlbnQ6On5JbnNwZWN0b3JBbmltYXRpb25BZ2Vu
dCgpID0gZGVmYXVsdDsKIAogdm9pZCBJbnNwZWN0b3JBbmltYXRpb25BZ2VudDo6ZGlkQ3JlYXRl
RnJvbnRlbmRBbmRCYWNrZW5kKEZyb250ZW5kUm91dGVyKiwgQmFja2VuZERpc3BhdGNoZXIqKQog
ewotICAgIEFTU0VSVChtX2luc3RydW1lbnRpbmdBZ2VudHMucGVyc2lzdGVudEluc3BlY3RvckFu
aW1hdGlvbkFnZW50KCkgIT0gdGhpcyk7Ci0gICAgbV9pbnN0cnVtZW50aW5nQWdlbnRzLnNldFBl
cnNpc3RlbnRJbnNwZWN0b3JBbmltYXRpb25BZ2VudCh0aGlzKTsKKyAgICBBU1NFUlQobV9pbnN0
cnVtZW50aW5nQWdlbnRzLnBlcnNpc3RlbnRBbmltYXRpb25BZ2VudCgpICE9IHRoaXMpOworICAg
IG1faW5zdHJ1bWVudGluZ0FnZW50cy5zZXRQZXJzaXN0ZW50QW5pbWF0aW9uQWdlbnQodGhpcyk7
CiB9CiAKIHZvaWQgSW5zcGVjdG9yQW5pbWF0aW9uQWdlbnQ6OndpbGxEZXN0cm95RnJvbnRlbmRB
bmRCYWNrZW5kKERpc2Nvbm5lY3RSZWFzb24pCkBAIC0yNDIsMTggKzI0MiwxOCBAQCB2b2lkIElu
c3BlY3RvckFuaW1hdGlvbkFnZW50Ojp3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChEaXNj
b25uZWN0UmVhc29uKQogICAgIHN0b3BUcmFja2luZyhpZ25vcmVkKTsKICAgICBkaXNhYmxlKGln
bm9yZWQpOwogCi0gICAgQVNTRVJUKG1faW5zdHJ1bWVudGluZ0FnZW50cy5wZXJzaXN0ZW50SW5z
cGVjdG9yQW5pbWF0aW9uQWdlbnQoKSA9PSB0aGlzKTsKLSAgICBtX2luc3RydW1lbnRpbmdBZ2Vu
dHMuc2V0UGVyc2lzdGVudEluc3BlY3RvckFuaW1hdGlvbkFnZW50KG51bGxwdHIpOworICAgIEFT
U0VSVChtX2luc3RydW1lbnRpbmdBZ2VudHMucGVyc2lzdGVudEFuaW1hdGlvbkFnZW50KCkgPT0g
dGhpcyk7CisgICAgbV9pbnN0cnVtZW50aW5nQWdlbnRzLnNldFBlcnNpc3RlbnRBbmltYXRpb25B
Z2VudChudWxscHRyKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JBbmltYXRpb25BZ2VudDo6ZW5hYmxl
KEVycm9yU3RyaW5nJiBlcnJvclN0cmluZykKIHsKLSAgICBpZiAobV9pbnN0cnVtZW50aW5nQWdl
bnRzLmVuYWJsZWRJbnNwZWN0b3JBbmltYXRpb25BZ2VudCgpID09IHRoaXMpIHsKKyAgICBpZiAo
bV9pbnN0cnVtZW50aW5nQWdlbnRzLmVuYWJsZWRBbmltYXRpb25BZ2VudCgpID09IHRoaXMpIHsK
ICAgICAgICAgZXJyb3JTdHJpbmcgPSAiQW5pbWF0aW9uIGRvbWFpbiBhbHJlYWR5IGVuYWJsZWQi
X3M7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBtX2luc3RydW1lbnRpbmdBZ2VudHMu
c2V0RW5hYmxlZEluc3BlY3RvckFuaW1hdGlvbkFnZW50KHRoaXMpOworICAgIG1faW5zdHJ1bWVu
dGluZ0FnZW50cy5zZXRFbmFibGVkQW5pbWF0aW9uQWdlbnQodGhpcyk7CiAKICAgICBjb25zdCBh
dXRvIGV4aXN0c0luQ3VycmVudFBhZ2UgPSBbJl0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQpIHsKICAgICAgICAgaWYgKCFpczxEb2N1bWVudD4oc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCkpCkBAIC0yNzQsNyArMjc0LDcgQEAgdm9pZCBJbnNwZWN0b3JBbmlt
YXRpb25BZ2VudDo6ZW5hYmxlKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZykKIAogdm9pZCBJbnNw
ZWN0b3JBbmltYXRpb25BZ2VudDo6ZGlzYWJsZShFcnJvclN0cmluZyYpCiB7Ci0gICAgbV9pbnN0
cnVtZW50aW5nQWdlbnRzLnNldEVuYWJsZWRJbnNwZWN0b3JBbmltYXRpb25BZ2VudChudWxscHRy
KTsKKyAgICBtX2luc3RydW1lbnRpbmdBZ2VudHMuc2V0RW5hYmxlZEFuaW1hdGlvbkFnZW50KG51
bGxwdHIpOwogCiAgICAgcmVzZXQoKTsKIH0KQEAgLTI4NSw3ICsyODUsNyBAQCB2b2lkIEluc3Bl
Y3RvckFuaW1hdGlvbkFnZW50OjpyZXF1ZXN0RWZmZWN0VGFyZ2V0KEVycm9yU3RyaW5nJiBlcnJv
clN0cmluZywgY29ucwogICAgIGlmICghYW5pbWF0aW9uKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBhdXRvKiBkb21BZ2VudCA9IG1faW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JET01BZ2Vu
dCgpOworICAgIGF1dG8qIGRvbUFnZW50ID0gbV9pbnN0cnVtZW50aW5nQWdlbnRzLnBlcnNpc3Rl
bnRET01BZ2VudCgpOwogICAgIGlmICghZG9tQWdlbnQpIHsKICAgICAgICAgZXJyb3JTdHJpbmcg
PSAiRE9NIGRvbWFpbiBtdXN0IGJlIGVuYWJsZWQiX3M7CiAgICAgICAgIHJldHVybjsKQEAgLTMz
OCwxMiArMzM4LDEyIEBAIHZvaWQgSW5zcGVjdG9yQW5pbWF0aW9uQWdlbnQ6OnJlc29sdmVBbmlt
YXRpb24oRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTCiAKIHZvaWQgSW5zcGVjdG9y
QW5pbWF0aW9uQWdlbnQ6OnN0YXJ0VHJhY2tpbmcoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nKQog
ewotICAgIGlmIChtX2luc3RydW1lbnRpbmdBZ2VudHMudHJhY2tpbmdJbnNwZWN0b3JBbmltYXRp
b25BZ2VudCgpID09IHRoaXMpIHsKKyAgICBpZiAobV9pbnN0cnVtZW50aW5nQWdlbnRzLnRyYWNr
aW5nQW5pbWF0aW9uQWdlbnQoKSA9PSB0aGlzKSB7CiAgICAgICAgIGVycm9yU3RyaW5nID0gIkFu
aW1hdGlvbiBkb21haW4gYWxyZWFkeSB0cmFja2luZyJfczsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIAotICAgIG1faW5zdHJ1bWVudGluZ0FnZW50cy5zZXRUcmFja2luZ0luc3BlY3RvckFuaW1h
dGlvbkFnZW50KHRoaXMpOworICAgIG1faW5zdHJ1bWVudGluZ0FnZW50cy5zZXRUcmFja2luZ0Fu
aW1hdGlvbkFnZW50KHRoaXMpOwogCiAgICAgQVNTRVJUKG1fdHJhY2tlZERlY2xhcmF0aXZlQW5p
bWF0aW9uRGF0YS5pc0VtcHR5KCkpOwogCkBAIC0zNTIsMTAgKzM1MiwxMCBAQCB2b2lkIEluc3Bl
Y3RvckFuaW1hdGlvbkFnZW50OjpzdGFydFRyYWNraW5nKEVycm9yU3RyaW5nJiBlcnJvclN0cmlu
ZykKIAogdm9pZCBJbnNwZWN0b3JBbmltYXRpb25BZ2VudDo6c3RvcFRyYWNraW5nKEVycm9yU3Ry
aW5nJikKIHsKLSAgICBpZiAobV9pbnN0cnVtZW50aW5nQWdlbnRzLnRyYWNraW5nSW5zcGVjdG9y
QW5pbWF0aW9uQWdlbnQoKSAhPSB0aGlzKQorICAgIGlmIChtX2luc3RydW1lbnRpbmdBZ2VudHMu
dHJhY2tpbmdBbmltYXRpb25BZ2VudCgpICE9IHRoaXMpCiAgICAgICAgIHJldHVybjsKIAotICAg
IG1faW5zdHJ1bWVudGluZ0FnZW50cy5zZXRUcmFja2luZ0luc3BlY3RvckFuaW1hdGlvbkFnZW50
KG51bGxwdHIpOworICAgIG1faW5zdHJ1bWVudGluZ0FnZW50cy5zZXRUcmFja2luZ0FuaW1hdGlv
bkFnZW50KG51bGxwdHIpOwogCiAgICAgbV90cmFja2VkRGVjbGFyYXRpdmVBbmltYXRpb25EYXRh
LmNsZWFyKCk7CiAKQEAgLTQxOCw3ICs0MTgsNyBAQCB2b2lkIEluc3BlY3RvckFuaW1hdGlvbkFn
ZW50Ojp3aWxsQXBwbHlLZXlmcmFtZUVmZmVjdChFbGVtZW50JiB0YXJnZXQsIEtleWZyYW1lRQog
ICAgICAgICAucmVsZWFzZSgpOwogCiAgICAgaWYgKGVuc3VyZVJlc3VsdC5pc05ld0VudHJ5KSB7
Ci0gICAgICAgIGlmIChhdXRvKiBkb21BZ2VudCA9IG1faW5zdHJ1bWVudGluZ0FnZW50cy5pbnNw
ZWN0b3JET01BZ2VudCgpKSB7CisgICAgICAgIGlmIChhdXRvKiBkb21BZ2VudCA9IG1faW5zdHJ1
bWVudGluZ0FnZW50cy5wZXJzaXN0ZW50RE9NQWdlbnQoKSkgewogICAgICAgICAgICAgaWYgKGF1
dG8gbm9kZUlkID0gZG9tQWdlbnQtPnB1c2hOb2RlVG9Gcm9udGVuZCgmdGFyZ2V0KSkKICAgICAg
ICAgICAgICAgICBldmVudC0+c2V0Tm9kZUlkKG5vZGVJZCk7CiAgICAgICAgIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQXBwbGljYXRpb25D
YWNoZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
QXBwbGljYXRpb25DYWNoZUFnZW50LmNwcAppbmRleCBlZjVhYzY0NDc2ZDg4MTc3NjlhMjUyMzJm
MzQ2ODk5Mjc1MGQ1MjA5Li5lMWJhODU0Y2FmMGViM2UyN2ZjNmE4MmRhZGRmMGFhZWMwZjg4N2Ex
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckFw
cGxpY2F0aW9uQ2FjaGVBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQuY3BwCkBAIC02NCwxMiArNjQsMTIg
QEAgdm9pZCBJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQ6OndpbGxEZXN0cm95RnJvbnRl
bmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6RGkKIAogdm9pZCBJbnNwZWN0b3JBcHBsaWNhdGlvbkNh
Y2hlQWdlbnQ6OmVuYWJsZShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcpCiB7Ci0gICAgaWYgKG1f
aW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQoKSA9PSB0
aGlzKSB7CisgICAgaWYgKG1faW5zdHJ1bWVudGluZ0FnZW50cy5lbmFibGVkQXBwbGljYXRpb25D
YWNoZUFnZW50KCkgPT0gdGhpcykgewogICAgICAgICBlcnJvclN0cmluZyA9ICJBcHBsaWNhdGlv
bkNhY2hlIGRvbWFpbiBhbHJlYWR5IGVuYWJsZWQiX3M7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKLSAgICBtX2luc3RydW1lbnRpbmdBZ2VudHMuc2V0SW5zcGVjdG9yQXBwbGljYXRpb25DYWNo
ZUFnZW50KHRoaXMpOworICAgIG1faW5zdHJ1bWVudGluZ0FnZW50cy5zZXRFbmFibGVkQXBwbGlj
YXRpb25DYWNoZUFnZW50KHRoaXMpOwogCiAgICAgLy8gV2UgbmVlZCB0byBwYXNzIGluaXRpYWwg
bmF2aWdhdG9yLm9uT25saW5lLgogICAgIG5ldHdvcmtTdGF0ZUNoYW5nZWQoKTsKQEAgLTc3LDE3
ICs3NywxNyBAQCB2b2lkIEluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudDo6ZW5hYmxlKEVy
cm9yU3RyaW5nJiBlcnJvclN0cmluZykKIAogdm9pZCBJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hl
QWdlbnQ6OmRpc2FibGUoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nKQogewotICAgIGlmIChtX2lu
c3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50KCkgIT0gdGhp
cykgeworICAgIGlmIChtX2luc3RydW1lbnRpbmdBZ2VudHMuZW5hYmxlZEFwcGxpY2F0aW9uQ2Fj
aGVBZ2VudCgpICE9IHRoaXMpIHsKICAgICAgICAgZXJyb3JTdHJpbmcgPSAiQXBwbGljYXRpb25D
YWNoZSBkb21haW4gYWxyZWFkeSBkaXNhYmxlZCJfczsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAotICAgIG1faW5zdHJ1bWVudGluZ0FnZW50cy5zZXRJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hl
QWdlbnQobnVsbHB0cik7CisgICAgbV9pbnN0cnVtZW50aW5nQWdlbnRzLnNldEVuYWJsZWRBcHBs
aWNhdGlvbkNhY2hlQWdlbnQobnVsbHB0cik7CiB9CiAKIHZvaWQgSW5zcGVjdG9yQXBwbGljYXRp
b25DYWNoZUFnZW50Ojp1cGRhdGVBcHBsaWNhdGlvbkNhY2hlU3RhdHVzKEZyYW1lKiBmcmFtZSkK
IHsKLSAgICBhdXRvKiBwYWdlQWdlbnQgPSBtX2luc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9y
UGFnZUFnZW50KCk7CisgICAgYXV0byogcGFnZUFnZW50ID0gbV9pbnN0cnVtZW50aW5nQWdlbnRz
LmVuYWJsZWRQYWdlQWdlbnQoKTsKICAgICBpZiAoIXBhZ2VBZ2VudCkKICAgICAgICAgcmV0dXJu
OwogCkBAIC0xMTIsNyArMTEyLDcgQEAgdm9pZCBJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdl
bnQ6Om5ldHdvcmtTdGF0ZUNoYW5nZWQoKQogCiB2b2lkIEluc3BlY3RvckFwcGxpY2F0aW9uQ2Fj
aGVBZ2VudDo6Z2V0RnJhbWVzV2l0aE1hbmlmZXN0cyhFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcs
IFJlZlB0cjxKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFwcGxpY2F0aW9uQ2Fj
aGU6OkZyYW1lV2l0aE1hbmlmZXN0Pj4mIHJlc3VsdCkKIHsKLSAgICBhdXRvKiBwYWdlQWdlbnQg
PSBtX2luc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yUGFnZUFnZW50KCk7CisgICAgYXV0byog
cGFnZUFnZW50ID0gbV9pbnN0cnVtZW50aW5nQWdlbnRzLmVuYWJsZWRQYWdlQWdlbnQoKTsKICAg
ICBpZiAoIXBhZ2VBZ2VudCkgewogICAgICAgICBlcnJvclN0cmluZyA9ICJQYWdlIGRvbWFpbiBt
dXN0IGJlIGVuYWJsZWQiX3M7CiAgICAgICAgIHJldHVybjsKQEAgLTEzOSw3ICsxMzksNyBAQCB2
b2lkIEluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudDo6Z2V0RnJhbWVzV2l0aE1hbmlmZXN0
cyhFcnJvclN0cmluZyYgZXJyb3JTdAogCiBEb2N1bWVudExvYWRlciogSW5zcGVjdG9yQXBwbGlj
YXRpb25DYWNoZUFnZW50Ojphc3NlcnRGcmFtZVdpdGhEb2N1bWVudExvYWRlcihFcnJvclN0cmlu
ZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgZnJhbWVJZCkKIHsKLSAgICBhdXRvKiBwYWdl
QWdlbnQgPSBtX2luc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yUGFnZUFnZW50KCk7CisgICAg
YXV0byogcGFnZUFnZW50ID0gbV9pbnN0cnVtZW50aW5nQWdlbnRzLmVuYWJsZWRQYWdlQWdlbnQo
KTsKICAgICBpZiAoIXBhZ2VBZ2VudCkgewogICAgICAgICBlcnJvclN0cmluZyA9ICJQYWdlIGRv
bWFpbiBtdXN0IGJlIGVuYWJsZWQiX3M7CiAgICAgICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDUFVQcm9maWxl
ckFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ1BV
UHJvZmlsZXJBZ2VudC5jcHAKaW5kZXggMzA1ZDkyMzg4NWJmZmM1ZGM5MTNlYmNkZDA0NWM4MWI5
MDU2YWQ3MC4uYTBlNmZjNDUzMTUxNmQ5ODkzMjExNWJiNGI5Y2EyYjJjMjMwNTY5MyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDUFVQcm9maWxl
ckFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
ckNQVVByb2ZpbGVyQWdlbnQuY3BwCkBAIC00OCw3ICs0OCw3IEBAIEluc3BlY3RvckNQVVByb2Zp
bGVyQWdlbnQ6On5JbnNwZWN0b3JDUFVQcm9maWxlckFnZW50KCkgPSBkZWZhdWx0OwogCiB2b2lk
IEluc3BlY3RvckNQVVByb2ZpbGVyQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChG
cm9udGVuZFJvdXRlciosIEJhY2tlbmREaXNwYXRjaGVyKikKIHsKLSAgICBtX2luc3RydW1lbnRp
bmdBZ2VudHMuc2V0SW5zcGVjdG9yQ1BVUHJvZmlsZXJBZ2VudCh0aGlzKTsKKyAgICBtX2luc3Ry
dW1lbnRpbmdBZ2VudHMuc2V0UGVyc2lzdGVudENQVVByb2ZpbGVyQWdlbnQodGhpcyk7CiB9CiAK
IHZvaWQgSW5zcGVjdG9yQ1BVUHJvZmlsZXJBZ2VudDo6d2lsbERlc3Ryb3lGcm9udGVuZEFuZEJh
Y2tlbmQoRGlzY29ubmVjdFJlYXNvbikKQEAgLTU2LDcgKzU2LDcgQEAgdm9pZCBJbnNwZWN0b3JD
UFVQcm9maWxlckFnZW50Ojp3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChEaXNjb25uZWN0
UmVhc29uKQogICAgIEVycm9yU3RyaW5nIGlnbm9yZWQ7CiAgICAgc3RvcFRyYWNraW5nKGlnbm9y
ZWQpOwogCi0gICAgbV9pbnN0cnVtZW50aW5nQWdlbnRzLnNldEluc3BlY3RvckNQVVByb2ZpbGVy
QWdlbnQobnVsbHB0cik7CisgICAgbV9pbnN0cnVtZW50aW5nQWdlbnRzLnNldFBlcnNpc3RlbnRD
UFVQcm9maWxlckFnZW50KG51bGxwdHIpOwogfQogCiB2b2lkIEluc3BlY3RvckNQVVByb2ZpbGVy
QWdlbnQ6OnN0YXJ0VHJhY2tpbmcoRXJyb3JTdHJpbmcmKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDU1NBZ2VudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNTU0FnZW50LmNwcAppbmRleCBiZGViYTlh
NjNkNzZmZDRiYWQxN2VmYTAyYjQ1MmE5MTFhODIwOGM2Li5mNGZhNzcwZTAzYjcwNzA2NGQxMjMy
ZmY4NDQzOTA2MzhjMTg0MTdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3RvckNTU0FnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3RvckNTU0FnZW50LmNwcApAQCAtMzI5LDEyICszMjksMTIgQEAgdm9p
ZCBJbnNwZWN0b3JDU1NBZ2VudDo6cmVzZXQoKQogCiB2b2lkIEluc3BlY3RvckNTU0FnZW50Ojpl
bmFibGUoRXJyb3JTdHJpbmcmKQogewotICAgIGlmIChtX2luc3RydW1lbnRpbmdBZ2VudHMuaW5z
cGVjdG9yQ1NTQWdlbnQoKSA9PSB0aGlzKQorICAgIGlmIChtX2luc3RydW1lbnRpbmdBZ2VudHMu
ZW5hYmxlZENTU0FnZW50KCkgPT0gdGhpcykKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9pbnN0
cnVtZW50aW5nQWdlbnRzLnNldEluc3BlY3RvckNTU0FnZW50KHRoaXMpOworICAgIG1faW5zdHJ1
bWVudGluZ0FnZW50cy5zZXRFbmFibGVkQ1NTQWdlbnQodGhpcyk7CiAKLSAgICBpZiAoYXV0byog
ZG9tQWdlbnQgPSBtX2luc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yRE9NQWdlbnQoKSkgewor
ICAgIGlmIChhdXRvKiBkb21BZ2VudCA9IG1faW5zdHJ1bWVudGluZ0FnZW50cy5wZXJzaXN0ZW50
RE9NQWdlbnQoKSkgewogICAgICAgICBmb3IgKGF1dG8qIGRvY3VtZW50IDogZG9tQWdlbnQtPmRv
Y3VtZW50cygpKQogICAgICAgICAgICAgYWN0aXZlU3R5bGVTaGVldHNVcGRhdGVkKCpkb2N1bWVu
dCk7CiAgICAgfQpAQCAtMzQyLDcgKzM0Miw3IEBAIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmVu
YWJsZShFcnJvclN0cmluZyYpCiAKIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmRpc2FibGUoRXJy
b3JTdHJpbmcmKQogewotICAgIG1faW5zdHJ1bWVudGluZ0FnZW50cy5zZXRJbnNwZWN0b3JDU1NB
Z2VudChudWxscHRyKTsKKyAgICBtX2luc3RydW1lbnRpbmdBZ2VudHMuc2V0RW5hYmxlZENTU0Fn
ZW50KG51bGxwdHIpOwogCiAgICAgcmVzZXQoKTsKIH0KQEAgLTQwNiw3ICs0MDYsNyBAQCBib29s
IEluc3BlY3RvckNTU0FnZW50Ojpmb3JjZVBzZXVkb1N0YXRlKGNvbnN0IEVsZW1lbnQmIGVsZW1l
bnQsIENTU1NlbGVjdG9yOjpQcwogICAgIGlmIChtX25vZGVJZFRvRm9yY2VkUHNldWRvU3RhdGUu
aXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBhdXRvKiBkb21BZ2VudCA9
IG1faW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JET01BZ2VudCgpOworICAgIGF1dG8qIGRv
bUFnZW50ID0gbV9pbnN0cnVtZW50aW5nQWdlbnRzLnBlcnNpc3RlbnRET01BZ2VudCgpOwogICAg
IGlmICghZG9tQWdlbnQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtNTY5LDcgKzU2OSw3
IEBAIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmdldEFsbFN0eWxlU2hlZXRzKEVycm9yU3RyaW5n
JiwgUmVmUHRyPEpTT046OkFycmF5T2Y8SW5zCiB2b2lkIEluc3BlY3RvckNTU0FnZW50Ojpjb2xs
ZWN0QWxsU3R5bGVTaGVldHMoVmVjdG9yPEluc3BlY3RvclN0eWxlU2hlZXQqPiYgcmVzdWx0KQog
ewogICAgIFZlY3RvcjxDU1NTdHlsZVNoZWV0Kj4gY3NzU3R5bGVTaGVldHM7Ci0gICAgaWYgKGF1
dG8qIGRvbUFnZW50ID0gbV9pbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3RvckRPTUFnZW50KCkp
IHsKKyAgICBpZiAoYXV0byogZG9tQWdlbnQgPSBtX2luc3RydW1lbnRpbmdBZ2VudHMucGVyc2lz
dGVudERPTUFnZW50KCkpIHsKICAgICAgICAgZm9yIChhdXRvKiBkb2N1bWVudCA6IGRvbUFnZW50
LT5kb2N1bWVudHMoKSkKICAgICAgICAgICAgIGNvbGxlY3RBbGxEb2N1bWVudFN0eWxlU2hlZXRz
KCpkb2N1bWVudCwgY3NzU3R5bGVTaGVldHMpOwogICAgIH0KQEAgLTYyNCw3ICs2MjQsNyBAQCB2
b2lkIEluc3BlY3RvckNTU0FnZW50OjpzZXRTdHlsZVNoZWV0VGV4dChFcnJvclN0cmluZyYgZXJy
b3JTdHJpbmcsIGNvbnN0IFN0cmluZwogICAgIGlmICghaW5zcGVjdG9yU3R5bGVTaGVldCkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgYXV0byogZG9tQWdlbnQgPSBtX2luc3RydW1lbnRpbmdBZ2Vu
dHMuaW5zcGVjdG9yRE9NQWdlbnQoKTsKKyAgICBhdXRvKiBkb21BZ2VudCA9IG1faW5zdHJ1bWVu
dGluZ0FnZW50cy5wZXJzaXN0ZW50RE9NQWdlbnQoKTsKICAgICBpZiAoIWRvbUFnZW50KSB7CiAg
ICAgICAgIGVycm9yU3RyaW5nID0gIkRPTSBkb21haW4gbXVzdCBiZSBlbmFibGVkIl9zOwogICAg
ICAgICByZXR1cm47CkBAIC02NDQsNyArNjQ0LDcgQEAgdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6
c2V0U3R5bGVUZXh0KEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgSlNPTjo6T2JqZWMK
ICAgICBpZiAoIWluc3BlY3RvclN0eWxlU2hlZXQpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1
dG8qIGRvbUFnZW50ID0gbV9pbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3RvckRPTUFnZW50KCk7
CisgICAgYXV0byogZG9tQWdlbnQgPSBtX2luc3RydW1lbnRpbmdBZ2VudHMucGVyc2lzdGVudERP
TUFnZW50KCk7CiAgICAgaWYgKCFkb21BZ2VudCkgewogICAgICAgICBlcnJvclN0cmluZyA9ICJE
T00gZG9tYWluIG11c3QgYmUgZW5hYmxlZCJfczsKICAgICAgICAgcmV0dXJuOwpAQCAtNjY4LDcg
KzY2OCw3IEBAIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OnNldFJ1bGVTZWxlY3RvcihFcnJvclN0
cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IEpTT046Ok9iCiAgICAgaWYgKCFpbnNwZWN0b3JTdHls
ZVNoZWV0KQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvKiBkb21BZ2VudCA9IG1faW5zdHJ1
bWVudGluZ0FnZW50cy5pbnNwZWN0b3JET01BZ2VudCgpOworICAgIGF1dG8qIGRvbUFnZW50ID0g
bV9pbnN0cnVtZW50aW5nQWdlbnRzLnBlcnNpc3RlbnRET01BZ2VudCgpOwogICAgIGlmICghZG9t
QWdlbnQpIHsKICAgICAgICAgZXJyb3JTdHJpbmcgPSAiRE9NIGRvbWFpbiBtdXN0IGJlIGVuYWJs
ZWQiX3M7CiAgICAgICAgIHJldHVybjsKQEAgLTY4NSw3ICs2ODUsNyBAQCB2b2lkIEluc3BlY3Rv
ckNTU0FnZW50OjpzZXRSdWxlU2VsZWN0b3IoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25z
dCBKU09OOjpPYgogCiB2b2lkIEluc3BlY3RvckNTU0FnZW50OjpjcmVhdGVTdHlsZVNoZWV0KEVy
cm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBmcmFtZUlkLCBTdHJpbmcqIHN0
eWxlU2hlZXRJZCkKIHsKLSAgICBhdXRvKiBwYWdlQWdlbnQgPSBtX2luc3RydW1lbnRpbmdBZ2Vu
dHMuaW5zcGVjdG9yUGFnZUFnZW50KCk7CisgICAgYXV0byogcGFnZUFnZW50ID0gbV9pbnN0cnVt
ZW50aW5nQWdlbnRzLmVuYWJsZWRQYWdlQWdlbnQoKTsKICAgICBpZiAoIXBhZ2VBZ2VudCkgewog
ICAgICAgICBlcnJvclN0cmluZyA9ICJQYWdlIGRvbWFpbiBtdXN0IGJlIGVuYWJsZWQiX3M7CiAg
ICAgICAgIHJldHVybjsKQEAgLTc1Nyw3ICs3NTcsNyBAQCB2b2lkIEluc3BlY3RvckNTU0FnZW50
OjphZGRSdWxlKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBzdHlsZVNo
ZQogICAgIGlmICghaW5zcGVjdG9yU3R5bGVTaGVldCkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
YXV0byogZG9tQWdlbnQgPSBtX2luc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yRE9NQWdlbnQo
KTsKKyAgICBhdXRvKiBkb21BZ2VudCA9IG1faW5zdHJ1bWVudGluZ0FnZW50cy5wZXJzaXN0ZW50
RE9NQWdlbnQoKTsKICAgICBpZiAoIWRvbUFnZW50KSB7CiAgICAgICAgIGVycm9yU3RyaW5nID0g
IkRPTSBkb21haW4gbXVzdCBiZSBlbmFibGVkIl9zOwogICAgICAgICByZXR1cm47CkBAIC04Mzks
NyArODM5LDcgQEAgdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6Z2V0U3VwcG9ydGVkU3lzdGVtRm9u
dEZhbWlseU5hbWVzKEVycm9yU3RyaW5nJiwgUmVmUHRyPEoKIAogdm9pZCBJbnNwZWN0b3JDU1NB
Z2VudDo6Zm9yY2VQc2V1ZG9TdGF0ZShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGludCBub2Rl
SWQsIGNvbnN0IEpTT046OkFycmF5JiBmb3JjZWRQc2V1ZG9DbGFzc2VzKQogewotICAgIGF1dG8q
IGRvbUFnZW50ID0gbV9pbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3RvckRPTUFnZW50KCk7Cisg
ICAgYXV0byogZG9tQWdlbnQgPSBtX2luc3RydW1lbnRpbmdBZ2VudHMucGVyc2lzdGVudERPTUFn
ZW50KCk7CiAgICAgaWYgKCFkb21BZ2VudCkgewogICAgICAgICBlcnJvclN0cmluZyA9ICJET00g
ZG9tYWluIG11c3QgYmUgZW5hYmxlZCJfczsKICAgICAgICAgcmV0dXJuOwpAQCAtODcxLDcgKzg3
MSw3IEBAIEluc3BlY3RvclN0eWxlU2hlZXRGb3JJbmxpbmVTdHlsZSYgSW5zcGVjdG9yQ1NTQWdl
bnQ6OmFzSW5zcGVjdG9yU3R5bGVTaGVldChTdHlsCiB7CiAgICAgcmV0dXJuIG1fbm9kZVRvSW5z
cGVjdG9yU3R5bGVTaGVldC5lbnN1cmUoJmVsZW1lbnQsIFt0aGlzLCAmZWxlbWVudF0gewogICAg
ICAgICBTdHJpbmcgbmV3U3R5bGVTaGVldElkID0gU3RyaW5nOjpudW1iZXIobV9sYXN0U3R5bGVT
aGVldElkKyspOwotICAgICAgICBhdXRvIGluc3BlY3RvclN0eWxlU2hlZXQgPSBJbnNwZWN0b3JT
dHlsZVNoZWV0Rm9ySW5saW5lU3R5bGU6OmNyZWF0ZShtX2luc3RydW1lbnRpbmdBZ2VudHMuaW5z
cGVjdG9yUGFnZUFnZW50KCksIG5ld1N0eWxlU2hlZXRJZCwgZWxlbWVudCwgSW5zcGVjdG9yOjpQ
cm90b2NvbDo6Q1NTOjpTdHlsZVNoZWV0T3JpZ2luOjpBdXRob3IsIHRoaXMpOworICAgICAgICBh
dXRvIGluc3BlY3RvclN0eWxlU2hlZXQgPSBJbnNwZWN0b3JTdHlsZVNoZWV0Rm9ySW5saW5lU3R5
bGU6OmNyZWF0ZShtX2luc3RydW1lbnRpbmdBZ2VudHMuZW5hYmxlZFBhZ2VBZ2VudCgpLCBuZXdT
dHlsZVNoZWV0SWQsIGVsZW1lbnQsIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6U3R5bGVTaGVl
dE9yaWdpbjo6QXV0aG9yLCB0aGlzKTsKICAgICAgICAgbV9pZFRvSW5zcGVjdG9yU3R5bGVTaGVl
dC5zZXQobmV3U3R5bGVTaGVldElkLCBpbnNwZWN0b3JTdHlsZVNoZWV0LmNvcHlSZWYoKSk7CiAg
ICAgICAgIHJldHVybiBpbnNwZWN0b3JTdHlsZVNoZWV0OwogICAgIH0pLml0ZXJhdG9yLT52YWx1
ZTsKQEAgLTg3OSw3ICs4NzksNyBAQCBJbnNwZWN0b3JTdHlsZVNoZWV0Rm9ySW5saW5lU3R5bGUm
IEluc3BlY3RvckNTU0FnZW50Ojphc0luc3BlY3RvclN0eWxlU2hlZXQoU3R5bAogCiBFbGVtZW50
KiBJbnNwZWN0b3JDU1NBZ2VudDo6ZWxlbWVudEZvcklkKEVycm9yU3RyaW5nJiBlcnJvclN0cmlu
ZywgaW50IG5vZGVJZCkKIHsKLSAgICBhdXRvKiBkb21BZ2VudCA9IG1faW5zdHJ1bWVudGluZ0Fn
ZW50cy5pbnNwZWN0b3JET01BZ2VudCgpOworICAgIGF1dG8qIGRvbUFnZW50ID0gbV9pbnN0cnVt
ZW50aW5nQWdlbnRzLnBlcnNpc3RlbnRET01BZ2VudCgpOwogICAgIGlmICghZG9tQWdlbnQpIHsK
ICAgICAgICAgZXJyb3JTdHJpbmcgPSAiRE9NIGRvbWFpbiBtdXN0IGJlIGVuYWJsZWQiX3M7CiAg
ICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtOTAzLDcgKzkwMyw3IEBAIEluc3BlY3RvclN0eWxl
U2hlZXQqIEluc3BlY3RvckNTU0FnZW50OjpiaW5kU3R5bGVTaGVldChDU1NTdHlsZVNoZWV0KiBz
dHlsZVNoZWV0CiAgICAgaWYgKCFpbnNwZWN0b3JTdHlsZVNoZWV0KSB7CiAgICAgICAgIFN0cmlu
ZyBpZCA9IFN0cmluZzo6bnVtYmVyKG1fbGFzdFN0eWxlU2hlZXRJZCsrKTsKICAgICAgICAgRG9j
dW1lbnQqIGRvY3VtZW50ID0gc3R5bGVTaGVldC0+b3duZXJEb2N1bWVudCgpOwotICAgICAgICBp
bnNwZWN0b3JTdHlsZVNoZWV0ID0gSW5zcGVjdG9yU3R5bGVTaGVldDo6Y3JlYXRlKG1faW5zdHJ1
bWVudGluZ0FnZW50cy5pbnNwZWN0b3JQYWdlQWdlbnQoKSwgaWQsIHN0eWxlU2hlZXQsIGRldGVj
dE9yaWdpbihzdHlsZVNoZWV0LCBkb2N1bWVudCksIEluc3BlY3RvckRPTUFnZW50Ojpkb2N1bWVu
dFVSTFN0cmluZyhkb2N1bWVudCksIHRoaXMpOworICAgICAgICBpbnNwZWN0b3JTdHlsZVNoZWV0
ID0gSW5zcGVjdG9yU3R5bGVTaGVldDo6Y3JlYXRlKG1faW5zdHJ1bWVudGluZ0FnZW50cy5lbmFi
bGVkUGFnZUFnZW50KCksIGlkLCBzdHlsZVNoZWV0LCBkZXRlY3RPcmlnaW4oc3R5bGVTaGVldCwg
ZG9jdW1lbnQpLCBJbnNwZWN0b3JET01BZ2VudDo6ZG9jdW1lbnRVUkxTdHJpbmcoZG9jdW1lbnQp
LCB0aGlzKTsKICAgICAgICAgbV9pZFRvSW5zcGVjdG9yU3R5bGVTaGVldC5zZXQoaWQsIGluc3Bl
Y3RvclN0eWxlU2hlZXQpOwogICAgICAgICBtX2Nzc1N0eWxlU2hlZXRUb0luc3BlY3RvclN0eWxl
U2hlZXQuc2V0KHN0eWxlU2hlZXQsIGluc3BlY3RvclN0eWxlU2hlZXQpOwogICAgICAgICBpZiAo
bV9jcmVhdGluZ1ZpYUluc3BlY3RvclN0eWxlU2hlZXQpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ2FudmFzQWdlbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDYW52YXNBZ2VudC5jcHAKaW5kZXgg
NzJiNzM3Zjk0MjdiMjFjNjUwMDBhODRhMDY4NmUzMjI4NWM0ZDdiNy4uYzYzMDlmZjE1YjNkYjE4
ZjQyNGFjMzVmYTIyN2NlZTk4NmZjZWU3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDYW52YXNBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDYW52YXNBZ2VudC5jcHAKQEAgLTExMywxMCAr
MTEzLDEwIEBAIHZvaWQgSW5zcGVjdG9yQ2FudmFzQWdlbnQ6OmRpc2NhcmRBZ2VudCgpCiAKIHZv
aWQgSW5zcGVjdG9yQ2FudmFzQWdlbnQ6OmVuYWJsZShFcnJvclN0cmluZyYpCiB7Ci0gICAgaWYg
KG1faW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JDYW52YXNBZ2VudCgpID09IHRoaXMpCisg
ICAgaWYgKG1faW5zdHJ1bWVudGluZ0FnZW50cy5lbmFibGVkQ2FudmFzQWdlbnQoKSA9PSB0aGlz
KQogICAgICAgICByZXR1cm47CiAKLSAgICBtX2luc3RydW1lbnRpbmdBZ2VudHMuc2V0SW5zcGVj
dG9yQ2FudmFzQWdlbnQodGhpcyk7CisgICAgbV9pbnN0cnVtZW50aW5nQWdlbnRzLnNldEVuYWJs
ZWRDYW52YXNBZ2VudCh0aGlzKTsKIAogICAgIGNvbnN0IGF1dG8gZXhpc3RzSW5DdXJyZW50UGFn
ZSA9IFsmXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkg
ewogICAgICAgICBpZiAoIWlzPERvY3VtZW50PihzY3JpcHRFeGVjdXRpb25Db250ZXh0KSkKQEAg
LTE3NCw3ICsxNzQsNyBAQCB2b2lkIEluc3BlY3RvckNhbnZhc0FnZW50OjplbmFibGUoRXJyb3JT
dHJpbmcmKQogCiB2b2lkIEluc3BlY3RvckNhbnZhc0FnZW50OjpkaXNhYmxlKEVycm9yU3RyaW5n
JikKIHsKLSAgICBtX2luc3RydW1lbnRpbmdBZ2VudHMuc2V0SW5zcGVjdG9yQ2FudmFzQWdlbnQo
bnVsbHB0cik7CisgICAgbV9pbnN0cnVtZW50aW5nQWdlbnRzLnNldEVuYWJsZWRDYW52YXNBZ2Vu
dChudWxscHRyKTsKIAogICAgIHJlc2V0KCk7CiAKQEAgLTE5MywxMyArMTkzLDEzIEBAIHZvaWQg
SW5zcGVjdG9yQ2FudmFzQWdlbnQ6OnJlcXVlc3ROb2RlKEVycm9yU3RyaW5nJiBlcnJvclN0cmlu
ZywgY29uc3QgU3RyaW5nJiBjCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpbnQgZG9j
dW1lbnROb2RlSWQgPSBtX2luc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yRE9NQWdlbnQoKS0+
Ym91bmROb2RlSWQoJm5vZGUtPmRvY3VtZW50KCkpOworICAgIGludCBkb2N1bWVudE5vZGVJZCA9
IG1faW5zdHJ1bWVudGluZ0FnZW50cy5wZXJzaXN0ZW50RE9NQWdlbnQoKS0+Ym91bmROb2RlSWQo
Jm5vZGUtPmRvY3VtZW50KCkpOwogICAgIGlmICghZG9jdW1lbnROb2RlSWQpIHsKICAgICAgICAg
ZXJyb3JTdHJpbmcgPSAiRG9jdW1lbnQgbXVzdCBoYXZlIGJlZW4gcmVxdWVzdGVkIl9zOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogCi0gICAgKm5vZGVJZCA9IG1faW5zdHJ1bWVudGluZ0FnZW50
cy5pbnNwZWN0b3JET01BZ2VudCgpLT5wdXNoTm9kZVRvRnJvbnRlbmQoZXJyb3JTdHJpbmcsIGRv
Y3VtZW50Tm9kZUlkLCBub2RlKTsKKyAgICAqbm9kZUlkID0gbV9pbnN0cnVtZW50aW5nQWdlbnRz
LnBlcnNpc3RlbnRET01BZ2VudCgpLT5wdXNoTm9kZVRvRnJvbnRlbmQoZXJyb3JTdHJpbmcsIGRv
Y3VtZW50Tm9kZUlkLCBub2RlKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JDYW52YXNBZ2VudDo6cmVx
dWVzdENvbnRlbnQoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIGNhbnZh
c0lkLCBTdHJpbmcqIGNvbnRlbnQpCkBAIC0yMTMsNyArMjEzLDcgQEAgdm9pZCBJbnNwZWN0b3JD
YW52YXNBZ2VudDo6cmVxdWVzdENvbnRlbnQoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25z
dCBTdHJpbmcKIAogdm9pZCBJbnNwZWN0b3JDYW52YXNBZ2VudDo6cmVxdWVzdENsaWVudE5vZGVz
KEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBjYW52YXNJZCwgUmVmUHRy
PEpTT046OkFycmF5T2Y8aW50Pj4mIGNsaWVudE5vZGVJZHMpCiB7Ci0gICAgYXV0byogZG9tQWdl
bnQgPSBtX2luc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yRE9NQWdlbnQoKTsKKyAgICBhdXRv
KiBkb21BZ2VudCA9IG1faW5zdHJ1bWVudGluZ0FnZW50cy5wZXJzaXN0ZW50RE9NQWdlbnQoKTsK
ICAgICBpZiAoIWRvbUFnZW50KSB7CiAgICAgICAgIGVycm9yU3RyaW5nID0gIkRPTSBkb21haW4g
bXVzdCBiZSBlbmFibGVkIl9zOwogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCmluZGV4IDdmZDAx
ZWEyOTA1ZjcxZDI4ZWZmMDE0OGRlODIwYmQ3MjlkMzVkNGEuLjFlZTJlNjA3Mjc1OTZlNGZkYmFj
YjBlNjZlODI2M2Y0MzBkZjQ1ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCkBAIC0zMDYsNyArMzA2LDcgQEAgdm9p
ZCBJbnNwZWN0b3JET01BZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rv
cjo6RnJvbnRlbmRSb3V0ZXIqLAogICAgIG1faGlzdG9yeSA9IG1ha2VVbmlxdWU8SW5zcGVjdG9y
SGlzdG9yeT4oKTsKICAgICBtX2RvbUVkaXRvciA9IG1ha2VVbmlxdWU8RE9NRWRpdG9yPigqbV9o
aXN0b3J5KTsKIAotICAgIG1faW5zdHJ1bWVudGluZ0FnZW50cy5zZXRJbnNwZWN0b3JET01BZ2Vu
dCh0aGlzKTsKKyAgICBtX2luc3RydW1lbnRpbmdBZ2VudHMuc2V0UGVyc2lzdGVudERPTUFnZW50
KHRoaXMpOwogICAgIG1fZG9jdW1lbnQgPSBtX2luc3BlY3RlZFBhZ2UubWFpbkZyYW1lKCkuZG9j
dW1lbnQoKTsKIAogI2lmIEVOQUJMRShWSURFTykKQEAgLTMzMCw3ICszMzAsNyBAQCB2b2lkIElu
c3BlY3RvckRPTUFnZW50Ojp3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6
OkRpc2Nvbm5lY3RSZWFzbwogICAgIHNldFNlYXJjaGluZ0Zvck5vZGUoaWdub3JlZCwgZmFsc2Us
IG51bGxwdHIsIGZhbHNlKTsKICAgICBoaWRlSGlnaGxpZ2h0KGlnbm9yZWQpOwogCi0gICAgbV9p
bnN0cnVtZW50aW5nQWdlbnRzLnNldEluc3BlY3RvckRPTUFnZW50KG51bGxwdHIpOworICAgIG1f
aW5zdHJ1bWVudGluZ0FnZW50cy5zZXRQZXJzaXN0ZW50RE9NQWdlbnQobnVsbHB0cik7CiAgICAg
bV9kb2N1bWVudFJlcXVlc3RlZCA9IGZhbHNlOwogICAgIHJlc2V0KCk7CiB9CkBAIC00MTgsNyAr
NDE4LDcgQEAgdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6dW5iaW5kKE5vZGUqIG5vZGUsIE5vZGVU
b0lkTWFwKiBub2Rlc01hcCkKIAogICAgIG5vZGVzTWFwLT5yZW1vdmUobm9kZSk7CiAKLSAgICBp
ZiAoYXV0byogY3NzQWdlbnQgPSBtX2luc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yQ1NTQWdl
bnQoKSkKKyAgICBpZiAoYXV0byogY3NzQWdlbnQgPSBtX2luc3RydW1lbnRpbmdBZ2VudHMuZW5h
YmxlZENTU0FnZW50KCkpCiAgICAgICAgIGNzc0FnZW50LT5kaWRSZW1vdmVET01Ob2RlKCpub2Rl
LCBpZCk7CiAKICAgICBpZiAobV9jaGlsZHJlblJlcXVlc3RlZC5yZW1vdmUoaWQpKSB7CkBAIC0x
MjU1LDcgKzEyNTUsNyBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpoaWdobGlnaHRTZWxlY3Rv
cihFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IEpTT046OgogICAgIFJlZlB0cjxEb2N1
bWVudD4gZG9jdW1lbnQ7CiAKICAgICBpZiAoZnJhbWVJZCkgewotICAgICAgICBhdXRvKiBwYWdl
QWdlbnQgPSBtX2luc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yUGFnZUFnZW50KCk7CisgICAg
ICAgIGF1dG8qIHBhZ2VBZ2VudCA9IG1faW5zdHJ1bWVudGluZ0FnZW50cy5lbmFibGVkUGFnZUFn
ZW50KCk7CiAgICAgICAgIGlmICghcGFnZUFnZW50KSB7CiAgICAgICAgICAgICBlcnJvclN0cmlu
ZyA9ICJQYWdlIGRvbWFpbiBtdXN0IGJlIGVuYWJsZWQiX3M7CiAgICAgICAgICAgICByZXR1cm47
CkBAIC0xMzkzLDcgKzEzOTMsNyBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpoaWdobGlnaHRO
b2RlTGlzdChFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IEpTT046OgogCiB2b2lkIElu
c3BlY3RvckRPTUFnZW50OjpoaWdobGlnaHRGcmFtZShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcs
IGNvbnN0IFN0cmluZyYgZnJhbWVJZCwgY29uc3QgSlNPTjo6T2JqZWN0KiBjb2xvciwgY29uc3Qg
SlNPTjo6T2JqZWN0KiBvdXRsaW5lQ29sb3IpCiB7Ci0gICAgYXV0byogcGFnZUFnZW50ID0gbV9p
bnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3RvclBhZ2VBZ2VudCgpOworICAgIGF1dG8qIHBhZ2VB
Z2VudCA9IG1faW5zdHJ1bWVudGluZ0FnZW50cy5lbmFibGVkUGFnZUFnZW50KCk7CiAgICAgaWYg
KCFwYWdlQWdlbnQpIHsKICAgICAgICAgZXJyb3JTdHJpbmcgPSAiUGFnZSBkb21haW4gbXVzdCBi
ZSBlbmFibGVkIl9zOwogICAgICAgICByZXR1cm47CkBAIC0xNjQwLDcgKzE2NDAsNyBAQCBSZWY8
SW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NOjpOb2RlPiBJbnNwZWN0b3JET01BZ2VudDo6YnVpbGRP
YmplY3RGb3JOb2RlKE5vZGUqCiAgICAgICAgICAgICB2YWx1ZS0+c2V0Q2hpbGRyZW4oV1RGTW92
ZShjaGlsZHJlbikpOwogICAgIH0KIAotICAgIGF1dG8qIHBhZ2VBZ2VudCA9IG1faW5zdHJ1bWVu
dGluZ0FnZW50cy5pbnNwZWN0b3JQYWdlQWdlbnQoKTsKKyAgICBhdXRvKiBwYWdlQWdlbnQgPSBt
X2luc3RydW1lbnRpbmdBZ2VudHMuZW5hYmxlZFBhZ2VBZ2VudCgpOwogICAgIGlmIChwYWdlQWdl
bnQpIHsKICAgICAgICAgaWYgKGF1dG8qIGZyYW1lVmlldyA9IG5vZGUtPmRvY3VtZW50KCkudmll
dygpKQogICAgICAgICAgICAgdmFsdWUtPnNldEZyYW1lSWQocGFnZUFnZW50LT5mcmFtZUlkKCZm
cmFtZVZpZXctPmZyYW1lKCkpKTsKQEAgLTIzNTYsNyArMjM1Niw3IEBAIHZvaWQgSW5zcGVjdG9y
RE9NQWdlbnQ6OmRpZE1vZGlmeURPTUF0dHIoRWxlbWVudCYgZWxlbWVudCwgY29uc3QgQXRvbVN0
cmluZyYgbmFtCiAgICAgaWYgKCFpZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKGF1dG8q
IGNzc0FnZW50ID0gbV9pbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3RvckNTU0FnZW50KCkpCisg
ICAgaWYgKGF1dG8qIGNzc0FnZW50ID0gbV9pbnN0cnVtZW50aW5nQWdlbnRzLmVuYWJsZWRDU1NB
Z2VudCgpKQogICAgICAgICBjc3NBZ2VudC0+ZGlkTW9kaWZ5RE9NQXR0cihlbGVtZW50KTsKIAog
ICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT5hdHRyaWJ1dGVNb2RpZmllZChpZCwgbmFtZSwgdmFs
dWUpOwpAQCAtMjM2OCw3ICsyMzY4LDcgQEAgdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6ZGlkUmVt
b3ZlRE9NQXR0cihFbGVtZW50JiBlbGVtZW50LCBjb25zdCBBdG9tU3RyaW5nJiBuYW0KICAgICBp
ZiAoIWlkKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoYXV0byogY3NzQWdlbnQgPSBtX2lu
c3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yQ1NTQWdlbnQoKSkKKyAgICBpZiAoYXV0byogY3Nz
QWdlbnQgPSBtX2luc3RydW1lbnRpbmdBZ2VudHMuZW5hYmxlZENTU0FnZW50KCkpCiAgICAgICAg
IGNzc0FnZW50LT5kaWRNb2RpZnlET01BdHRyKGVsZW1lbnQpOwogCiAgICAgbV9mcm9udGVuZERp
c3BhdGNoZXItPmF0dHJpYnV0ZVJlbW92ZWQoaWQsIG5hbWUpOwpAQCAtMjM4Miw3ICsyMzgyLDcg
QEAgdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6c3R5bGVBdHRyaWJ1dGVJbnZhbGlkYXRlZChjb25z
dCBWZWN0b3I8RWxlbWVudCo+JiBlbGVtZW4KICAgICAgICAgaWYgKCFpZCkKICAgICAgICAgICAg
IGNvbnRpbnVlOwogCi0gICAgICAgIGlmIChhdXRvKiBjc3NBZ2VudCA9IG1faW5zdHJ1bWVudGlu
Z0FnZW50cy5pbnNwZWN0b3JDU1NBZ2VudCgpKQorICAgICAgICBpZiAoYXV0byogY3NzQWdlbnQg
PSBtX2luc3RydW1lbnRpbmdBZ2VudHMuZW5hYmxlZENTU0FnZW50KCkpCiAgICAgICAgICAgICBj
c3NBZ2VudC0+ZGlkTW9kaWZ5RE9NQXR0cigqZWxlbWVudCk7CiAKICAgICAgICAgbm9kZUlkcy0+
YWRkSXRlbShpZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRz
L0luc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50LmNwcAppbmRleCA4M2FlNGUwNDc0ZjM4
OWQ0MDExNjUzMTJiM2UyZDZjYmU1Y2Q2ZTg4Li4zNTJjMTMzMzc2NDY5YWJlYmFkZDE5NjEyMzYz
ODg5NmQzMGZjNDMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRz
L0luc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudC5jcHAKQEAgLTYzLDE3ICs2Mywx
NyBAQCBJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50Ojp+SW5zcGVjdG9yRE9NRGVidWdnZXJBZ2Vu
dCgpID0gZGVmYXVsdDsKIAogYm9vbCBJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50OjplbmFibGVk
KCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9pbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3RvckRP
TURlYnVnZ2VyQWdlbnQoKSA9PSB0aGlzOworICAgIHJldHVybiBtX2luc3RydW1lbnRpbmdBZ2Vu
dHMuZW5hYmxlZERPTURlYnVnZ2VyQWdlbnQoKSA9PSB0aGlzOwogfQogCiB2b2lkIEluc3BlY3Rv
ckRPTURlYnVnZ2VyQWdlbnQ6OmVuYWJsZSgpCiB7Ci0gICAgbV9pbnN0cnVtZW50aW5nQWdlbnRz
LnNldEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQodGhpcyk7CisgICAgbV9pbnN0cnVtZW50aW5n
QWdlbnRzLnNldEVuYWJsZWRET01EZWJ1Z2dlckFnZW50KHRoaXMpOwogfQogCiB2b2lkIEluc3Bl
Y3RvckRPTURlYnVnZ2VyQWdlbnQ6OmRpc2FibGUoKQogewotICAgIG1faW5zdHJ1bWVudGluZ0Fn
ZW50cy5zZXRJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50KG51bGxwdHIpOworICAgIG1faW5zdHJ1
bWVudGluZ0FnZW50cy5zZXRFbmFibGVkRE9NRGVidWdnZXJBZ2VudChudWxscHRyKTsKIAogICAg
IG1fbGlzdGVuZXJCcmVha3BvaW50cy5jbGVhcigpOwogICAgIG1fdXJsQnJlYWtwb2ludHMuY2xl
YXIoKTsKQEAgLTIyNSw3ICsyMjUsNyBAQCB2b2lkIEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6
OndpbGxIYW5kbGVFdmVudChFdmVudCYgZXZlbnQsIGNvbnN0IFJlZ2lzdGVyZWRFdgogICAgICAg
ICBpbmplY3RlZFNjcmlwdC5zZXRFdmVudFZhbHVlKHRvSlMoc3RhdGUsIGRlcHJlY2F0ZWRHbG9i
YWxPYmplY3RGb3JQcm90b3R5cGUoc3RhdGUpLCBldmVudCkpOwogICAgIH0KIAotICAgIGF1dG8q
IGRvbUFnZW50ID0gbV9pbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3RvckRPTUFnZW50KCk7Cisg
ICAgYXV0byogZG9tQWdlbnQgPSBtX2luc3RydW1lbnRpbmdBZ2VudHMucGVyc2lzdGVudERPTUFn
ZW50KCk7CiAKICAgICBib29sIHNob3VsZFBhdXNlID0gbV9kZWJ1Z2dlckFnZW50LT5wYXVzZU9u
TmV4dFN0YXRlbWVudEVuYWJsZWQoKSB8fCBtX3BhdXNlT25BbGxMaXN0ZW5lcnNFbmFibGVkIHx8
IG1fbGlzdGVuZXJCcmVha3BvaW50cy5jb250YWlucyhldmVudC50eXBlKCkpOwogICAgIGlmICgh
c2hvdWxkUGF1c2UgJiYgZG9tQWdlbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5jcHAKaW5kZXggNzdm
MGNjY2QyZjJhNTE3Y2UwYjdiNzdmYjAxNWU0YzQwYWZlNDZkYS4uZTU5MWU5MTY5ZGYzMDQ1NDU2
MjBiNTQwMzJiNjJmYTJiYWRlY2I2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2FnZW50cy9JbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmNwcApAQCAtNzYs
MjIgKzc2LDIyIEBAIHZvaWQgSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50Ojp3aWxsRGVzdHJveUZy
b250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkRpc2Nvbm5lCiAKIHZvaWQgSW5zcGVjdG9yRE9N
U3RvcmFnZUFnZW50OjplbmFibGUoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nKQogewotICAgIGlm
IChtX2luc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50KCkgPT0gdGhp
cykgeworICAgIGlmIChtX2luc3RydW1lbnRpbmdBZ2VudHMuZW5hYmxlZERPTVN0b3JhZ2VBZ2Vu
dCgpID09IHRoaXMpIHsKICAgICAgICAgZXJyb3JTdHJpbmcgPSAiRE9NU3RvcmFnZSBkb21haW4g
YWxyZWFkeSBlbmFibGVkIl9zOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbV9pbnN0
cnVtZW50aW5nQWdlbnRzLnNldEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudCh0aGlzKTsKKyAgICBt
X2luc3RydW1lbnRpbmdBZ2VudHMuc2V0RW5hYmxlZERPTVN0b3JhZ2VBZ2VudCh0aGlzKTsKIH0K
IAogdm9pZCBJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQ6OmRpc2FibGUoRXJyb3JTdHJpbmcmIGVy
cm9yU3RyaW5nKQogewotICAgIGlmIChtX2luc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yRE9N
U3RvcmFnZUFnZW50KCkgIT0gdGhpcykgeworICAgIGlmIChtX2luc3RydW1lbnRpbmdBZ2VudHMu
ZW5hYmxlZERPTVN0b3JhZ2VBZ2VudCgpICE9IHRoaXMpIHsKICAgICAgICAgZXJyb3JTdHJpbmcg
PSAiRE9NU3RvcmFnZSBkb21haW4gYWxyZWFkeSBkaXNhYmxlZCJfczsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIAotICAgIG1faW5zdHJ1bWVudGluZ0FnZW50cy5zZXRJbnNwZWN0b3JET01TdG9y
YWdlQWdlbnQobnVsbHB0cik7CisgICAgbV9pbnN0cnVtZW50aW5nQWdlbnRzLnNldEVuYWJsZWRE
T01TdG9yYWdlQWdlbnQobnVsbHB0cik7CiB9CiAKIHZvaWQgSW5zcGVjdG9yRE9NU3RvcmFnZUFn
ZW50OjpnZXRET01TdG9yYWdlSXRlbXMoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBK
U09OOjpPYmplY3QmIHN0b3JhZ2VJZCwgUmVmUHRyPEpTT046OkFycmF5T2Y8SlNPTjo6QXJyYXlP
ZjxTdHJpbmc+Pj4mIGl0ZW1zKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JEYXRhYmFzZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5jcHAKaW5kZXggYTBiZGNiZDA1YWYz
ZTQ5MmU5NGEzNjM5ZGRlMDlhY2MzOTQyMjZiZC4uNGI5YTU1ZGU1NTdiZTk0NjcxNmY1ZTAyMTEx
NDQzNzExODJkNmQ1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JEYXRhYmFzZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3RvckRhdGFiYXNlQWdlbnQuY3BwCkBAIC0yMzYsMTIgKzIzNiwxMiBA
QCB2b2lkIEluc3BlY3RvckRhdGFiYXNlQWdlbnQ6OndpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNr
ZW5kKEluc3BlY3Rvcjo6RGlzY29ubmVjdAogCiB2b2lkIEluc3BlY3RvckRhdGFiYXNlQWdlbnQ6
OmVuYWJsZShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcpCiB7Ci0gICAgaWYgKG1faW5zdHJ1bWVu
dGluZ0FnZW50cy5pbnNwZWN0b3JEYXRhYmFzZUFnZW50KCkgPT0gdGhpcykgeworICAgIGlmICht
X2luc3RydW1lbnRpbmdBZ2VudHMuZW5hYmxlZERhdGFiYXNlQWdlbnQoKSA9PSB0aGlzKSB7CiAg
ICAgICAgIGVycm9yU3RyaW5nID0gIkRhdGFiYXNlIGRvbWFpbiBhbHJlYWR5IGVuYWJsZWQiX3M7
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBtX2luc3RydW1lbnRpbmdBZ2VudHMuc2V0
SW5zcGVjdG9yRGF0YWJhc2VBZ2VudCh0aGlzKTsKKyAgICBtX2luc3RydW1lbnRpbmdBZ2VudHMu
c2V0RW5hYmxlZERhdGFiYXNlQWdlbnQodGhpcyk7CiAKICAgICBmb3IgKGF1dG8mIGRhdGFiYXNl
IDogRGF0YWJhc2VUcmFja2VyOjpzaW5nbGV0b24oKS5vcGVuRGF0YWJhc2VzKCkpCiAgICAgICAg
IGRpZE9wZW5EYXRhYmFzZShkYXRhYmFzZS5nZXQoKSk7CkBAIC0yNDksMTkgKzI0OSwxOSBAQCB2
b2lkIEluc3BlY3RvckRhdGFiYXNlQWdlbnQ6OmVuYWJsZShFcnJvclN0cmluZyYgZXJyb3JTdHJp
bmcpCiAKIHZvaWQgSW5zcGVjdG9yRGF0YWJhc2VBZ2VudDo6ZGlzYWJsZShFcnJvclN0cmluZyYg
ZXJyb3JTdHJpbmcpCiB7Ci0gICAgaWYgKG1faW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JE
YXRhYmFzZUFnZW50KCkgIT0gdGhpcykgeworICAgIGlmIChtX2luc3RydW1lbnRpbmdBZ2VudHMu
ZW5hYmxlZERhdGFiYXNlQWdlbnQoKSAhPSB0aGlzKSB7CiAgICAgICAgIGVycm9yU3RyaW5nID0g
IkRhdGFiYXNlIGRvbWFpbiBhbHJlYWR5IGRpc2FibGVkIl9zOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCi0gICAgbV9pbnN0cnVtZW50aW5nQWdlbnRzLnNldEluc3BlY3RvckRhdGFiYXNlQWdl
bnQobnVsbHB0cik7CisgICAgbV9pbnN0cnVtZW50aW5nQWdlbnRzLnNldEVuYWJsZWREYXRhYmFz
ZUFnZW50KG51bGxwdHIpOwogCiAgICAgbV9yZXNvdXJjZXMuY2xlYXIoKTsKIH0KIAogdm9pZCBJ
bnNwZWN0b3JEYXRhYmFzZUFnZW50OjpnZXREYXRhYmFzZVRhYmxlTmFtZXMoRXJyb3JTdHJpbmcm
IGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIGRhdGFiYXNlSWQsIFJlZlB0cjxKU09OOjpBcnJh
eU9mPFN0cmluZz4+JiBuYW1lcykKIHsKLSAgICBpZiAobV9pbnN0cnVtZW50aW5nQWdlbnRzLmlu
c3BlY3RvckRhdGFiYXNlQWdlbnQoKSAhPSB0aGlzKSB7CisgICAgaWYgKG1faW5zdHJ1bWVudGlu
Z0FnZW50cy5lbmFibGVkRGF0YWJhc2VBZ2VudCgpICE9IHRoaXMpIHsKICAgICAgICAgZXJyb3JT
dHJpbmcgPSAiRGF0YWJhc2UgZG9tYWluIG11c3QgYmUgZW5hYmxlZCJfczsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KQEAgLTI3Niw3ICsyNzYsNyBAQCB2b2lkIEluc3BlY3RvckRhdGFiYXNlQWdl
bnQ6OmdldERhdGFiYXNlVGFibGVOYW1lcyhFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbgog
CiB2b2lkIEluc3BlY3RvckRhdGFiYXNlQWdlbnQ6OmV4ZWN1dGVTUUwoY29uc3QgU3RyaW5nJiBk
YXRhYmFzZUlkLCBjb25zdCBTdHJpbmcmIHF1ZXJ5LCBSZWY8RXhlY3V0ZVNRTENhbGxiYWNrPiYm
IHJlcXVlc3RDYWxsYmFjaykKIHsKLSAgICBpZiAobV9pbnN0cnVtZW50aW5nQWdlbnRzLmluc3Bl
Y3RvckRhdGFiYXNlQWdlbnQoKSAhPSB0aGlzKSB7CisgICAgaWYgKG1faW5zdHJ1bWVudGluZ0Fn
ZW50cy5lbmFibGVkRGF0YWJhc2VBZ2VudCgpICE9IHRoaXMpIHsKICAgICAgICAgcmVxdWVzdENh
bGxiYWNrLT5zZW5kRmFpbHVyZSgiRGF0YWJhc2UgZG9tYWluIG11c3QgYmUgZW5hYmxlZCJfcyk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvYWdlbnRzL0luc3BlY3RvckxheWVyVHJlZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuY3BwCmluZGV4IGNlYzNk
YWNlZDVlNjc0ZjYyNTU3ZjNhYjBkMTFlMjU1MjUzYTRhNmIuLmIyMGFiZTgxYjliMGQ2M2FjNzA2
NTllODdhOTJiODMyZDc3OGU0Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuY3BwCkBAIC03NiwxMiAr
NzYsMTIgQEAgdm9pZCBJbnNwZWN0b3JMYXllclRyZWVBZ2VudDo6cmVzZXQoKQogCiB2b2lkIElu
c3BlY3RvckxheWVyVHJlZUFnZW50OjplbmFibGUoRXJyb3JTdHJpbmcmKQogewotICAgIG1faW5z
dHJ1bWVudGluZ0FnZW50cy5zZXRJbnNwZWN0b3JMYXllclRyZWVBZ2VudCh0aGlzKTsKKyAgICBt
X2luc3RydW1lbnRpbmdBZ2VudHMuc2V0RW5hYmxlZExheWVyVHJlZUFnZW50KHRoaXMpOwogfQog
CiB2b2lkIEluc3BlY3RvckxheWVyVHJlZUFnZW50OjpkaXNhYmxlKEVycm9yU3RyaW5nJikKIHsK
LSAgICBtX2luc3RydW1lbnRpbmdBZ2VudHMuc2V0SW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQobnVs
bHB0cik7CisgICAgbV9pbnN0cnVtZW50aW5nQWdlbnRzLnNldEVuYWJsZWRMYXllclRyZWVBZ2Vu
dChudWxscHRyKTsKIAogICAgIHJlc2V0KCk7CiB9CkBAIC0xMTAsNyArMTEwLDcgQEAgdm9pZCBJ
bnNwZWN0b3JMYXllclRyZWVBZ2VudDo6bGF5ZXJzRm9yTm9kZShFcnJvclN0cmluZyYgZXJyb3JT
dHJpbmcsIGludCBub2RlSWQKIHsKICAgICBsYXllcnMgPSBKU09OOjpBcnJheU9mPEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkxheWVyVHJlZTo6TGF5ZXI+OjpjcmVhdGUoKTsKIAotICAgIGF1dG8qIG5v
ZGUgPSBtX2luc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yRE9NQWdlbnQoKS0+bm9kZUZvcklk
KG5vZGVJZCk7CisgICAgYXV0byogbm9kZSA9IG1faW5zdHJ1bWVudGluZ0FnZW50cy5wZXJzaXN0
ZW50RE9NQWdlbnQoKS0+bm9kZUZvcklkKG5vZGVJZCk7CiAgICAgaWYgKCFub2RlKSB7CiAgICAg
ICAgIGVycm9yU3RyaW5nID0gIk1pc3Npbmcgbm9kZSBmb3IgZ2l2ZW4gbm9kZUlkIl9zOwogICAg
ICAgICByZXR1cm47CkBAIC0yMTQsNyArMjE0LDcgQEAgaW50IEluc3BlY3RvckxheWVyVHJlZUFn
ZW50OjppZEZvck5vZGUoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBOb2RlKiBub2RlKQogICAg
IGlmICghbm9kZSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBJbnNwZWN0b3JET01BZ2VudCog
ZG9tQWdlbnQgPSBtX2luc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yRE9NQWdlbnQoKTsKKyAg
ICBJbnNwZWN0b3JET01BZ2VudCogZG9tQWdlbnQgPSBtX2luc3RydW1lbnRpbmdBZ2VudHMucGVy
c2lzdGVudERPTUFnZW50KCk7CiAgICAgCiAgICAgaW50IG5vZGVJZCA9IGRvbUFnZW50LT5ib3Vu
ZE5vZGVJZChub2RlKTsKICAgICBpZiAoIW5vZGVJZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTWVtb3J5QWdlbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JNZW1vcnlBZ2VudC5jcHAKaW5kZXggZDQz
NmVkNDc2ZDg0ZTZlYjk4MGFhZmE5YWQ1YTUwOTc1Njg4NjdjZS4uZDBlOGFhNjg4MzM2NTllNjRh
ZmU1NTM0N2NiNTZmNzczZWI3ZDdhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2FnZW50cy9JbnNwZWN0b3JNZW1vcnlBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JNZW1vcnlBZ2VudC5jcHAKQEAgLTQ5LDMyICs0OSwz
NSBAQCBJbnNwZWN0b3JNZW1vcnlBZ2VudDo6fkluc3BlY3Rvck1lbW9yeUFnZW50KCkgPSBkZWZh
dWx0OwogCiB2b2lkIEluc3BlY3Rvck1lbW9yeUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJh
Y2tlbmQoRnJvbnRlbmRSb3V0ZXIqLCBCYWNrZW5kRGlzcGF0Y2hlciopCiB7CisgICAgbV9pbnN0
cnVtZW50aW5nQWdlbnRzLnNldFBlcnNpc3RlbnRNZW1vcnlBZ2VudCh0aGlzKTsKIH0KIAogdm9p
ZCBJbnNwZWN0b3JNZW1vcnlBZ2VudDo6d2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoRGlz
Y29ubmVjdFJlYXNvbikKIHsKICAgICBFcnJvclN0cmluZyBpZ25vcmVkOwogICAgIGRpc2FibGUo
aWdub3JlZCk7CisKKyAgICBtX2luc3RydW1lbnRpbmdBZ2VudHMuc2V0UGVyc2lzdGVudE1lbW9y
eUFnZW50KG51bGxwdHIpOwogfQogCiB2b2lkIEluc3BlY3Rvck1lbW9yeUFnZW50OjplbmFibGUo
RXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nKQogewotICAgIGlmIChtX2luc3RydW1lbnRpbmdBZ2Vu
dHMuaW5zcGVjdG9yTWVtb3J5QWdlbnQoKSA9PSB0aGlzKSB7CisgICAgaWYgKG1faW5zdHJ1bWVu
dGluZ0FnZW50cy5lbmFibGVkTWVtb3J5QWdlbnQoKSA9PSB0aGlzKSB7CiAgICAgICAgIGVycm9y
U3RyaW5nID0gIk1lbW9yeSBkb21haW4gYWxyZWFkeSBlbmFibGVkIl9zOwogICAgICAgICByZXR1
cm47CiAgICAgfQogCi0gICAgbV9pbnN0cnVtZW50aW5nQWdlbnRzLnNldEluc3BlY3Rvck1lbW9y
eUFnZW50KHRoaXMpOworICAgIG1faW5zdHJ1bWVudGluZ0FnZW50cy5zZXRFbmFibGVkTWVtb3J5
QWdlbnQodGhpcyk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yTWVtb3J5QWdlbnQ6OmRpc2FibGUoRXJy
b3JTdHJpbmcmIGVycm9yU3RyaW5nKQogewotICAgIGlmIChtX2luc3RydW1lbnRpbmdBZ2VudHMu
aW5zcGVjdG9yTWVtb3J5QWdlbnQoKSAhPSB0aGlzKSB7CisgICAgaWYgKG1faW5zdHJ1bWVudGlu
Z0FnZW50cy5lbmFibGVkTWVtb3J5QWdlbnQoKSAhPSB0aGlzKSB7CiAgICAgICAgIGVycm9yU3Ry
aW5nID0gIk1lbW9yeSBkb21haW4gYWxyZWFkeSBkaXNhYmxlZCJfczsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIAotICAgIG1faW5zdHJ1bWVudGluZ0FnZW50cy5zZXRJbnNwZWN0b3JNZW1vcnlB
Z2VudChudWxscHRyKTsKKyAgICBtX2luc3RydW1lbnRpbmdBZ2VudHMuc2V0RW5hYmxlZE1lbW9y
eUFnZW50KG51bGxwdHIpOwogCiAgICAgbV90cmFja2luZyA9IGZhbHNlOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2Vu
dC5jcHAKaW5kZXggYWZjZGQyYTdmYWZmZTBiZWM5ODIwNzJkODk0YmM4NWM2ZTMwYzQ0Yy4uMTc4
N2Q2OWIzNTA1ZDA4MjZhYmE5ZGEzNGVmZWEzNWViMWI0MTI5OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNw
cApAQCAtNzMxLDcgKzczMSw3IEBAIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpOZXR3b3Jr
OjpJbml0aWF0b3I+IEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6YnVpbGRJbml0CiAgICAgICAgIGlu
aXRpYXRvck9iamVjdC0+c2V0TGluZU51bWJlcihkb2N1bWVudC0+c2NyaXB0YWJsZURvY3VtZW50
UGFyc2VyKCktPnRleHRQb3NpdGlvbigpLm1fbGluZS5vbmVCYXNlZEludCgpKTsKICAgICB9CiAK
LSAgICBhdXRvIGRvbUFnZW50ID0gbV9pbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3RvckRPTUFn
ZW50KCk7CisgICAgYXV0byBkb21BZ2VudCA9IG1faW5zdHJ1bWVudGluZ0FnZW50cy5wZXJzaXN0
ZW50RE9NQWdlbnQoKTsKICAgICBpZiAoZG9tQWdlbnQgJiYgcmVzb3VyY2VSZXF1ZXN0KSB7CiAg
ICAgICAgIGlmIChhdXRvIGluc3BlY3RvckluaXRpYXRvck5vZGVJZGVudGlmaWVyID0gcmVzb3Vy
Y2VSZXF1ZXN0LT5pbnNwZWN0b3JJbml0aWF0b3JOb2RlSWRlbnRpZmllcigpKSB7CiAgICAgICAg
ICAgICBpZiAoIWluaXRpYXRvck9iamVjdCkgewpAQCAtODA1LDcgKzgwNSw3IEBAIHZvaWQgSW5z
cGVjdG9yTmV0d29ya0FnZW50OjplbmFibGUoRXJyb3JTdHJpbmcmKQogdm9pZCBJbnNwZWN0b3JO
ZXR3b3JrQWdlbnQ6OmVuYWJsZSgpCiB7CiAgICAgbV9lbmFibGVkID0gdHJ1ZTsKLSAgICBtX2lu
c3RydW1lbnRpbmdBZ2VudHMuc2V0SW5zcGVjdG9yTmV0d29ya0FnZW50KHRoaXMpOworICAgIG1f
aW5zdHJ1bWVudGluZ0FnZW50cy5zZXRFbmFibGVkTmV0d29ya0FnZW50KHRoaXMpOwogCiAgICAg
ewogICAgICAgICBMb2NrSG9sZGVyIGxvY2soV2ViU29ja2V0OjphbGxBY3RpdmVXZWJTb2NrZXRz
TXV0ZXgoKSk7CkBAIC04MzcsNyArODM3LDcgQEAgdm9pZCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6
OmRpc2FibGUoRXJyb3JTdHJpbmcmKQogICAgIG1fZW5hYmxlZCA9IGZhbHNlOwogICAgIG1faW50
ZXJjZXB0aW9uRW5hYmxlZCA9IGZhbHNlOwogICAgIG1faW50ZXJjZXB0cy5jbGVhcigpOwotICAg
IG1faW5zdHJ1bWVudGluZ0FnZW50cy5zZXRJbnNwZWN0b3JOZXR3b3JrQWdlbnQobnVsbHB0cik7
CisgICAgbV9pbnN0cnVtZW50aW5nQWdlbnRzLnNldEVuYWJsZWROZXR3b3JrQWdlbnQobnVsbHB0
cik7CiAgICAgbV9yZXNvdXJjZXNEYXRhLT5jbGVhcigpOwogICAgIG1fZXh0cmFSZXF1ZXN0SGVh
ZGVycy5jbGVhcigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKaW5kZXggNDM1MjI4OTRlMGY5MzAwZjAxOGY3MjVh
NDJiYmM0YzU5Yzc0Nzg0NC4uODMyN2Y5MThiYjBkM2I3NmJjN2RjYjBlNjYzNDMyMzQwNTI2NTc3
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQ
YWdlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVj
dG9yUGFnZUFnZW50LmNwcApAQCAtMzQ1LDEyICszNDUsMTIgQEAgdm9pZCBJbnNwZWN0b3JQYWdl
QWdlbnQ6OndpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6RGlzY29ubmVj
dFJlYXMKIAogdm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OmVuYWJsZShFcnJvclN0cmluZyYgZXJy
b3JTdHJpbmcpCiB7Ci0gICAgaWYgKG1faW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JQYWdl
QWdlbnQoKSA9PSB0aGlzKSB7CisgICAgaWYgKG1faW5zdHJ1bWVudGluZ0FnZW50cy5lbmFibGVk
UGFnZUFnZW50KCkgPT0gdGhpcykgewogICAgICAgICBlcnJvclN0cmluZyA9ICJQYWdlIGRvbWFp
biBhbHJlYWR5IGVuYWJsZWQiX3M7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBtX2lu
c3RydW1lbnRpbmdBZ2VudHMuc2V0SW5zcGVjdG9yUGFnZUFnZW50KHRoaXMpOworICAgIG1faW5z
dHJ1bWVudGluZ0FnZW50cy5zZXRFbmFibGVkUGFnZUFnZW50KHRoaXMpOwogCiAgICAgYXV0byYg
c3RvcHdhdGNoID0gbV9lbnZpcm9ubWVudC5leGVjdXRpb25TdG9wd2F0Y2goKTsKICAgICBzdG9w
d2F0Y2gucmVzZXQoKTsKQEAgLTM2Myw3ICszNjMsNyBAQCB2b2lkIEluc3BlY3RvclBhZ2VBZ2Vu
dDo6ZW5hYmxlKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZykKIAogdm9pZCBJbnNwZWN0b3JQYWdl
QWdlbnQ6OmRpc2FibGUoRXJyb3JTdHJpbmcmKQogewotICAgIG1faW5zdHJ1bWVudGluZ0FnZW50
cy5zZXRJbnNwZWN0b3JQYWdlQWdlbnQobnVsbHB0cik7CisgICAgbV9pbnN0cnVtZW50aW5nQWdl
bnRzLnNldEVuYWJsZWRQYWdlQWdlbnQobnVsbHB0cik7CiAKICAgICBFcnJvclN0cmluZyB1bnVz
ZWQ7CiAgICAgc2V0U2hvd1BhaW50UmVjdHModW51c2VkLCBmYWxzZSk7CkBAIC03MDUsNyArNzA1
LDcgQEAgdm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OnNlYXJjaEluUmVzb3VyY2UoRXJyb3JTdHJp
bmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcKICAgICBib29sIGNhc2VTZW5zaXRpdmUgPSBv
cHRpb25hbENhc2VTZW5zaXRpdmUgPyAqb3B0aW9uYWxDYXNlU2Vuc2l0aXZlIDogZmFsc2U7CiAK
ICAgICBpZiAob3B0aW9uYWxSZXF1ZXN0SWQpIHsKLSAgICAgICAgaWYgKEluc3BlY3Rvck5ldHdv
cmtBZ2VudCogbmV0d29ya0FnZW50ID0gbV9pbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3Rvck5l
dHdvcmtBZ2VudCgpKSB7CisgICAgICAgIGlmIChhdXRvKiBuZXR3b3JrQWdlbnQgPSBtX2luc3Ry
dW1lbnRpbmdBZ2VudHMuZW5hYmxlZE5ldHdvcmtBZ2VudCgpKSB7CiAgICAgICAgICAgICBuZXR3
b3JrQWdlbnQtPnNlYXJjaEluUmVxdWVzdChlcnJvclN0cmluZywgKm9wdGlvbmFsUmVxdWVzdElk
LCBxdWVyeSwgY2FzZVNlbnNpdGl2ZSwgaXNSZWdleCwgcmVzdWx0cyk7CiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIH0KQEAgLTc3MCw3ICs3NzAsNyBAQCB2b2lkIEluc3BlY3RvclBhZ2VB
Z2VudDo6c2VhcmNoSW5SZXNvdXJjZXMoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHRleHQs
IGNvbgogICAgICAgICB9CiAgICAgfQogCi0gICAgaWYgKEluc3BlY3Rvck5ldHdvcmtBZ2VudCog
bmV0d29ya0FnZW50ID0gbV9pbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3Rvck5ldHdvcmtBZ2Vu
dCgpKQorICAgIGlmIChhdXRvKiBuZXR3b3JrQWdlbnQgPSBtX2luc3RydW1lbnRpbmdBZ2VudHMu
ZW5hYmxlZE5ldHdvcmtBZ2VudCgpKQogICAgICAgICBuZXR3b3JrQWdlbnQtPnNlYXJjaE90aGVy
UmVxdWVzdHMocmVnZXgsIHJlc3VsdCk7CiB9CiAKQEAgLTEwNDIsNyArMTA0Miw3IEBAIHZvaWQg
SW5zcGVjdG9yUGFnZUFnZW50OjphcHBseUVtdWxhdGVkTWVkaWEoU3RyaW5nJiBtZWRpYSkKIAog
dm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OnNuYXBzaG90Tm9kZShFcnJvclN0cmluZyYgZXJyb3JT
dHJpbmcsIGludCBub2RlSWQsIFN0cmluZyogb3V0RGF0YVVSTCkKIHsKLSAgICBJbnNwZWN0b3JE
T01BZ2VudCogZG9tQWdlbnQgPSBtX2luc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yRE9NQWdl
bnQoKTsKKyAgICBJbnNwZWN0b3JET01BZ2VudCogZG9tQWdlbnQgPSBtX2luc3RydW1lbnRpbmdB
Z2VudHMucGVyc2lzdGVudERPTUFnZW50KCk7CiAgICAgQVNTRVJUKGRvbUFnZW50KTsKICAgICBO
b2RlKiBub2RlID0gZG9tQWdlbnQtPmFzc2VydE5vZGUoZXJyb3JTdHJpbmcsIG5vZGVJZCk7CiAg
ICAgaWYgKCFub2RlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5jcHAKaW5kZXggZGQ4MDdmMWY3MmI5YzFiN2Nl
MzU3ZmE1NzMyYjNkYzVmNmZjYTg4Ni4uMTQwZTE1NzhjNWYwOTZlNDQ0ZWQxNDkyMDc3MThlZTdm
ODY0NTUyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JUaW1lbGluZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuY3BwCkBAIC0xMDgsMjIgKzEwOCwyMiBAQCB2b2lk
IEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OndpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKElu
c3BlY3Rvcjo6RGlzY29ubmVjdAogCiB2b2lkIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OmVuYWJs
ZShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcpCiB7Ci0gICAgaWYgKG1faW5zdHJ1bWVudGluZ0Fn
ZW50cy5pbnNwZWN0b3JUaW1lbGluZUFnZW50KCkgPT0gdGhpcykgeworICAgIGlmIChtX2luc3Ry
dW1lbnRpbmdBZ2VudHMuZW5hYmxlZFRpbWVsaW5lQWdlbnQoKSA9PSB0aGlzKSB7CiAgICAgICAg
IGVycm9yU3RyaW5nID0gIlRpbWVsaW5lIGRvbWFpbiBhbHJlYWR5IGVuYWJsZWQiX3M7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKLSAgICBtX2luc3RydW1lbnRpbmdBZ2VudHMuc2V0SW5zcGVj
dG9yVGltZWxpbmVBZ2VudCh0aGlzKTsKKyAgICBtX2luc3RydW1lbnRpbmdBZ2VudHMuc2V0RW5h
YmxlZFRpbWVsaW5lQWdlbnQodGhpcyk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yVGltZWxpbmVBZ2Vu
dDo6ZGlzYWJsZShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcpCiB7Ci0gICAgaWYgKG1faW5zdHJ1
bWVudGluZ0FnZW50cy5pbnNwZWN0b3JUaW1lbGluZUFnZW50KCkgIT0gdGhpcykgeworICAgIGlm
IChtX2luc3RydW1lbnRpbmdBZ2VudHMuZW5hYmxlZFRpbWVsaW5lQWdlbnQoKSAhPSB0aGlzKSB7
CiAgICAgICAgIGVycm9yU3RyaW5nID0gIlRpbWVsaW5lIGRvbWFpbiBhbHJlYWR5IGRpc2FibGVk
Il9zOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbV9pbnN0cnVtZW50aW5nQWdlbnRz
LnNldEluc3BlY3RvclRpbWVsaW5lQWdlbnQobnVsbHB0cik7CisgICAgbV9pbnN0cnVtZW50aW5n
QWdlbnRzLnNldEVuYWJsZWRUaW1lbGluZUFnZW50KG51bGxwdHIpOwogCiAgICAgRXJyb3JTdHJp
bmcgaWdub3JlZDsKICAgICBzdG9wKGlnbm9yZWQpOwpAQCAtMTg1LDcgKzE4NSw3IEBAIHZvaWQg
SW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6aW50ZXJuYWxTdGFydChjb25zdCBpbnQqIG1heENhbGxT
dGFja0RlcHRoKQogICAgIGVsc2UKICAgICAgICAgbV9tYXhDYWxsU3RhY2tEZXB0aCA9IDU7CiAK
LSAgICBtX2luc3RydW1lbnRpbmdBZ2VudHMuc2V0VHJhY2tpbmdJbnNwZWN0b3JUaW1lbGluZUFn
ZW50KHRoaXMpOworICAgIG1faW5zdHJ1bWVudGluZ0FnZW50cy5zZXRUcmFja2luZ1RpbWVsaW5l
QWdlbnQodGhpcyk7CiAKICAgICBtX2Vudmlyb25tZW50LnNjcmlwdERlYnVnU2VydmVyKCkuYWRk
TGlzdGVuZXIodGhpcyk7CiAKQEAgLTIzOSw3ICsyMzksNyBAQCB2b2lkIEluc3BlY3RvclRpbWVs
aW5lQWdlbnQ6OmludGVybmFsU3RvcCgpCiAgICAgaWYgKCFtX3RyYWNraW5nKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBtX2luc3RydW1lbnRpbmdBZ2VudHMuc2V0VHJhY2tpbmdJbnNwZWN0b3JU
aW1lbGluZUFnZW50KG51bGxwdHIpOworICAgIG1faW5zdHJ1bWVudGluZ0FnZW50cy5zZXRUcmFj
a2luZ1RpbWVsaW5lQWdlbnQobnVsbHB0cik7CiAKICAgICBtX2Vudmlyb25tZW50LnNjcmlwdERl
YnVnU2VydmVyKCkucmVtb3ZlTGlzdGVuZXIodGhpcywgdHJ1ZSk7CiAKQEAgLTI3OCw3ICsyNzgs
NyBAQCB2b2lkIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OnN0YXJ0RnJvbUNvbnNvbGUoSlNDOjpK
U0dsb2JhbE9iamVjdCogZXhlYywgY29uc3QgUwogICAgICAgICAgICAgU3RyaW5nIHJlY29yZFRp
dGxlOwogICAgICAgICAgICAgcmVjb3JkLmRhdGEtPmdldFN0cmluZygidGl0bGUiX3MsIHJlY29y
ZFRpdGxlKTsKICAgICAgICAgICAgIGlmIChyZWNvcmRUaXRsZSA9PSB0aXRsZSkgewotICAgICAg
ICAgICAgICAgIGlmIChXZWJDb25zb2xlQWdlbnQqIGNvbnNvbGVBZ2VudCA9IG1faW5zdHJ1bWVu
dGluZ0FnZW50cy53ZWJDb25zb2xlQWdlbnQoKSkgeworICAgICAgICAgICAgICAgIGlmIChhdXRv
KiBjb25zb2xlQWdlbnQgPSBtX2luc3RydW1lbnRpbmdBZ2VudHMud2ViQ29uc29sZUFnZW50KCkp
IHsKICAgICAgICAgICAgICAgICAgICAgLy8gRklYTUU6IFNlbmQgYW4gZW51bSB0byB0aGUgZnJv
bnRlbmQgZm9yIGxvY2FsaXphdGlvbj8KICAgICAgICAgICAgICAgICAgICAgU3RyaW5nIHdhcm5p
bmcgPSB0aXRsZS5pc0VtcHR5KCkgPyAiVW5uYW1lZCBQcm9maWxlIGFscmVhZHkgZXhpc3RzIl9z
IDogbWFrZVN0cmluZygiUHJvZmlsZSBcIiIsIHRpdGxlLCAiXCIgYWxyZWFkeSBleGlzdHMiKTsK
ICAgICAgICAgICAgICAgICAgICAgY29uc29sZUFnZW50LT5hZGRNZXNzYWdlVG9Db25zb2xlKG1h
a2VVbmlxdWU8Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkNvbnNvbGVBUEksIE1lc3Nh
Z2VUeXBlOjpQcm9maWxlLCBNZXNzYWdlTGV2ZWw6Oldhcm5pbmcsIHdhcm5pbmcpKTsKQEAgLTMx
NCw3ICszMTQsNyBAQCB2b2lkIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OnN0b3BGcm9tQ29uc29s
ZShKU0M6OkpTR2xvYmFsT2JqZWN0KiwgY29uc3QgU3RyaW5nJgogICAgICAgICB9CiAgICAgfQog
Ci0gICAgaWYgKFdlYkNvbnNvbGVBZ2VudCogY29uc29sZUFnZW50ID0gbV9pbnN0cnVtZW50aW5n
QWdlbnRzLndlYkNvbnNvbGVBZ2VudCgpKSB7CisgICAgaWYgKGF1dG8qIGNvbnNvbGVBZ2VudCA9
IG1faW5zdHJ1bWVudGluZ0FnZW50cy53ZWJDb25zb2xlQWdlbnQoKSkgewogICAgICAgICAvLyBG
SVhNRTogU2VuZCBhbiBlbnVtIHRvIHRoZSBmcm9udGVuZCBmb3IgbG9jYWxpemF0aW9uPwogICAg
ICAgICBTdHJpbmcgd2FybmluZyA9IHRpdGxlLmlzRW1wdHkoKSA/ICJObyBwcm9maWxlcyBleGlz
dCJfcyA6IG1ha2VTdHJpbmcoIlByb2ZpbGUgXCIiLCB0aXRsZSwgIlwiIGRvZXMgbm90IGV4aXN0
Iik7CiAgICAgICAgIGNvbnNvbGVBZ2VudC0+YWRkTWVzc2FnZVRvQ29uc29sZShtYWtlVW5pcXVl
PENvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpDb25zb2xlQVBJLCBNZXNzYWdlVHlwZTo6
UHJvZmlsZUVuZCwgTWVzc2FnZUxldmVsOjpXYXJuaW5nLCB3YXJuaW5nKSk7CkBAIC00NzksNyAr
NDc5LDcgQEAgdm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50OjptYWluRnJhbWVTdGFydGVkTG9h
ZGluZygpCiAgICAgbV9hdXRvQ2FwdHVyZVBoYXNlID0gQXV0b0NhcHR1cmVQaGFzZTo6QmVmb3Jl
TG9hZDsKIAogICAgIC8vIFByZS1lbXB0aXZlbHkgZGlzYWJsZSBicmVha3BvaW50cy4gVGhlIGZy
b250ZW5kIG11c3QgcmUtZW5hYmxlIHRoZW0uCi0gICAgaWYgKGF1dG8qIHdlYkRlYnVnZ2VyQWdl
bnQgPSBtX2luc3RydW1lbnRpbmdBZ2VudHMud2ViRGVidWdnZXJBZ2VudCgpKSB7CisgICAgaWYg
KGF1dG8qIHdlYkRlYnVnZ2VyQWdlbnQgPSBtX2luc3RydW1lbnRpbmdBZ2VudHMuZW5hYmxlZFdl
YkRlYnVnZ2VyQWdlbnQoKSkgewogICAgICAgICBFcnJvclN0cmluZyBpZ25vcmVkOwogICAgICAg
ICB3ZWJEZWJ1Z2dlckFnZW50LT5zZXRCcmVha3BvaW50c0FjdGl2ZShpZ25vcmVkLCBmYWxzZSk7
CiAgICAgfQpAQCAtNTA0LDcgKzUwNCw3IEBAIHZvaWQgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6
c3RhcnRQcm9ncmFtbWF0aWNDYXB0dXJlKCkKICAgICBBU1NFUlQoIW1fdHJhY2tpbmcpOwogCiAg
ICAgLy8gRGlzYWJsZSBicmVha3BvaW50cyBkdXJpbmcgcHJvZ3JhbW1hdGljIGNhcHR1cmUuCi0g
ICAgaWYgKGF1dG8qIHdlYkRlYnVnZ2VyQWdlbnQgPSBtX2luc3RydW1lbnRpbmdBZ2VudHMud2Vi
RGVidWdnZXJBZ2VudCgpKSB7CisgICAgaWYgKGF1dG8qIHdlYkRlYnVnZ2VyQWdlbnQgPSBtX2lu
c3RydW1lbnRpbmdBZ2VudHMuZW5hYmxlZFdlYkRlYnVnZ2VyQWdlbnQoKSkgewogICAgICAgICBt
X3Byb2dyYW1tYXRpY0NhcHR1cmVSZXN0b3JlQnJlYWtwb2ludEFjdGl2ZVZhbHVlID0gd2ViRGVi
dWdnZXJBZ2VudC0+YnJlYWtwb2ludHNBY3RpdmUoKTsKICAgICAgICAgaWYgKG1fcHJvZ3JhbW1h
dGljQ2FwdHVyZVJlc3RvcmVCcmVha3BvaW50QWN0aXZlVmFsdWUpIHsKICAgICAgICAgICAgIEVy
cm9yU3RyaW5nIGlnbm9yZWQ7CkBAIC01MjksNyArNTI5LDcgQEAgdm9pZCBJbnNwZWN0b3JUaW1l
bGluZUFnZW50OjpzdG9wUHJvZ3JhbW1hdGljQ2FwdHVyZSgpCiAKICAgICAvLyBSZS1lbmFibGUg
YnJlYWtwb2ludHMgaWYgdGhleSB3ZXJlIGVuYWJsZWQuCiAgICAgaWYgKG1fcHJvZ3JhbW1hdGlj
Q2FwdHVyZVJlc3RvcmVCcmVha3BvaW50QWN0aXZlVmFsdWUpIHsKLSAgICAgICAgaWYgKGF1dG8q
IHdlYkRlYnVnZ2VyQWdlbnQgPSBtX2luc3RydW1lbnRpbmdBZ2VudHMud2ViRGVidWdnZXJBZ2Vu
dCgpKSB7CisgICAgICAgIGlmIChhdXRvKiB3ZWJEZWJ1Z2dlckFnZW50ID0gbV9pbnN0cnVtZW50
aW5nQWdlbnRzLmVuYWJsZWRXZWJEZWJ1Z2dlckFnZW50KCkpIHsKICAgICAgICAgICAgIEVycm9y
U3RyaW5nIGlnbm9yZWQ7CiAgICAgICAgICAgICB3ZWJEZWJ1Z2dlckFnZW50LT5zZXRCcmVha3Bv
aW50c0FjdGl2ZShpZ25vcmVkLCB0cnVlKTsKICAgICAgICAgfQpAQCAtNTY4LDcgKzU2OCw3IEBA
IHZvaWQgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6dG9nZ2xlSW5zdHJ1bWVudHMoSW5zdHJ1bWVu
dFN0YXRlIHN0YXRlKQogCiB2b2lkIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OnRvZ2dsZVNjcmlw
dFByb2ZpbGVySW5zdHJ1bWVudChJbnN0cnVtZW50U3RhdGUgc3RhdGUpCiB7Ci0gICAgaWYgKGF1
dG8qIHNjcmlwdFByb2ZpbGVyQWdlbnQgPSBtX2luc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9y
U2NyaXB0UHJvZmlsZXJBZ2VudCgpKSB7CisgICAgaWYgKGF1dG8qIHNjcmlwdFByb2ZpbGVyQWdl
bnQgPSBtX2luc3RydW1lbnRpbmdBZ2VudHMucGVyc2lzdGVudFNjcmlwdFByb2ZpbGVyQWdlbnQo
KSkgewogICAgICAgICBFcnJvclN0cmluZyBpZ25vcmVkOwogICAgICAgICBpZiAoc3RhdGUgPT0g
SW5zdHJ1bWVudFN0YXRlOjpTdGFydCkgewogICAgICAgICAgICAgY29uc3QgYm9vbCBpbmNsdWRl
U2FtcGxlcyA9IHRydWU7CkBAIC01ODAsNyArNTgwLDcgQEAgdm9pZCBJbnNwZWN0b3JUaW1lbGlu
ZUFnZW50Ojp0b2dnbGVTY3JpcHRQcm9maWxlckluc3RydW1lbnQoSW5zdHJ1bWVudFN0YXRlIHN0
YXQKIAogdm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50Ojp0b2dnbGVIZWFwSW5zdHJ1bWVudChJ
bnN0cnVtZW50U3RhdGUgc3RhdGUpCiB7Ci0gICAgaWYgKGF1dG8qIGhlYXBBZ2VudCA9IG1faW5z
dHJ1bWVudGluZ0FnZW50cy5wYWdlSGVhcEFnZW50KCkpIHsKKyAgICBpZiAoYXV0byogaGVhcEFn
ZW50ID0gbV9pbnN0cnVtZW50aW5nQWdlbnRzLmVuYWJsZWRQYWdlSGVhcEFnZW50KCkpIHsKICAg
ICAgICAgRXJyb3JTdHJpbmcgaWdub3JlZDsKICAgICAgICAgaWYgKHN0YXRlID09IEluc3RydW1l
bnRTdGF0ZTo6U3RhcnQpIHsKICAgICAgICAgICAgIGlmIChtX2F1dG9DYXB0dXJlUGhhc2UgPT0g
QXV0b0NhcHR1cmVQaGFzZTo6Tm9uZSB8fCBtX2F1dG9DYXB0dXJlUGhhc2UgPT0gQXV0b0NhcHR1
cmVQaGFzZTo6Rmlyc3ROYXZpZ2F0aW9uKQpAQCAtNTkzLDcgKzU5Myw3IEBAIHZvaWQgSW5zcGVj
dG9yVGltZWxpbmVBZ2VudDo6dG9nZ2xlSGVhcEluc3RydW1lbnQoSW5zdHJ1bWVudFN0YXRlIHN0
YXRlKQogdm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50Ojp0b2dnbGVDUFVJbnN0cnVtZW50KElu
c3RydW1lbnRTdGF0ZSBzdGF0ZSkKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfVVNBR0UpCi0gICAg
aWYgKEluc3BlY3RvckNQVVByb2ZpbGVyQWdlbnQqIGNwdVByb2ZpbGVyQWdlbnQgPSBtX2luc3Ry
dW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yQ1BVUHJvZmlsZXJBZ2VudCgpKSB7CisgICAgaWYgKGF1
dG8qIGNwdVByb2ZpbGVyQWdlbnQgPSBtX2luc3RydW1lbnRpbmdBZ2VudHMucGVyc2lzdGVudENQ
VVByb2ZpbGVyQWdlbnQoKSkgewogICAgICAgICBFcnJvclN0cmluZyBpZ25vcmVkOwogICAgICAg
ICBpZiAoc3RhdGUgPT0gSW5zdHJ1bWVudFN0YXRlOjpTdGFydCkKICAgICAgICAgICAgIGNwdVBy
b2ZpbGVyQWdlbnQtPnN0YXJ0VHJhY2tpbmcoaWdub3JlZCk7CkBAIC02MDgsNyArNjA4LDcgQEAg
dm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50Ojp0b2dnbGVDUFVJbnN0cnVtZW50KEluc3RydW1l
bnRTdGF0ZSBzdGF0ZSkKIHZvaWQgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6dG9nZ2xlTWVtb3J5
SW5zdHJ1bWVudChJbnN0cnVtZW50U3RhdGUgc3RhdGUpCiB7CiAjaWYgRU5BQkxFKFJFU09VUkNF
X1VTQUdFKQotICAgIGlmIChJbnNwZWN0b3JNZW1vcnlBZ2VudCogbWVtb3J5QWdlbnQgPSBtX2lu
c3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yTWVtb3J5QWdlbnQoKSkgeworICAgIGlmIChhdXRv
KiBtZW1vcnlBZ2VudCA9IG1faW5zdHJ1bWVudGluZ0FnZW50cy5wZXJzaXN0ZW50TWVtb3J5QWdl
bnQoKSkgewogICAgICAgICBFcnJvclN0cmluZyBpZ25vcmVkOwogICAgICAgICBpZiAoc3RhdGUg
PT0gSW5zdHJ1bWVudFN0YXRlOjpTdGFydCkKICAgICAgICAgICAgIG1lbW9yeUFnZW50LT5zdGFy
dFRyYWNraW5nKGlnbm9yZWQpOwpAQCAtNjMwLDcgKzYzMCw3IEBAIHZvaWQgSW5zcGVjdG9yVGlt
ZWxpbmVBZ2VudDo6dG9nZ2xlVGltZWxpbmVJbnN0cnVtZW50KEluc3RydW1lbnRTdGF0ZSBzdGF0
ZSkKIAogdm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50Ojp0b2dnbGVBbmltYXRpb25JbnN0cnVt
ZW50KEluc3RydW1lbnRTdGF0ZSBzdGF0ZSkKIHsKLSAgICBpZiAoYXV0byogYW5pbWF0aW9uQWdl
bnQgPSBtX2luc3RydW1lbnRpbmdBZ2VudHMucGVyc2lzdGVudEluc3BlY3RvckFuaW1hdGlvbkFn
ZW50KCkpIHsKKyAgICBpZiAoYXV0byogYW5pbWF0aW9uQWdlbnQgPSBtX2luc3RydW1lbnRpbmdB
Z2VudHMucGVyc2lzdGVudEFuaW1hdGlvbkFnZW50KCkpIHsKICAgICAgICAgRXJyb3JTdHJpbmcg
aWdub3JlZDsKICAgICAgICAgaWYgKHN0YXRlID09IEluc3RydW1lbnRTdGF0ZTo6U3RhcnQpCiAg
ICAgICAgICAgICBhbmltYXRpb25BZ2VudC0+c3RhcnRUcmFja2luZyhpZ25vcmVkKTsKQEAgLTc1
Nyw3ICs3NTcsNyBAQCB2b2lkIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OnNldEZyYW1lSWRlbnRp
ZmllcihKU09OOjpPYmplY3QqIHJlY29yZCwgRnJhbWUqIGZyYQogICAgIGlmICghZnJhbWUpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIGF1dG8qIHBhZ2VBZ2VudCA9IG1faW5zdHJ1bWVudGluZ0Fn
ZW50cy5pbnNwZWN0b3JQYWdlQWdlbnQoKTsKKyAgICBhdXRvKiBwYWdlQWdlbnQgPSBtX2luc3Ry
dW1lbnRpbmdBZ2VudHMuZW5hYmxlZFBhZ2VBZ2VudCgpOwogICAgIGlmICghcGFnZUFnZW50KQog
ICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yV29ya2VyQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JXb3JrZXJBZ2VudC5jcHAKaW5kZXggYTdhMjBmNzIzNDc0M2Q2NTM4
MmI1YzkzMDc3Yzk1ZjJiZmE3OTNiYi4uOTA5YzQ2NmY4N2U5YmZhOGM0YzE3MjhjNDZhZDZlN2U1
OTA3YjQ2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JXb3JrZXJBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JXb3JrZXJBZ2VudC5jcHAKQEAgLTQ2LDEyICs0NiwxMiBAQCBJbnNwZWN0b3JX
b3JrZXJBZ2VudDo6fkluc3BlY3RvcldvcmtlckFnZW50KCkgPSBkZWZhdWx0OwogCiB2b2lkIElu
c3BlY3RvcldvcmtlckFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoRnJvbnRlbmRS
b3V0ZXIqLCBCYWNrZW5kRGlzcGF0Y2hlciopCiB7Ci0gICAgbV9pbnN0cnVtZW50aW5nQWdlbnRz
LnNldEluc3BlY3RvcldvcmtlckFnZW50KHRoaXMpOworICAgIG1faW5zdHJ1bWVudGluZ0FnZW50
cy5zZXRQZXJzaXN0ZW50V29ya2VyQWdlbnQodGhpcyk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yV29y
a2VyQWdlbnQ6OndpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKERpc2Nvbm5lY3RSZWFzb24p
CiB7Ci0gICAgbV9pbnN0cnVtZW50aW5nQWdlbnRzLnNldEluc3BlY3RvcldvcmtlckFnZW50KG51
bGxwdHIpOworICAgIG1faW5zdHJ1bWVudGluZ0FnZW50cy5zZXRQZXJzaXN0ZW50V29ya2VyQWdl
bnQobnVsbHB0cik7CiAKICAgICBFcnJvclN0cmluZyBpZ25vcmVkOwogICAgIGRpc2FibGUoaWdu
b3JlZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL1dlYkRl
YnVnZ2VyQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9XZWJEZWJ1
Z2dlckFnZW50LmNwcAppbmRleCBkZWNhZDZjY2JhOTJmNDE4YzhlNTljYTY2OTIyNTA2ODcyNzRk
MGIwLi5iOTNhODFmYmY0ZjUwNjQ2NmFkYjNlMTNiYmU4OGNjNTM5MjM1YjdlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL1dlYkRlYnVnZ2VyQWdlbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvV2ViRGVidWdnZXJBZ2VudC5jcHAK
QEAgLTQ2LDE5ICs0NiwxOSBAQCBXZWJEZWJ1Z2dlckFnZW50Ojp+V2ViRGVidWdnZXJBZ2VudCgp
ID0gZGVmYXVsdDsKIAogYm9vbCBXZWJEZWJ1Z2dlckFnZW50OjplbmFibGVkKCkgY29uc3QKIHsK
LSAgICByZXR1cm4gbV9pbnN0cnVtZW50aW5nQWdlbnRzLndlYkRlYnVnZ2VyQWdlbnQoKSA9PSB0
aGlzICYmIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmVuYWJsZWQoKTsKKyAgICByZXR1cm4gbV9p
bnN0cnVtZW50aW5nQWdlbnRzLmVuYWJsZWRXZWJEZWJ1Z2dlckFnZW50KCkgPT0gdGhpcyAmJiBJ
bnNwZWN0b3JEZWJ1Z2dlckFnZW50OjplbmFibGVkKCk7CiB9CiAKIHZvaWQgV2ViRGVidWdnZXJB
Z2VudDo6ZW5hYmxlKCkKIHsKLSAgICBtX2luc3RydW1lbnRpbmdBZ2VudHMuc2V0V2ViRGVidWdn
ZXJBZ2VudCh0aGlzKTsKKyAgICBtX2luc3RydW1lbnRpbmdBZ2VudHMuc2V0RW5hYmxlZFdlYkRl
YnVnZ2VyQWdlbnQodGhpcyk7CiAKICAgICBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjplbmFibGUo
KTsKIH0KIAogdm9pZCBXZWJEZWJ1Z2dlckFnZW50OjpkaXNhYmxlKGJvb2wgaXNCZWluZ0Rlc3Ry
b3llZCkKIHsKLSAgICBtX2luc3RydW1lbnRpbmdBZ2VudHMuc2V0V2ViRGVidWdnZXJBZ2VudChu
dWxscHRyKTsKKyAgICBtX2luc3RydW1lbnRpbmdBZ2VudHMuc2V0RW5hYmxlZFdlYkRlYnVnZ2Vy
QWdlbnQobnVsbHB0cik7CiAKICAgICBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpkaXNhYmxlKGlz
QmVpbmdEZXN0cm95ZWQpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2FnZW50cy9XZWJIZWFwQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50
cy9XZWJIZWFwQWdlbnQuY3BwCmluZGV4IGFjZjNjOWYxNTk3ZWRlOWY3OTYwMGQyZDJhNWY4MTY4
ZTM4MDIzMTcuLjVhYTc0NTNkMDk1NjA3NjI3OGViMDMwZjgwOGRkZjAxNGRhYmZiODUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvV2ViSGVhcEFnZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL1dlYkhlYXBBZ2VudC5jcHAKQEAg
LTEwOCw3ICsxMDgsNyBAQCB2b2lkIFdlYkhlYXBBZ2VudDo6ZW5hYmxlKEVycm9yU3RyaW5nJiBl
cnJvclN0cmluZykKICAgICBJbnNwZWN0b3JIZWFwQWdlbnQ6OmVuYWJsZShlcnJvclN0cmluZyk7
CiAKICAgICBpZiAoYXV0byogY29uc29sZUFnZW50ID0gbV9pbnN0cnVtZW50aW5nQWdlbnRzLndl
YkNvbnNvbGVBZ2VudCgpKQotICAgICAgICBjb25zb2xlQWdlbnQtPnNldEluc3BlY3RvckhlYXBB
Z2VudCh0aGlzKTsKKyAgICAgICAgY29uc29sZUFnZW50LT5zZXRIZWFwQWdlbnQodGhpcyk7CiB9
CiAKIHZvaWQgV2ViSGVhcEFnZW50OjpkaXNhYmxlKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZykK
QEAgLTExNiw3ICsxMTYsNyBAQCB2b2lkIFdlYkhlYXBBZ2VudDo6ZGlzYWJsZShFcnJvclN0cmlu
ZyYgZXJyb3JTdHJpbmcpCiAgICAgbV9zZW5kR2FyYmFnZUNvbGxlY3Rpb25FdmVudHNUYXNrLT5y
ZXNldCgpOwogCiAgICAgaWYgKGF1dG8qIGNvbnNvbGVBZ2VudCA9IG1faW5zdHJ1bWVudGluZ0Fn
ZW50cy53ZWJDb25zb2xlQWdlbnQoKSkKLSAgICAgICAgY29uc29sZUFnZW50LT5zZXRJbnNwZWN0
b3JIZWFwQWdlbnQobnVsbHB0cik7CisgICAgICAgIGNvbnNvbGVBZ2VudC0+c2V0SGVhcEFnZW50
KG51bGxwdHIpOwogCiAgICAgSW5zcGVjdG9ySGVhcEFnZW50OjpkaXNhYmxlKGVycm9yU3RyaW5n
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvcGFnZS9Q
YWdlQ29uc29sZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvcGFn
ZS9QYWdlQ29uc29sZUFnZW50LmNwcAppbmRleCBjMWIwYjczMDAyYzFkNDdjYmY1Yzk0MzgzYzEz
OTYwNTU5ZmZmOWQ3Li4xM2ZkMWQ3ZGFiYWE5OWQwYmIwYzQ5ZmY3YmI1ZTUyZjU0YzY2M2QzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZUNvbnNv
bGVBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9wYWdlL1Bh
Z2VDb25zb2xlQWdlbnQuY3BwCkBAIC01Niw3ICs1Niw3IEBAIFBhZ2VDb25zb2xlQWdlbnQ6On5Q
YWdlQ29uc29sZUFnZW50KCkgPSBkZWZhdWx0OwogCiB2b2lkIFBhZ2VDb25zb2xlQWdlbnQ6OmNs
ZWFyTWVzc2FnZXMoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nKQogewotICAgIGlmIChhdXRvKiBk
b21BZ2VudCA9IG1faW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JET01BZ2VudCgpKQorICAg
IGlmIChhdXRvKiBkb21BZ2VudCA9IG1faW5zdHJ1bWVudGluZ0FnZW50cy5wZXJzaXN0ZW50RE9N
QWdlbnQoKSkKICAgICAgICAgZG9tQWdlbnQtPnJlbGVhc2VEYW5nbGluZ05vZGVzKCk7CiAKICAg
ICBXZWJDb25zb2xlQWdlbnQ6OmNsZWFyTWVzc2FnZXMoZXJyb3JTdHJpbmcpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9wYWdlL1BhZ2VET01EZWJ1Z2dlckFn
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlRE9NRGVi
dWdnZXJBZ2VudC5jcHAKaW5kZXggNDAzZDVjNWVjY2QyYmJkZTdkNDE1YWVhMmI5NTQ0ZjJhZTQ0
YjM2YS4uMTM5YmJjNWUzMDIxMDY2NTI0NzQ1NTczOTM1NWY4Y2RlNzRjMjE5MCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9wYWdlL1BhZ2VET01EZWJ1Z2dlckFn
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZURP
TURlYnVnZ2VyQWdlbnQuY3BwCkBAIC03OSwxOSArNzksMTkgQEAgUGFnZURPTURlYnVnZ2VyQWdl
bnQ6On5QYWdlRE9NRGVidWdnZXJBZ2VudCgpID0gZGVmYXVsdDsKIAogYm9vbCBQYWdlRE9NRGVi
dWdnZXJBZ2VudDo6ZW5hYmxlZCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1faW5zdHJ1bWVudGlu
Z0FnZW50cy5wYWdlRE9NRGVidWdnZXJBZ2VudCgpID09IHRoaXMgJiYgSW5zcGVjdG9yRE9NRGVi
dWdnZXJBZ2VudDo6ZW5hYmxlZCgpOworICAgIHJldHVybiBtX2luc3RydW1lbnRpbmdBZ2VudHMu
ZW5hYmxlZFBhZ2VET01EZWJ1Z2dlckFnZW50KCkgPT0gdGhpcyAmJiBJbnNwZWN0b3JET01EZWJ1
Z2dlckFnZW50OjplbmFibGVkKCk7CiB9CiAKIHZvaWQgUGFnZURPTURlYnVnZ2VyQWdlbnQ6OmVu
YWJsZSgpCiB7Ci0gICAgbV9pbnN0cnVtZW50aW5nQWdlbnRzLnNldFBhZ2VET01EZWJ1Z2dlckFn
ZW50KHRoaXMpOworICAgIG1faW5zdHJ1bWVudGluZ0FnZW50cy5zZXRFbmFibGVkUGFnZURPTURl
YnVnZ2VyQWdlbnQodGhpcyk7CiAKICAgICBJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50OjplbmFi
bGUoKTsKIH0KIAogdm9pZCBQYWdlRE9NRGVidWdnZXJBZ2VudDo6ZGlzYWJsZSgpCiB7Ci0gICAg
bV9pbnN0cnVtZW50aW5nQWdlbnRzLnNldFBhZ2VET01EZWJ1Z2dlckFnZW50KG51bGxwdHIpOwor
ICAgIG1faW5zdHJ1bWVudGluZ0FnZW50cy5zZXRFbmFibGVkUGFnZURPTURlYnVnZ2VyQWdlbnQo
bnVsbHB0cik7CiAKICAgICBtX2RvbUJyZWFrcG9pbnRzLmNsZWFyKCk7CiAgICAgbV9wYXVzZU9u
QWxsQW5pbWF0aW9uRnJhbWVzRW5hYmxlZCA9IGZhbHNlOwpAQCAtMTAxLDcgKzEwMSw3IEBAIHZv
aWQgUGFnZURPTURlYnVnZ2VyQWdlbnQ6OmRpc2FibGUoKQogCiB2b2lkIFBhZ2VET01EZWJ1Z2dl
ckFnZW50OjpzZXRET01CcmVha3BvaW50KEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgaW50IG5v
ZGVJZCwgY29uc3QgU3RyaW5nJiB0eXBlU3RyaW5nKQogewotICAgIGF1dG8qIGRvbUFnZW50ID0g
bV9pbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3RvckRPTUFnZW50KCk7CisgICAgYXV0byogZG9t
QWdlbnQgPSBtX2luc3RydW1lbnRpbmdBZ2VudHMucGVyc2lzdGVudERPTUFnZW50KCk7CiAgICAg
aWYgKCFkb21BZ2VudCkgewogICAgICAgICBlcnJvclN0cmluZyA9ICJET00gZG9tYWluIG11c3Qg
YmUgZW5hYmxlZCJfczsKICAgICAgICAgcmV0dXJuOwpAQCAtMTI1LDcgKzEyNSw3IEBAIHZvaWQg
UGFnZURPTURlYnVnZ2VyQWdlbnQ6OnNldERPTUJyZWFrcG9pbnQoRXJyb3JTdHJpbmcmIGVycm9y
U3RyaW5nLCBpbnQgbm9kZUlkCiAKIHZvaWQgUGFnZURPTURlYnVnZ2VyQWdlbnQ6OnJlbW92ZURP
TUJyZWFrcG9pbnQoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBpbnQgbm9kZUlkLCBjb25zdCBT
dHJpbmcmIHR5cGVTdHJpbmcpCiB7Ci0gICAgYXV0byogZG9tQWdlbnQgPSBtX2luc3RydW1lbnRp
bmdBZ2VudHMuaW5zcGVjdG9yRE9NQWdlbnQoKTsKKyAgICBhdXRvKiBkb21BZ2VudCA9IG1faW5z
dHJ1bWVudGluZ0FnZW50cy5wZXJzaXN0ZW50RE9NQWdlbnQoKTsKICAgICBpZiAoIWRvbUFnZW50
KSB7CiAgICAgICAgIGVycm9yU3RyaW5nID0gIkRPTSBkb21haW4gbXVzdCBiZSBlbmFibGVkIl9z
OwogICAgICAgICByZXR1cm47CkBAIC0yMDEsNyArMjAxLDcgQEAgdm9pZCBQYWdlRE9NRGVidWdn
ZXJBZ2VudDo6d2lsbFJlbW92ZURPTU5vZGUoTm9kZSYgbm9kZSkKICAgICAgICAgaWYgKG5vZGUu
Y29udGFpbnMobm9kZVdpdGhCcmVha3BvaW50KSAmJiAoYnJlYWtwb2ludFR5cGVzICYgbWF0Y2hC
aXQpKSB7CiAgICAgICAgICAgICBhdXRvIGV2ZW50RGF0YSA9IEpTT046Ok9iamVjdDo6Y3JlYXRl
KCk7CiAgICAgICAgICAgICBkZXNjcmlwdGlvbkZvckRPTUV2ZW50KCpub2RlV2l0aEJyZWFrcG9p
bnQsIE5vZGVSZW1vdmVkLCBmYWxzZSwgZXZlbnREYXRhLmdldCgpKTsKLSAgICAgICAgICAgIGlm
IChhdXRvKiBkb21BZ2VudCA9IG1faW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JET01BZ2Vu
dCgpKQorICAgICAgICAgICAgaWYgKGF1dG8qIGRvbUFnZW50ID0gbV9pbnN0cnVtZW50aW5nQWdl
bnRzLnBlcnNpc3RlbnRET01BZ2VudCgpKQogICAgICAgICAgICAgICAgIGV2ZW50RGF0YS0+c2V0
SW50ZWdlcigidGFyZ2V0Tm9kZUlkIl9zLCBkb21BZ2VudC0+cHVzaE5vZGVUb0Zyb250ZW5kKCZu
b2RlKSk7CiAgICAgICAgICAgICBtX2RlYnVnZ2VyQWdlbnQtPmJyZWFrUHJvZ3JhbShJbnNwZWN0
b3I6OkRlYnVnZ2VyRnJvbnRlbmREaXNwYXRjaGVyOjpSZWFzb246OkRPTSwgV1RGTW92ZShldmVu
dERhdGEpKTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTI4NCw3ICsyODQsNyBAQCB2b2lkIFBh
Z2VET01EZWJ1Z2dlckFnZW50OjpkZXNjcmlwdGlvbkZvckRPTUV2ZW50KE5vZGUmIHRhcmdldCwg
aW50IGJyZWFrcG9pbnRUeQogICAgIEFTU0VSVChtX2RlYnVnZ2VyQWdlbnQtPmJyZWFrcG9pbnRz
QWN0aXZlKCkpOwogICAgIEFTU0VSVChoYXNCcmVha3BvaW50KCZ0YXJnZXQsIGJyZWFrcG9pbnRU
eXBlKSk7CiAKLSAgICBhdXRvKiBkb21BZ2VudCA9IG1faW5zdHJ1bWVudGluZ0FnZW50cy5pbnNw
ZWN0b3JET01BZ2VudCgpOworICAgIGF1dG8qIGRvbUFnZW50ID0gbV9pbnN0cnVtZW50aW5nQWdl
bnRzLnBlcnNpc3RlbnRET01BZ2VudCgpOwogCiAgICAgTm9kZSogYnJlYWtwb2ludE93bmVyID0g
JnRhcmdldDsKICAgICBpZiAoKDEgPDwgYnJlYWtwb2ludFR5cGUpICYgaW5oZXJpdGFibGVET01C
cmVha3BvaW50VHlwZXNNYXNrKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvYWdlbnRzL3BhZ2UvUGFnZURlYnVnZ2VyQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2FnZW50cy9wYWdlL1BhZ2VEZWJ1Z2dlckFnZW50LmNwcAppbmRleCBjYzBiMDUyNmYx
OWY4MDZjZTYyMTUyMWQwNzcxY2M1ZjMwZDQzODQwLi41MGNjOThiM2ZhMzBlM2RhMWY2ZTVlZGQy
OTFjOWNjNjYzMTY2ZTcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdl
bnRzL3BhZ2UvUGFnZURlYnVnZ2VyQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvcGFnZS9QYWdlRGVidWdnZXJBZ2VudC5jcHAKQEAgLTY1LDcgKzY1LDcgQEAg
UGFnZURlYnVnZ2VyQWdlbnQ6On5QYWdlRGVidWdnZXJBZ2VudCgpID0gZGVmYXVsdDsKIAogYm9v
bCBQYWdlRGVidWdnZXJBZ2VudDo6ZW5hYmxlZCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1faW5z
dHJ1bWVudGluZ0FnZW50cy5wYWdlRGVidWdnZXJBZ2VudCgpID09IHRoaXMgJiYgV2ViRGVidWdn
ZXJBZ2VudDo6ZW5hYmxlZCgpOworICAgIHJldHVybiBtX2luc3RydW1lbnRpbmdBZ2VudHMuZW5h
YmxlZFBhZ2VEZWJ1Z2dlckFnZW50KCkgPT0gdGhpcyAmJiBXZWJEZWJ1Z2dlckFnZW50OjplbmFi
bGVkKCk7CiB9CiAKIHZvaWQgUGFnZURlYnVnZ2VyQWdlbnQ6OmV2YWx1YXRlT25DYWxsRnJhbWUo
RXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIGNhbGxGcmFtZUlkLCBjb25z
dCBTdHJpbmcmIGV4cHJlc3Npb24sIGNvbnN0IFN0cmluZyogb2JqZWN0R3JvdXAsIGNvbnN0IGJv
b2wqIGluY2x1ZGVDb21tYW5kTGluZUFQSSwgY29uc3QgYm9vbCogZG9Ob3RQYXVzZU9uRXhjZXB0
aW9uc0FuZE11dGVDb25zb2xlLCBjb25zdCBib29sKiByZXR1cm5CeVZhbHVlLCBjb25zdCBib29s
KiBnZW5lcmF0ZVByZXZpZXcsIGNvbnN0IGJvb2wqIHNhdmVSZXN1bHQsIGNvbnN0IGJvb2wqIGVt
dWxhdGVVc2VyR2VzdHVyZSwgUmVmUHRyPFByb3RvY29sOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+
JiByZXN1bHQsIE9wdGlvbmFsPGJvb2w+JiB3YXNUaHJvd24sIE9wdGlvbmFsPGludD4mIHNhdmVk
UmVzdWx0SW5kZXgpCkBAIC03OCwxNCArNzgsMTQgQEAgdm9pZCBQYWdlRGVidWdnZXJBZ2VudDo6
ZXZhbHVhdGVPbkNhbGxGcmFtZShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmkK
IAogdm9pZCBQYWdlRGVidWdnZXJBZ2VudDo6ZW5hYmxlKCkKIHsKLSAgICBtX2luc3RydW1lbnRp
bmdBZ2VudHMuc2V0UGFnZURlYnVnZ2VyQWdlbnQodGhpcyk7CisgICAgbV9pbnN0cnVtZW50aW5n
QWdlbnRzLnNldEVuYWJsZWRQYWdlRGVidWdnZXJBZ2VudCh0aGlzKTsKIAogICAgIFdlYkRlYnVn
Z2VyQWdlbnQ6OmVuYWJsZSgpOwogfQogCiB2b2lkIFBhZ2VEZWJ1Z2dlckFnZW50OjpkaXNhYmxl
KGJvb2wgaXNCZWluZ0Rlc3Ryb3llZCkKIHsKLSAgICBtX2luc3RydW1lbnRpbmdBZ2VudHMuc2V0
UGFnZURlYnVnZ2VyQWdlbnQobnVsbHB0cik7CisgICAgbV9pbnN0cnVtZW50aW5nQWdlbnRzLnNl
dEVuYWJsZWRQYWdlRGVidWdnZXJBZ2VudChudWxscHRyKTsKIAogICAgIFdlYkRlYnVnZ2VyQWdl
bnQ6OmRpc2FibGUoaXNCZWluZ0Rlc3Ryb3llZCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZUhlYXBBZ2VudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZUhlYXBBZ2VudC5jcHAKaW5kZXggZjYyZjZl
YjA1Y2U5ZmIzNjRkMGNlZjQ4NDE5YzhkMzYzYjg0ZDUyNC4uNDkyMThlZjEyODNlYmQ0ZGQ3NTQy
MTEzNjliMzQ5YTQ4MjUyMmQ5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2FnZW50cy9wYWdlL1BhZ2VIZWFwQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvcGFnZS9QYWdlSGVhcEFnZW50LmNwcApAQCAtNDIsMTIgKzQyLDEyIEBAIFBh
Z2VIZWFwQWdlbnQ6On5QYWdlSGVhcEFnZW50KCkgPSBkZWZhdWx0Owogdm9pZCBQYWdlSGVhcEFn
ZW50OjplbmFibGUoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nKQogewogICAgIFdlYkhlYXBBZ2Vu
dDo6ZW5hYmxlKGVycm9yU3RyaW5nKTsKLSAgICBtX2luc3RydW1lbnRpbmdBZ2VudHMuc2V0UGFn
ZUhlYXBBZ2VudCh0aGlzKTsKKyAgICBtX2luc3RydW1lbnRpbmdBZ2VudHMuc2V0RW5hYmxlZFBh
Z2VIZWFwQWdlbnQodGhpcyk7CiB9CiAKIHZvaWQgUGFnZUhlYXBBZ2VudDo6ZGlzYWJsZShFcnJv
clN0cmluZyYgZXJyb3JTdHJpbmcpCiB7Ci0gICAgbV9pbnN0cnVtZW50aW5nQWdlbnRzLnNldFBh
Z2VIZWFwQWdlbnQobnVsbHB0cik7CisgICAgbV9pbnN0cnVtZW50aW5nQWdlbnRzLnNldEVuYWJs
ZWRQYWdlSGVhcEFnZW50KG51bGxwdHIpOwogICAgIFdlYkhlYXBBZ2VudDo6ZGlzYWJsZShlcnJv
clN0cmluZyk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2Vu
dHMvcGFnZS9QYWdlTmV0d29ya0FnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9h
Z2VudHMvcGFnZS9QYWdlTmV0d29ya0FnZW50LmNwcAppbmRleCA3MTRmMDM2MDRkNzQxMzBjMjI2
NGQ0NmZjNGIzYTc4MmQ0Mjc3Y2RjLi5jNGRiNjAwYzNlNDIwOGUxZGY3YjEwZTA5ZmE2MmQzODky
N2QxMzAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3BhZ2Uv
UGFnZU5ldHdvcmtBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50
cy9wYWdlL1BhZ2VOZXR3b3JrQWdlbnQuY3BwCkBAIC01MSw3ICs1MSw3IEBAIFBhZ2VOZXR3b3Jr
QWdlbnQ6On5QYWdlTmV0d29ya0FnZW50KCkgPSBkZWZhdWx0OwogU3RyaW5nIFBhZ2VOZXR3b3Jr
QWdlbnQ6OmxvYWRlcklkZW50aWZpZXIoRG9jdW1lbnRMb2FkZXIqIGxvYWRlcikKIHsKICAgICBp
ZiAobG9hZGVyKSB7Ci0gICAgICAgIGlmIChhdXRvKiBwYWdlQWdlbnQgPSBtX2luc3RydW1lbnRp
bmdBZ2VudHMuaW5zcGVjdG9yUGFnZUFnZW50KCkpCisgICAgICAgIGlmIChhdXRvKiBwYWdlQWdl
bnQgPSBtX2luc3RydW1lbnRpbmdBZ2VudHMuZW5hYmxlZFBhZ2VBZ2VudCgpKQogICAgICAgICAg
ICAgcmV0dXJuIHBhZ2VBZ2VudC0+bG9hZGVySWQobG9hZGVyKTsKICAgICB9CiAgICAgcmV0dXJu
IHsgfTsKQEAgLTYwLDcgKzYwLDcgQEAgU3RyaW5nIFBhZ2VOZXR3b3JrQWdlbnQ6OmxvYWRlcklk
ZW50aWZpZXIoRG9jdW1lbnRMb2FkZXIqIGxvYWRlcikKIFN0cmluZyBQYWdlTmV0d29ya0FnZW50
OjpmcmFtZUlkZW50aWZpZXIoRG9jdW1lbnRMb2FkZXIqIGxvYWRlcikKIHsKICAgICBpZiAobG9h
ZGVyKSB7Ci0gICAgICAgIGlmIChhdXRvKiBwYWdlQWdlbnQgPSBtX2luc3RydW1lbnRpbmdBZ2Vu
dHMuaW5zcGVjdG9yUGFnZUFnZW50KCkpCisgICAgICAgIGlmIChhdXRvKiBwYWdlQWdlbnQgPSBt
X2luc3RydW1lbnRpbmdBZ2VudHMuZW5hYmxlZFBhZ2VBZ2VudCgpKQogICAgICAgICAgICAgcmV0
dXJuIHBhZ2VBZ2VudC0+ZnJhbWVJZChsb2FkZXItPmZyYW1lKCkpOwogICAgIH0KICAgICByZXR1
cm4geyB9OwpAQCAtMTAyLDcgKzEwMiw3IEBAIHZvaWQgUGFnZU5ldHdvcmtBZ2VudDo6c2V0UmVz
b3VyY2VDYWNoaW5nRGlzYWJsZWQoYm9vbCBkaXNhYmxlZCkKIAogU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogUGFnZU5ldHdvcmtBZ2VudDo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dChFcnJvclN0cmlu
ZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgZnJhbWVJZCkKIHsKLSAgICBhdXRvKiBwYWdl
QWdlbnQgPSBtX2luc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yUGFnZUFnZW50KCk7CisgICAg
YXV0byogcGFnZUFnZW50ID0gbV9pbnN0cnVtZW50aW5nQWdlbnRzLmVuYWJsZWRQYWdlQWdlbnQo
KTsKICAgICBpZiAoIXBhZ2VBZ2VudCkgewogICAgICAgICBlcnJvclN0cmluZyA9ICJQYWdlIGRv
bWFpbiBtdXN0IGJlIGVuYWJsZWQiX3M7CiAgICAgICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9wYWdlL1BhZ2VSdW50aW1lQWdl
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9wYWdlL1BhZ2VSdW50aW1l
QWdlbnQuY3BwCmluZGV4IDYzMzM2MDUxYmIwMDUwZDZhNTVlYjU1NDNiMDM0OWViOTY0YmJiN2Eu
LmU4YWI1ZjRjODlhZGU0ZmM4NWMwNDJiNDM0MzNiNzI2NTYzYWJkZDIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlUnVudGltZUFnZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZVJ1bnRpbWVBZ2Vu
dC5jcHAKQEAgLTcwLDcgKzcwLDcgQEAgUGFnZVJ1bnRpbWVBZ2VudDo6flBhZ2VSdW50aW1lQWdl
bnQoKSA9IGRlZmF1bHQ7CiAKIHZvaWQgUGFnZVJ1bnRpbWVBZ2VudDo6ZW5hYmxlKEVycm9yU3Ry
aW5nJiBlcnJvclN0cmluZykKIHsKLSAgICBpZiAobV9pbnN0cnVtZW50aW5nQWdlbnRzLnBhZ2VS
dW50aW1lQWdlbnQoKSA9PSB0aGlzKQorICAgIGlmIChtX2luc3RydW1lbnRpbmdBZ2VudHMuZW5h
YmxlZFBhZ2VSdW50aW1lQWdlbnQoKSA9PSB0aGlzKQogICAgICAgICByZXR1cm47CiAKICAgICBJ
bnNwZWN0b3JSdW50aW1lQWdlbnQ6OmVuYWJsZShlcnJvclN0cmluZyk7CkBAIC04MSwxMiArODEs
MTIgQEAgdm9pZCBQYWdlUnVudGltZUFnZW50OjplbmFibGUoRXJyb3JTdHJpbmcmIGVycm9yU3Ry
aW5nKQogICAgIC8vIGNhbiBmb3JjZSBjcmVhdGlvbiBvZiBzY3JpcHQgc3RhdGUgd2hpY2ggY291
bGQgcmVzdWx0IGluIGR1cGxpY2F0ZSBub3RpZmljYXRpb25zLgogICAgIHJlcG9ydEV4ZWN1dGlv
bkNvbnRleHRDcmVhdGlvbigpOwogCi0gICAgbV9pbnN0cnVtZW50aW5nQWdlbnRzLnNldFBhZ2VS
dW50aW1lQWdlbnQodGhpcyk7CisgICAgbV9pbnN0cnVtZW50aW5nQWdlbnRzLnNldEVuYWJsZWRQ
YWdlUnVudGltZUFnZW50KHRoaXMpOwogfQogCiB2b2lkIFBhZ2VSdW50aW1lQWdlbnQ6OmRpc2Fi
bGUoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nKQogewotICAgIG1faW5zdHJ1bWVudGluZ0FnZW50
cy5zZXRQYWdlUnVudGltZUFnZW50KG51bGxwdHIpOworICAgIG1faW5zdHJ1bWVudGluZ0FnZW50
cy5zZXRFbmFibGVkUGFnZVJ1bnRpbWVBZ2VudChudWxscHRyKTsKIAogICAgIEluc3BlY3RvclJ1
bnRpbWVBZ2VudDo6ZGlzYWJsZShlcnJvclN0cmluZyk7CiB9CkBAIC05OSw3ICs5OSw3IEBAIHZv
aWQgUGFnZVJ1bnRpbWVBZ2VudDo6ZnJhbWVOYXZpZ2F0ZWQoRnJhbWUmIGZyYW1lKQogCiB2b2lk
IFBhZ2VSdW50aW1lQWdlbnQ6OmRpZENsZWFyV2luZG93T2JqZWN0SW5Xb3JsZChGcmFtZSYgZnJh
bWUsIERPTVdyYXBwZXJXb3JsZCYgd29ybGQpCiB7Ci0gICAgYXV0byogcGFnZUFnZW50ID0gbV9p
bnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3RvclBhZ2VBZ2VudCgpOworICAgIGF1dG8qIHBhZ2VB
Z2VudCA9IG1faW5zdHJ1bWVudGluZ0FnZW50cy5lbmFibGVkUGFnZUFnZW50KCk7CiAgICAgaWYg
KCFwYWdlQWdlbnQpCiAgICAgICAgIHJldHVybjsKIApAQCAtMTM0LDcgKzEzNCw3IEBAIHZvaWQg
UGFnZVJ1bnRpbWVBZ2VudDo6dW5tdXRlQ29uc29sZSgpCiAKIHZvaWQgUGFnZVJ1bnRpbWVBZ2Vu
dDo6cmVwb3J0RXhlY3V0aW9uQ29udGV4dENyZWF0aW9uKCkKIHsKLSAgICBhdXRvKiBwYWdlQWdl
bnQgPSBtX2luc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yUGFnZUFnZW50KCk7CisgICAgYXV0
byogcGFnZUFnZW50ID0gbV9pbnN0cnVtZW50aW5nQWdlbnRzLmVuYWJsZWRQYWdlQWdlbnQoKTsK
ICAgICBpZiAoIXBhZ2VBZ2VudCkKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvQWdlbnRzL0luc3BlY3RvckJyb3dzZXJBZ2Vu
dC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvQWdlbnRzL0luc3BlY3Rv
ckJyb3dzZXJBZ2VudC5jcHAKaW5kZXggMDQwZjk1MWFhOTY4MGMxNjBmNzJiYmRlY2Q4OTA0NTli
ODVmZWM0OC4uYzFmZmE2Y2Y2MTQ2NjZlNGM4YjVlYzViNDNjYzY0ZjgwNzBlNjU5OSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL0FnZW50cy9JbnNwZWN0b3JC
cm93c2VyQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9B
Z2VudHMvSW5zcGVjdG9yQnJvd3NlckFnZW50LmNwcApAQCAtNTEsNyArNTEsNyBAQCBJbnNwZWN0
b3JCcm93c2VyQWdlbnQ6On5JbnNwZWN0b3JCcm93c2VyQWdlbnQoKSA9IGRlZmF1bHQ7CiAKIGJv
b2wgSW5zcGVjdG9yQnJvd3NlckFnZW50OjplbmFibGVkKCkgY29uc3QKIHsKLSAgICByZXR1cm4g
bV9pbnNwZWN0ZWRQYWdlLmluc3BlY3RvckNvbnRyb2xsZXIoKS5lbmFibGVkSW5zcGVjdG9yQnJv
d3NlckFnZW50KCkgPT0gdGhpczsKKyAgICByZXR1cm4gbV9pbnNwZWN0ZWRQYWdlLmluc3BlY3Rv
ckNvbnRyb2xsZXIoKS5lbmFibGVkQnJvd3NlckFnZW50KCkgPT0gdGhpczsKIH0KIAogdm9pZCBJ
bnNwZWN0b3JCcm93c2VyQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0
b3I6OkZyb250ZW5kUm91dGVyKiwgSW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlciopCkBAIC03
MSw3ICs3MSw3IEBAIHZvaWQgSW5zcGVjdG9yQnJvd3NlckFnZW50OjplbmFibGUoRXJyb3JTdHJp
bmcmIGVycm9yU3RyaW5nKQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbV9pbnNwZWN0
ZWRQYWdlLmluc3BlY3RvckNvbnRyb2xsZXIoKS5zZXRFbmFibGVkSW5zcGVjdG9yQnJvd3NlckFn
ZW50KHRoaXMpOworICAgIG1faW5zcGVjdGVkUGFnZS5pbnNwZWN0b3JDb250cm9sbGVyKCkuc2V0
RW5hYmxlZEJyb3dzZXJBZ2VudCh0aGlzKTsKIAogICAgIGF1dG8qIGluc3BlY3RvciA9IG1faW5z
cGVjdGVkUGFnZS5pbnNwZWN0b3IoKTsKICAgICBBU1NFUlQoaW5zcGVjdG9yKTsKQEAgLTg1LDcg
Kzg1LDcgQEAgdm9pZCBJbnNwZWN0b3JCcm93c2VyQWdlbnQ6OmRpc2FibGUoRXJyb3JTdHJpbmcm
IGVycm9yU3RyaW5nKQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbV9pbnNwZWN0ZWRQ
YWdlLmluc3BlY3RvckNvbnRyb2xsZXIoKS5zZXRFbmFibGVkSW5zcGVjdG9yQnJvd3NlckFnZW50
KG51bGxwdHIpOworICAgIG1faW5zcGVjdGVkUGFnZS5pbnNwZWN0b3JDb250cm9sbGVyKCkuc2V0
RW5hYmxlZEJyb3dzZXJBZ2VudChudWxscHRyKTsKIAogICAgIGlmIChhdXRvKiBpbnNwZWN0b3Ig
PSBtX2luc3BlY3RlZFBhZ2UuaW5zcGVjdG9yKCkpCiAgICAgICAgIG1faW5zcGVjdGVkUGFnZS5p
bnNwZWN0b3JDbGllbnQoKS5icm93c2VyRG9tYWluRGlzYWJsZWQobV9pbnNwZWN0ZWRQYWdlLCAq
aW5zcGVjdG9yKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rv
ci9XZWJJbnNwZWN0b3JQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0
b3IvV2ViSW5zcGVjdG9yUHJveHkuY3BwCmluZGV4IGI0YTI0Y2VlMDU0ODBmZjUzNmZmY2U1NTEz
MTMzZWE4NjY5Zjk1MDcuLjE5ZTA5NDc4NjUzZGYzZGM5YTcyZGYzNDc1NjYzYzlhZTEzMjBjY2Qg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0
b3JQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL1dlYklu
c3BlY3RvclByb3h5LmNwcApAQCAtNjU1LDEzICs2NTUsMTMgQEAgdm9pZCBXZWJJbnNwZWN0b3JQ
cm94eTo6c2V0RGlhZ25vc3RpY0xvZ2dpbmdBdmFpbGFibGUoYm9vbCBhdmFpbGFibGUpCiAKIHZv
aWQgV2ViSW5zcGVjdG9yUHJveHk6OmJyb3dzZXJFeHRlbnNpb25zRW5hYmxlZChIYXNoTWFwPFN0
cmluZywgU3RyaW5nPiYmIGV4dGVuc2lvbklEVG9OYW1lKQogewotICAgIGlmIChhdXRvKiBicm93
c2VyQWdlbnQgPSBtX2luc3BlY3RlZFBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS5lbmFibGVk
SW5zcGVjdG9yQnJvd3NlckFnZW50KCkpCisgICAgaWYgKGF1dG8qIGJyb3dzZXJBZ2VudCA9IG1f
aW5zcGVjdGVkUGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLmVuYWJsZWRCcm93c2VyQWdlbnQo
KSkKICAgICAgICAgYnJvd3NlckFnZW50LT5leHRlbnNpb25zRW5hYmxlZChXVEZNb3ZlKGV4dGVu
c2lvbklEVG9OYW1lKSk7CiB9CiAKIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OmJyb3dzZXJFeHRl
bnNpb25zRGlzYWJsZWQoSGFzaFNldDxTdHJpbmc+JiYgZXh0ZW5zaW9uSURzKQogewotICAgIGlm
IChhdXRvKiBicm93c2VyQWdlbnQgPSBtX2luc3BlY3RlZFBhZ2UtPmluc3BlY3RvckNvbnRyb2xs
ZXIoKS5lbmFibGVkSW5zcGVjdG9yQnJvd3NlckFnZW50KCkpCisgICAgaWYgKGF1dG8qIGJyb3dz
ZXJBZ2VudCA9IG1faW5zcGVjdGVkUGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLmVuYWJsZWRC
cm93c2VyQWdlbnQoKSkKICAgICAgICAgYnJvd3NlckFnZW50LT5leHRlbnNpb25zRGlzYWJsZWQo
V1RGTW92ZShleHRlbnNpb25JRHMpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvSW5zcGVjdG9yL1dlYlBhZ2VJbnNwZWN0b3JDb250cm9sbGVyLmggYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvV2ViUGFnZUluc3BlY3RvckNvbnRyb2xsZXIuaApp
bmRleCA5Y2U1ZWYzNmI2NTJmZDU2YTg0M2MxZDEyYTRjM2MzY2Y2MzkyODJjLi5jMmRmM2NlYjRi
NjlmMzIwNjBkY2JkOTBkMDRkYzZjYjU5MDBkZTBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9JbnNwZWN0b3IvV2ViUGFnZUluc3BlY3RvckNvbnRyb2xsZXIuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvV2ViUGFnZUluc3BlY3RvckNvbnRyb2xs
ZXIuaApAQCAtNzYsOCArNzYsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCB3aWxsRGVzdHJveVByb3Zp
c2lvbmFsUGFnZShjb25zdCBQcm92aXNpb25hbFBhZ2VQcm94eSYpOwogICAgIHZvaWQgZGlkQ29t
bWl0UHJvdmlzaW9uYWxQYWdlKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIG9sZFdlYlBhZ2VJRCwg
V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgbmV3V2ViUGFnZUlEKTsKIAotICAgIEluc3BlY3RvckJy
b3dzZXJBZ2VudCogZW5hYmxlZEluc3BlY3RvckJyb3dzZXJBZ2VudCgpIGNvbnN0IHsgcmV0dXJu
IG1fZW5hYmxlZEluc3BlY3RvckJyb3dzZXJBZ2VudDsgfQotICAgIHZvaWQgc2V0RW5hYmxlZElu
c3BlY3RvckJyb3dzZXJBZ2VudChJbnNwZWN0b3JCcm93c2VyQWdlbnQqIGFnZW50KSB7IG1fZW5h
YmxlZEluc3BlY3RvckJyb3dzZXJBZ2VudCA9IGFnZW50OyB9CisgICAgSW5zcGVjdG9yQnJvd3Nl
ckFnZW50KiBlbmFibGVkQnJvd3NlckFnZW50KCkgY29uc3QgeyByZXR1cm4gbV9lbmFibGVkQnJv
d3NlckFnZW50OyB9CisgICAgdm9pZCBzZXRFbmFibGVkQnJvd3NlckFnZW50KEluc3BlY3RvckJy
b3dzZXJBZ2VudCogYWdlbnQpIHsgbV9lbmFibGVkQnJvd3NlckFnZW50ID0gYWdlbnQ7IH0KIAog
cHJpdmF0ZToKICAgICBXZWJQYWdlQWdlbnRDb250ZXh0IHdlYlBhZ2VBZ2VudENvbnRleHQoKTsK
QEAgLTk0LDcgKzk0LDcgQEAgcHJpdmF0ZToKICAgICBJbnNwZWN0b3I6Okluc3BlY3RvclRhcmdl
dEFnZW50KiBtX3RhcmdldEFnZW50OwogICAgIEhhc2hNYXA8U3RyaW5nLCBzdGQ6OnVuaXF1ZV9w
dHI8SW5zcGVjdG9yVGFyZ2V0UHJveHk+PiBtX3RhcmdldHM7CiAKLSAgICBJbnNwZWN0b3JCcm93
c2VyQWdlbnQqIG1fZW5hYmxlZEluc3BlY3RvckJyb3dzZXJBZ2VudDsKKyAgICBJbnNwZWN0b3JC
cm93c2VyQWdlbnQqIG1fZW5hYmxlZEJyb3dzZXJBZ2VudDsKIAogICAgIGJvb2wgbV9kaWRDcmVh
dGVMYXp5QWdlbnRzIHsgZmFsc2UgfTsKIH07Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>401232</attachid>
            <date>2020-06-05 21:24:45 -0700</date>
            <delta_ts>2020-06-06 05:48:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-212859-20200605222444.patch</filename>
            <type>text/plain</type>
            <size>156356</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDVhZmMwMjhlOTJiMDE2YWU4NGFkNGI2MTlhOGEz
NzhkNjQyMzIzM2YuLmFiNGE4OTgzNjA4NGZiZWZlNTIwYWI1YmY3NDRhNzZmNmQzNDZiODUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDIwLTA2LTA1ICBEZXZp
biBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiB1
bmlmeSB0aGUgbmFtaW5nIHNjaGVtZSBmb3IgYWdlbnRzIHVzZWQgYnkgaW5zdHJ1bWVudGF0aW9u
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTI4NTkK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbnNwZWN0
b3IgYWdlbnRzIGZhbGwgaW50byBvbmUgb2YgdGhyZWUgY2F0ZWdvcmllczoKKyAgICAgICAgIC0g
InBlcnNpc3RlbnQiIHdoZW4gV2ViIEluc3BlY3RvciBpcyBjb25uZWN0ZWQKKyAgICAgICAgIC0g
ImVuYWJsZWQiIHdoZW4gdGhhdCBhZ2VudCBpcyBgZW5hYmxlYGQsIHN1Y2ggYXMgaWYgdGhlIGNv
cnJlc3BvbmRpbmcgdGFiIGlzIHZpc2libGUKKyAgICAgICAgIC0gInRyYWNraW5nIiB3aGVuIHRo
YXQgYWdlbnQgaXMgcGFydCBvZiBhIHRpbWVsaW5lIHJlY29yZGluZy4KKworICAgICAgICBUaGUg
b25seSBleGNlcHRpb24gdG8gdGhpcyBpcyB0aGUgQ29uc29sZSBhZ2VudCwgYXMgdGhhdCBleGlz
dHMgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIFdlYgorICAgICAgICBJbnNwZWN0b3IgaXMgY29ubmVj
dGVkIGFzIGl0IG5lZWRzIHRvIHByZXNlcnZlIG1lc3NhZ2VzIGxvZ2dlZCBiZWZvcmUgV2ViIElu
c3BlY3RvciBjb25uZWN0cy4KKworICAgICAgICBBbHNvIHJlbW92ZSB0aGUgIkluc3BlY3RvciIg
cHJlZml4IGZyb20gZ2V0dGVyL3NldHRlciBtZXRob2RzIGFzIGl0IGFkZHMgY29uZnVzaW9uIGlm
IHRoYXQKKyAgICAgICAgYWdlbnQgYWxzbyBoYXMgc3ViY2xhc3NlcyAoZS5nLiBgSW5zcGVjdG9y
UnVudGltZUFnZW50YCBhbmQgYFBhZ2VSdW50aW1lQWdlbnRgKS4KKworICAgICAgICAqIGluc3Bl
Y3Rvci9KU0dsb2JhbE9iamVjdENvbnNvbGVDbGllbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3Iv
SlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKiBpbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3RvckNvbnNvbGVBZ2VudC5oOgorCiAyMDIwLTA2LTA1ICBZdXN1a2Ug
U3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAgICAgW0pTQ10gUHV0IGRmZ09wTmFt
ZXMgaW4gX19EQVRBLF9fY29uc3Qgc2VjdGlvbiBpbnN0ZWFkIG9mIF9fREFUQSxfX2RhdGEKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwppbmRleCA3MzM2ZTY3MzEzMzBhZWMzMjdiOGRmMmQ4ZTRkYWJmNGU3MjViNWRkLi5hMzEy
YWViNWUxNGM3YmU2NmNhODg1ZWEzNTY1MjBlMTQ1MjRiY2RmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsNTQgQEAKKzIwMjAtMDYtMDUgIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29tPgor
CisgICAgICAgIFdlYiBJbnNwZWN0b3I6IHVuaWZ5IHRoZSBuYW1pbmcgc2NoZW1lIGZvciBhZ2Vu
dHMgdXNlZCBieSBpbnN0cnVtZW50YXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIxMjg1OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEluc3BlY3RvciBhZ2VudHMgZmFsbCBpbnRvIG9uZSBvZiB0aHJl
ZSBjYXRlZ29yaWVzOgorICAgICAgICAgLSAicGVyc2lzdGVudCIgd2hlbiBXZWIgSW5zcGVjdG9y
IGlzIGNvbm5lY3RlZAorICAgICAgICAgLSAiZW5hYmxlZCIgd2hlbiB0aGF0IGFnZW50IGlzIGBl
bmFibGVgZCwgc3VjaCBhcyBpZiB0aGUgY29ycmVzcG9uZGluZyB0YWIgaXMgdmlzaWJsZQorICAg
ICAgICAgLSAidHJhY2tpbmciIHdoZW4gdGhhdCBhZ2VudCBpcyBwYXJ0IG9mIGEgdGltZWxpbmUg
cmVjb3JkaW5nLgorCisgICAgICAgIFRoZSBvbmx5IGV4Y2VwdGlvbiB0byB0aGlzIGlzIHRoZSBD
b25zb2xlIGFnZW50LCBhcyB0aGF0IGV4aXN0cyByZWdhcmRsZXNzIG9mIHdoZXRoZXIgV2ViCisg
ICAgICAgIEluc3BlY3RvciBpcyBjb25uZWN0ZWQgYXMgaXQgbmVlZHMgdG8gcHJlc2VydmUgbWVz
c2FnZXMgbG9nZ2VkIGJlZm9yZSBXZWIgSW5zcGVjdG9yIGNvbm5lY3RzLgorCisgICAgICAgIEFs
c28gcmVtb3ZlIHRoZSAiSW5zcGVjdG9yIiBwcmVmaXggZnJvbSBnZXR0ZXIvc2V0dGVyIG1ldGhv
ZHMgYXMgaXQgYWRkcyBjb25mdXNpb24gaWYgdGhhdAorICAgICAgICBhZ2VudCBhbHNvIGhhcyBz
dWJjbGFzc2VzIChlLmcuIGBJbnNwZWN0b3JSdW50aW1lQWdlbnRgIGFuZCBgUGFnZVJ1bnRpbWVB
Z2VudGApLgorCisgICAgICAgICogaW5zcGVjdG9yL0luc3RydW1lbnRpbmdBZ2VudHMuaDoKKyAg
ICAgICAgKiBpbnNwZWN0b3IvSW5zdHJ1bWVudGluZ0FnZW50cy5jcHA6CisgICAgICAgIFVzZSBt
YWNyb3MgdG8gc2ltcGxpZnkgdGhlIHByb2Nlc3Mgb2YgYWRkaW5nIGFuIGFnZW50LgorCisgICAg
ICAgICogaW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJSG9zdC5jcHA6CisgICAgICAgICogaW5zcGVj
dG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9y
Q29udHJvbGxlci5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRh
dGlvbi5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JBbmltYXRpb25B
Z2VudC5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JBcHBsaWNhdGlv
bkNhY2hlQWdlbnQuY3BwOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ1BV
UHJvZmlsZXJBZ2VudC5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JD
U1NBZ2VudC5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDYW52YXNB
Z2VudC5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2VudC5j
cHA6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50
LmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTVN0b3JhZ2VBZ2Vu
dC5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEYXRhYmFzZUFnZW50
LmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckxheWVyVHJlZUFnZW50
LmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck1lbW9yeUFnZW50LmNw
cDoKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHA6
CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwOgorICAg
ICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5jcHA6CisgICAg
ICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JXb3JrZXJBZ2VudC5jcHA6CisgICAgICAg
ICogaW5zcGVjdG9yL2FnZW50cy9XZWJEZWJ1Z2dlckFnZW50LmNwcDoKKyAgICAgICAgKiBpbnNw
ZWN0b3IvYWdlbnRzL1dlYkhlYXBBZ2VudC5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50
cy9wYWdlL1BhZ2VDb25zb2xlQWdlbnQuY3BwOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMv
cGFnZS9QYWdlRE9NRGVidWdnZXJBZ2VudC5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50
cy9wYWdlL1BhZ2VEZWJ1Z2dlckFnZW50LmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRz
L3BhZ2UvUGFnZUhlYXBBZ2VudC5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9wYWdl
L1BhZ2VOZXR3b3JrQWdlbnQuY3BwOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvcGFnZS9Q
YWdlUnVudGltZUFnZW50LmNwcDoKKyAgICAgICAgU2ltcGxlIG5hbWluZyBjaGFuZ2VzIGVsaWRl
ZCB0byBhdm9pZCBhIGxvbmcgQ2hhbmdlTG9nLgorCiAyMDIwLTA2LTA1ICBQZW5nIExpdSAgPHBl
bmcubGl1NkBhcHBsZS5jb20+CiAKICAgICAgICAgSFRNTE1lZGlhRWxlbWVudDo6bV93YWl0aW5n
VG9FbnRlckZ1bGxzY3JlZW4gaXMgbm90IGluaXRpYWxpemVkIGluIHRoZSBjb25zdHJ1Y3Rvcgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZwppbmRleCA0MjEwMDJjZTA2ZTZlY2NhNmQ4OGViYzk4MWZmZmNkNDYwYTljMTE1Li4xZDBh
OTM3MWNkZjhmZjhjZDBhMWVmOTI1ZGJlOWJlYmQ1MzIxZGM4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsx
LDI2IEBACisyMDIwLTA2LTA1ICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KKwor
ICAgICAgICBXZWIgSW5zcGVjdG9yOiB1bmlmeSB0aGUgbmFtaW5nIHNjaGVtZSBmb3IgYWdlbnRz
IHVzZWQgYnkgaW5zdHJ1bWVudGF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMTI4NTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBJbnNwZWN0b3IgYWdlbnRzIGZhbGwgaW50byBvbmUgb2YgdGhyZWUg
Y2F0ZWdvcmllczoKKyAgICAgICAgIC0gInBlcnNpc3RlbnQiIHdoZW4gV2ViIEluc3BlY3RvciBp
cyBjb25uZWN0ZWQKKyAgICAgICAgIC0gImVuYWJsZWQiIHdoZW4gdGhhdCBhZ2VudCBpcyBgZW5h
YmxlYGQsIHN1Y2ggYXMgaWYgdGhlIGNvcnJlc3BvbmRpbmcgdGFiIGlzIHZpc2libGUKKyAgICAg
ICAgIC0gInRyYWNraW5nIiB3aGVuIHRoYXQgYWdlbnQgaXMgcGFydCBvZiBhIHRpbWVsaW5lIHJl
Y29yZGluZy4KKworICAgICAgICBUaGUgb25seSBleGNlcHRpb24gdG8gdGhpcyBpcyB0aGUgQ29u
c29sZSBhZ2VudCwgYXMgdGhhdCBleGlzdHMgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIFdlYgorICAg
ICAgICBJbnNwZWN0b3IgaXMgY29ubmVjdGVkIGFzIGl0IG5lZWRzIHRvIHByZXNlcnZlIG1lc3Nh
Z2VzIGxvZ2dlZCBiZWZvcmUgV2ViIEluc3BlY3RvciBjb25uZWN0cy4KKworICAgICAgICBBbHNv
IHJlbW92ZSB0aGUgIkluc3BlY3RvciIgcHJlZml4IGZyb20gZ2V0dGVyL3NldHRlciBtZXRob2Rz
IGFzIGl0IGFkZHMgY29uZnVzaW9uIGlmIHRoYXQKKyAgICAgICAgYWdlbnQgYWxzbyBoYXMgc3Vi
Y2xhc3NlcyAoZS5nLiBgSW5zcGVjdG9yUnVudGltZUFnZW50YCBhbmQgYFBhZ2VSdW50aW1lQWdl
bnRgKS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9JbnNwZWN0b3IvQWdlbnRzL0luc3BlY3RvckJy
b3dzZXJBZ2VudC5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0
b3JQcm94eS5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL0luc3BlY3Rvci9XZWJQYWdlSW5zcGVj
dG9yQ29udHJvbGxlci5oOgorICAgICAgICBTaW1wbGUgbmFtaW5nIGNoYW5nZXMgZWxpZGVkIHRv
IGF2b2lkIGEgbG9uZyBDaGFuZ2VMb2cuCisKIDIwMjAtMDYtMDUgIERhdmlkIEtpbHplciAgPGRk
a2lsemVyQGFwcGxlLmNvbT4KIAogICAgICAgICBbSVBDXSBBZG9wdCBlbnVtIGNsYXNzIGZvciBB
dXRvY2FwaXRhbGl6ZVR5cGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvSlNHbG9iYWxPYmplY3RDb25zb2xlQ2xpZW50LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL0pTR2xvYmFsT2JqZWN0Q29uc29sZUNsaWVudC5oCmluZGV4IDRkYTc0NzNi
MzBiYjIzM2MzMTBmYzQ2NmQxYWI2YTMzMmNkZWY2Y2EuLmUwZjE1Yzg1MGZlYWQ2ZDkxNTc5NzU2
OGZkMDUwOGQyOWM1MjkwOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvSlNHbG9iYWxPYmplY3RDb25zb2xlQ2xpZW50LmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9KU0dsb2JhbE9iamVjdENvbnNvbGVDbGllbnQuaApAQCAtNDQsOCAr
NDQsOCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGJvb2wgbG9nVG9TeXN0ZW1Db25zb2xlKCk7CiAg
ICAgc3RhdGljIHZvaWQgc2V0TG9nVG9TeXN0ZW1Db25zb2xlKGJvb2wpOwogCi0gICAgdm9pZCBz
ZXRJbnNwZWN0b3JEZWJ1Z2dlckFnZW50KEluc3BlY3RvckRlYnVnZ2VyQWdlbnQqIGFnZW50KSB7
IG1fZGVidWdnZXJBZ2VudCA9IGFnZW50OyB9Ci0gICAgdm9pZCBzZXRJbnNwZWN0b3JTY3JpcHRQ
cm9maWxlckFnZW50KEluc3BlY3RvclNjcmlwdFByb2ZpbGVyQWdlbnQqIGFnZW50KSB7IG1fc2Ny
aXB0UHJvZmlsZXJBZ2VudCA9IGFnZW50OyB9CisgICAgdm9pZCBzZXREZWJ1Z2dlckFnZW50KElu
c3BlY3RvckRlYnVnZ2VyQWdlbnQqIGFnZW50KSB7IG1fZGVidWdnZXJBZ2VudCA9IGFnZW50OyB9
CisgICAgdm9pZCBzZXRQZXJzaXN0ZW50U2NyaXB0UHJvZmlsZXJBZ2VudChJbnNwZWN0b3JTY3Jp
cHRQcm9maWxlckFnZW50KiBhZ2VudCkgeyBtX3NjcmlwdFByb2ZpbGVyQWdlbnQgPSBhZ2VudDsg
fQogCiBwcml2YXRlOgogICAgIHZvaWQgbWVzc2FnZVdpdGhUeXBlQW5kTGV2ZWwoTWVzc2FnZVR5
cGUsIE1lc3NhZ2VMZXZlbCwgSlNDOjpKU0dsb2JhbE9iamVjdCosIFJlZjxTY3JpcHRBcmd1bWVu
dHM+JiYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9KU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXIuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9KU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXIuY3BwCmlu
ZGV4IDM2Y2JmODNlZDRiMTNlNTNlZjQ0ZTljNjU4YmI5MDI4NGRjMTg3YmUuLmY1ZmI4MDdmMDQx
YzZjNDVlOGVmZWY4NjRkMzVjMmM1MDliMWE0YjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTR2xvYmFsT2JqZWN0SW5zcGVj
dG9yQ29udHJvbGxlci5jcHAKQEAgLTI5Miw3ICsyOTIsNyBAQCBJbnNwZWN0b3JEZWJ1Z2dlckFn
ZW50JiBKU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXI6OmVuc3VyZURlYnVnZ2VyQWdl
bnQoKQogICAgICAgICBhdXRvIGNvbnRleHQgPSBqc0FnZW50Q29udGV4dCgpOwogICAgICAgICBh
dXRvIGRlYnVnZ2VyQWdlbnQgPSBtYWtlVW5pcXVlPEpTR2xvYmFsT2JqZWN0RGVidWdnZXJBZ2Vu
dD4oY29udGV4dCwgbV9jb25zb2xlQWdlbnQpOwogICAgICAgICBtX2RlYnVnZ2VyQWdlbnQgPSBk
ZWJ1Z2dlckFnZW50LmdldCgpOwotICAgICAgICBtX2NvbnNvbGVDbGllbnQtPnNldEluc3BlY3Rv
ckRlYnVnZ2VyQWdlbnQobV9kZWJ1Z2dlckFnZW50KTsKKyAgICAgICAgbV9jb25zb2xlQ2xpZW50
LT5zZXREZWJ1Z2dlckFnZW50KG1fZGVidWdnZXJBZ2VudCk7CiAgICAgICAgIG1fYWdlbnRzLmFw
cGVuZChXVEZNb3ZlKGRlYnVnZ2VyQWdlbnQpKTsKICAgICB9CiAgICAgcmV0dXJuICptX2RlYnVn
Z2VyQWdlbnQ7CkBAIC0zMzEsMTIgKzMzMSwxMiBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0SW5zcGVj
dG9yQ29udHJvbGxlcjo6Y3JlYXRlTGF6eUFnZW50cygpCiAgICAgZW5zdXJlRGVidWdnZXJBZ2Vu
dCgpOwogCiAgICAgYXV0byBzY3JpcHRQcm9maWxlckFnZW50UHRyID0gbWFrZVVuaXF1ZTxJbnNw
ZWN0b3JTY3JpcHRQcm9maWxlckFnZW50Pihjb250ZXh0KTsKLSAgICBtX2NvbnNvbGVDbGllbnQt
PnNldEluc3BlY3RvclNjcmlwdFByb2ZpbGVyQWdlbnQoc2NyaXB0UHJvZmlsZXJBZ2VudFB0ci5n
ZXQoKSk7CisgICAgbV9jb25zb2xlQ2xpZW50LT5zZXRQZXJzaXN0ZW50U2NyaXB0UHJvZmlsZXJB
Z2VudChzY3JpcHRQcm9maWxlckFnZW50UHRyLmdldCgpKTsKICAgICBtX2FnZW50cy5hcHBlbmQo
V1RGTW92ZShzY3JpcHRQcm9maWxlckFnZW50UHRyKSk7CiAKICAgICBhdXRvIGhlYXBBZ2VudCA9
IG1ha2VVbmlxdWU8SW5zcGVjdG9ySGVhcEFnZW50Pihjb250ZXh0KTsKICAgICBpZiAobV9jb25z
b2xlQWdlbnQpCi0gICAgICAgIG1fY29uc29sZUFnZW50LT5zZXRJbnNwZWN0b3JIZWFwQWdlbnQo
aGVhcEFnZW50LmdldCgpKTsKKyAgICAgICAgbV9jb25zb2xlQWdlbnQtPnNldEhlYXBBZ2VudCho
ZWFwQWdlbnQuZ2V0KCkpOwogICAgIG1fYWdlbnRzLmFwcGVuZChXVEZNb3ZlKGhlYXBBZ2VudCkp
OwogCiAgICAgbV9hZ2VudHMuYXBwZW5kKG1ha2VVbmlxdWU8SlNHbG9iYWxPYmplY3RBdWRpdEFn
ZW50Pihjb250ZXh0KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL2FnZW50cy9JbnNwZWN0b3JDb25zb2xlQWdlbnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNvbnNvbGVBZ2VudC5oCmluZGV4IGY4YmEyZjIy
MWJiY2UzZWY5M2Q5NDgzNDUwMDRlNDU4M2U1N2NkNmQuLjc4Y2FmMWFkMDhhZTU3YjFlMDc4NWM5
YWRkNTE2NzUzNmFmYmYyOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvYWdlbnRzL0luc3BlY3RvckNvbnNvbGVBZ2VudC5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNvbnNvbGVBZ2VudC5oCkBAIC02Nyw3
ICs2Nyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGdldExvZ2dpbmdDaGFubmVscyhFcnJvclN0cmlu
ZyYsIFJlZlB0cjxKU09OOjpBcnJheU9mPFByb3RvY29sOjpDb25zb2xlOjpDaGFubmVsPj4mKSBv
dmVycmlkZTsKICAgICB2b2lkIHNldExvZ2dpbmdDaGFubmVsTGV2ZWwoRXJyb3JTdHJpbmcmLCBj
b25zdCBTdHJpbmcmIGNoYW5uZWwsIGNvbnN0IFN0cmluZyYgbGV2ZWwpIG92ZXJyaWRlOwogCi0g
ICAgdm9pZCBzZXRJbnNwZWN0b3JIZWFwQWdlbnQoSW5zcGVjdG9ySGVhcEFnZW50KiBhZ2VudCkg
eyBtX2hlYXBBZ2VudCA9IGFnZW50OyB9CisgICAgdm9pZCBzZXRIZWFwQWdlbnQoSW5zcGVjdG9y
SGVhcEFnZW50KiBhZ2VudCkgeyBtX2hlYXBBZ2VudCA9IGFnZW50OyB9CiAKICAgICBib29sIGVu
YWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2VuYWJsZWQ7IH0KICAgICBib29sIGRldmVsb3BlckV4
dHJhc0VuYWJsZWQoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9Db21tYW5kTGluZUFQSUhvc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvbW1h
bmRMaW5lQVBJSG9zdC5jcHAKaW5kZXggNGYzODg2MDYxZWQwMTc3ZjRjMzgxMjQ4YzFkMjMzNjZm
MjhkNjMzMC4uZGNlMzU5ZTc2OGVmOWExM2E2YzZkZTE2ZDFmOGQzYzhiYmZmN2E5NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJSG9zdC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJSG9zdC5jcHAKQEAgLTc4
LDcgKzc4LDcgQEAgdm9pZCBDb21tYW5kTGluZUFQSUhvc3Q6Omluc3BlY3QoSlNDOjpKU0dsb2Jh
bE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjoKICAgICBpZiAoIW1faW5zdHJ1bWVu
dGluZ0FnZW50cykKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byogaW5zcGVjdG9yQWdlbnQg
PSBtX2luc3RydW1lbnRpbmdBZ2VudHMtPmluc3BlY3RvckFnZW50KCk7CisgICAgYXV0byogaW5z
cGVjdG9yQWdlbnQgPSBtX2luc3RydW1lbnRpbmdBZ2VudHMtPnBlcnNpc3RlbnRJbnNwZWN0b3JB
Z2VudCgpOwogICAgIGlmICghaW5zcGVjdG9yQWdlbnQpCiAgICAgICAgIHJldHVybjsKIApAQCAt
MTY4LDcgKzE2OCw3IEBAIEpTQzo6SlNWYWx1ZSBDb21tYW5kTGluZUFQSUhvc3Q6Omluc3BlY3Rl
ZE9iamVjdChKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvCiBTdHJpbmcgQ29tbWFuZExp
bmVBUElIb3N0OjpkYXRhYmFzZUlkKERhdGFiYXNlJiBkYXRhYmFzZSkKIHsKICAgICBpZiAobV9p
bnN0cnVtZW50aW5nQWdlbnRzKSB7Ci0gICAgICAgIGlmIChhdXRvKiBkYXRhYmFzZUFnZW50ID0g
bV9pbnN0cnVtZW50aW5nQWdlbnRzLT5pbnNwZWN0b3JEYXRhYmFzZUFnZW50KCkpCisgICAgICAg
IGlmIChhdXRvKiBkYXRhYmFzZUFnZW50ID0gbV9pbnN0cnVtZW50aW5nQWdlbnRzLT5lbmFibGVk
RGF0YWJhc2VBZ2VudCgpKQogICAgICAgICAgICAgcmV0dXJuIGRhdGFiYXNlQWdlbnQtPmRhdGFi
YXNlSWQoZGF0YWJhc2UpOwogICAgIH0KICAgICByZXR1cm4geyB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCmluZGV4IGI1YjIyY2IyODYz
ZWJjNmZkZDgyNWU1ZDNmZGVjMzQ1OTg3MDM4MjYuLmE1OTVjMTM0OTQ0NDJjNmE2OWM0ZjI0YjEz
NDdmMDU3Yjc3MDIxMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yQ29udHJvbGxlci5jcHAKQEAgLTE3NSw3ICsxNzUsNyBAQCB2b2lkIEluc3BlY3RvckNvbnRy
b2xsZXI6OmNyZWF0ZUxhenlBZ2VudHMoKQogI2VuZGlmCiAKICAgICBhdXRvIHNjcmlwdFByb2Zp
bGVyQWdlbnRQdHIgPSBtYWtlVW5pcXVlPEluc3BlY3RvclNjcmlwdFByb2ZpbGVyQWdlbnQ+KHBh
Z2VDb250ZXh0KTsKLSAgICBtX2luc3RydW1lbnRpbmdBZ2VudHMtPnNldEluc3BlY3RvclNjcmlw
dFByb2ZpbGVyQWdlbnQoc2NyaXB0UHJvZmlsZXJBZ2VudFB0ci5nZXQoKSk7CisgICAgbV9pbnN0
cnVtZW50aW5nQWdlbnRzLT5zZXRQZXJzaXN0ZW50U2NyaXB0UHJvZmlsZXJBZ2VudChzY3JpcHRQ
cm9maWxlckFnZW50UHRyLmdldCgpKTsKICAgICBtX2FnZW50cy5hcHBlbmQoV1RGTW92ZShzY3Jp
cHRQcm9maWxlckFnZW50UHRyKSk7CiAKICNpZiBFTkFCTEUoUkVTT1VSQ0VfVVNBR0UpCkBAIC00
MjAsNyArNDIwLDcgQEAgSW5zcGVjdG9yQWdlbnQmIEluc3BlY3RvckNvbnRyb2xsZXI6OmVuc3Vy
ZUluc3BlY3RvckFnZW50KCkKICAgICAgICAgYXV0byBwYWdlQ29udGV4dCA9IHBhZ2VBZ2VudENv
bnRleHQoKTsKICAgICAgICAgYXV0byBpbnNwZWN0b3JBZ2VudCA9IG1ha2VVbmlxdWU8SW5zcGVj
dG9yQWdlbnQ+KHBhZ2VDb250ZXh0KTsKICAgICAgICAgbV9pbnNwZWN0b3JBZ2VudCA9IGluc3Bl
Y3RvckFnZW50LmdldCgpOwotICAgICAgICBtX2luc3RydW1lbnRpbmdBZ2VudHMtPnNldEluc3Bl
Y3RvckFnZW50KG1faW5zcGVjdG9yQWdlbnQpOworICAgICAgICBtX2luc3RydW1lbnRpbmdBZ2Vu
dHMtPnNldFBlcnNpc3RlbnRJbnNwZWN0b3JBZ2VudChtX2luc3BlY3RvckFnZW50KTsKICAgICAg
ICAgbV9hZ2VudHMuYXBwZW5kKFdURk1vdmUoaW5zcGVjdG9yQWdlbnQpKTsKICAgICB9CiAgICAg
cmV0dXJuICptX2luc3BlY3RvckFnZW50OwpAQCAtNDI4LDI0ICs0MjgsMjQgQEAgSW5zcGVjdG9y
QWdlbnQmIEluc3BlY3RvckNvbnRyb2xsZXI6OmVuc3VyZUluc3BlY3RvckFnZW50KCkKIAogSW5z
cGVjdG9yRE9NQWdlbnQmIEluc3BlY3RvckNvbnRyb2xsZXI6OmVuc3VyZURPTUFnZW50KCkKIHsK
LSAgICBpZiAoIW1faW5zcGVjdG9yRE9NQWdlbnQpIHsKKyAgICBpZiAoIW1fZG9tQWdlbnQpIHsK
ICAgICAgICAgYXV0byBwYWdlQ29udGV4dCA9IHBhZ2VBZ2VudENvbnRleHQoKTsKICAgICAgICAg
YXV0byBkb21BZ2VudCA9IG1ha2VVbmlxdWU8SW5zcGVjdG9yRE9NQWdlbnQ+KHBhZ2VDb250ZXh0
LCBtX292ZXJsYXkuZ2V0KCkpOwotICAgICAgICBtX2luc3BlY3RvckRPTUFnZW50ID0gZG9tQWdl
bnQuZ2V0KCk7CisgICAgICAgIG1fZG9tQWdlbnQgPSBkb21BZ2VudC5nZXQoKTsKICAgICAgICAg
bV9hZ2VudHMuYXBwZW5kKFdURk1vdmUoZG9tQWdlbnQpKTsKICAgICB9Ci0gICAgcmV0dXJuICpt
X2luc3BlY3RvckRPTUFnZW50OworICAgIHJldHVybiAqbV9kb21BZ2VudDsKIH0KIAogSW5zcGVj
dG9yUGFnZUFnZW50JiBJbnNwZWN0b3JDb250cm9sbGVyOjplbnN1cmVQYWdlQWdlbnQoKQogewot
ICAgIGlmICghbV9pbnNwZWN0b3JQYWdlQWdlbnQpIHsKKyAgICBpZiAoIW1fcGFnZUFnZW50KSB7
CiAgICAgICAgIGF1dG8gcGFnZUNvbnRleHQgPSBwYWdlQWdlbnRDb250ZXh0KCk7CiAgICAgICAg
IGF1dG8gcGFnZUFnZW50ID0gbWFrZVVuaXF1ZTxJbnNwZWN0b3JQYWdlQWdlbnQ+KHBhZ2VDb250
ZXh0LCBtX2luc3BlY3RvckNsaWVudCwgbV9vdmVybGF5LmdldCgpKTsKLSAgICAgICAgbV9pbnNw
ZWN0b3JQYWdlQWdlbnQgPSBwYWdlQWdlbnQuZ2V0KCk7CisgICAgICAgIG1fcGFnZUFnZW50ID0g
cGFnZUFnZW50LmdldCgpOwogICAgICAgICBtX2FnZW50cy5hcHBlbmQoV1RGTW92ZShwYWdlQWdl
bnQpKTsKICAgICB9Ci0gICAgcmV0dXJuICptX2luc3BlY3RvclBhZ2VBZ2VudDsKKyAgICByZXR1
cm4gKm1fcGFnZUFnZW50OwogfQogCiBib29sIEluc3BlY3RvckNvbnRyb2xsZXI6OmRldmVsb3Bl
ckV4dHJhc0VuYWJsZWQoKSBjb25zdApAQCAtNDc4LDcgKzQ3OCw3IEBAIHZvaWQgSW5zcGVjdG9y
Q29udHJvbGxlcjo6ZnJvbnRlbmRJbml0aWFsaXplZCgpCiB7CiAgICAgaWYgKG1fcGF1c2VBZnRl
ckluaXRpYWxpemF0aW9uKSB7CiAgICAgICAgIG1fcGF1c2VBZnRlckluaXRpYWxpemF0aW9uID0g
ZmFsc2U7Ci0gICAgICAgIGlmIChQYWdlRGVidWdnZXJBZ2VudCogZGVidWdnZXJBZ2VudCA9IG1f
aW5zdHJ1bWVudGluZ0FnZW50cy0+cGFnZURlYnVnZ2VyQWdlbnQoKSkgeworICAgICAgICBpZiAo
YXV0byogZGVidWdnZXJBZ2VudCA9IG1faW5zdHJ1bWVudGluZ0FnZW50cy0+ZW5hYmxlZFBhZ2VE
ZWJ1Z2dlckFnZW50KCkpIHsKICAgICAgICAgICAgIEVycm9yU3RyaW5nIGlnbm9yZWQ7CiAgICAg
ICAgICAgICBkZWJ1Z2dlckFnZW50LT5wYXVzZShpZ25vcmVkKTsKICAgICAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmgKaW5kZXggZDJmMTgx
NzJkZjEzOWRkNjhjZjk0YjcxNWU4NDdkYTE4YThhNTg0NS4uYmNhNWVhZDMzZDA0ZTNiMWY0ZDY3
Y2QzMzUyNDIzMzRlOTM4OTJjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yQ29udHJvbGxlci5oCkBAIC0xNDMsOCArMTQzLDggQEAgcHJpdmF0ZToKIAogICAgIC8v
IExhenksIGJ1dCBhbHNvIG9uLWRlbWFuZCBhZ2VudHMuCiAgICAgSW5zcGVjdG9yOjpJbnNwZWN0
b3JBZ2VudCogbV9pbnNwZWN0b3JBZ2VudCB7IG51bGxwdHIgfTsKLSAgICBJbnNwZWN0b3JET01B
Z2VudCogbV9pbnNwZWN0b3JET01BZ2VudCB7IG51bGxwdHIgfTsKLSAgICBJbnNwZWN0b3JQYWdl
QWdlbnQqIG1faW5zcGVjdG9yUGFnZUFnZW50IHsgbnVsbHB0ciB9OworICAgIEluc3BlY3RvckRP
TUFnZW50KiBtX2RvbUFnZW50IHsgbnVsbHB0ciB9OworICAgIEluc3BlY3RvclBhZ2VBZ2VudCog
bV9wYWdlQWdlbnQgeyBudWxscHRyIH07CiAKICAgICBib29sIG1faXNVbmRlclRlc3QgeyBmYWxz
ZSB9OwogICAgIGJvb2wgbV9pc0F1dG9tYXRpY0luc3BlY3Rpb24geyBmYWxzZSB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNw
cAppbmRleCBiMGQ3NjY0YTBhMGI2MDQ5MjQwOWVkNTlhYTMwOTIzNjdmNmRkYTY4Li5mODkzMzQ0
NDNhZTM5OTFiYjVkZmFiYjEyMDVkZjFjOTc2ODY2ODE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcApAQCAtMTIxLDk5
ICsxMjEsOTkgQEAgc3RhdGljIEZyYW1lKiBmcmFtZUZvclNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkKIAogdm9pZCBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OmRpZENsZWFyV2luZG93T2JqZWN0SW5Xb3JsZEltcGwoSW5zdHJ1bWVudGluZ0Fn
ZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgRnJhbWUmIGZyYW1lLCBET01XcmFwcGVyV29ybGQm
IHdvcmxkKQogewotICAgIGlmIChhdXRvKiBwYWdlRGVidWdnZXJBZ2VudCA9IGluc3RydW1lbnRp
bmdBZ2VudHMucGFnZURlYnVnZ2VyQWdlbnQoKSkKKyAgICBpZiAoYXV0byogcGFnZURlYnVnZ2Vy
QWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmVuYWJsZWRQYWdlRGVidWdnZXJBZ2VudCgpKQog
ICAgICAgICBwYWdlRGVidWdnZXJBZ2VudC0+ZGlkQ2xlYXJXaW5kb3dPYmplY3RJbldvcmxkKGZy
YW1lLCB3b3JsZCk7CiAKLSAgICBpZiAoYXV0byogcGFnZVJ1bnRpbWVBZ2VudCA9IGluc3RydW1l
bnRpbmdBZ2VudHMucGFnZVJ1bnRpbWVBZ2VudCgpKQorICAgIGlmIChhdXRvKiBwYWdlUnVudGlt
ZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5lbmFibGVkUGFnZVJ1bnRpbWVBZ2VudCgpKQog
ICAgICAgICBwYWdlUnVudGltZUFnZW50LT5kaWRDbGVhcldpbmRvd09iamVjdEluV29ybGQoZnJh
bWUsIHdvcmxkKTsKIAotICAgIGlmIChhdXRvKiBwYWdlQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdl
bnRzLmluc3BlY3RvclBhZ2VBZ2VudCgpKQorICAgIGlmIChhdXRvKiBwYWdlQWdlbnQgPSBpbnN0
cnVtZW50aW5nQWdlbnRzLmVuYWJsZWRQYWdlQWdlbnQoKSkKICAgICAgICAgcGFnZUFnZW50LT5k
aWRDbGVhcldpbmRvd09iamVjdEluV29ybGQoZnJhbWUsIHdvcmxkKTsKIH0KIAogYm9vbCBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OmlzRGVidWdnZXJQYXVzZWRJbXBsKEluc3RydW1lbnRpbmdB
Z2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMpCiB7Ci0gICAgaWYgKGF1dG8qIHdlYkRlYnVnZ2Vy
QWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLndlYkRlYnVnZ2VyQWdlbnQoKSkKKyAgICBpZiAo
YXV0byogd2ViRGVidWdnZXJBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuZW5hYmxlZFdlYkRl
YnVnZ2VyQWdlbnQoKSkKICAgICAgICAgcmV0dXJuIHdlYkRlYnVnZ2VyQWdlbnQtPmlzUGF1c2Vk
KCk7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCiBpbnQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
OjppZGVudGlmaWVyRm9yTm9kZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGlu
Z0FnZW50cywgTm9kZSYgbm9kZSkKIHsKLSAgICBpZiAoSW5zcGVjdG9yRE9NQWdlbnQqIGRvbUFn
ZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JET01BZ2VudCgpKQorICAgIGlmIChh
dXRvKiBkb21BZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMucGVyc2lzdGVudERPTUFnZW50KCkp
CiAgICAgICAgIHJldHVybiBkb21BZ2VudC0+aWRlbnRpZmllckZvck5vZGUobm9kZSk7CiAgICAg
cmV0dXJuIDA7CiB9CiAKIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjphZGRFdmVudExp
c3RlbmVyc1RvTm9kZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50
cywgTm9kZSYgbm9kZSkKIHsKLSAgICBpZiAoSW5zcGVjdG9yRE9NQWdlbnQqIGRvbUFnZW50ID0g
aW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JET01BZ2VudCgpKQorICAgIGlmIChhdXRvKiBk
b21BZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMucGVyc2lzdGVudERPTUFnZW50KCkpCiAgICAg
ICAgIGRvbUFnZW50LT5hZGRFdmVudExpc3RlbmVyc1RvTm9kZShub2RlKTsKIH0KIAogdm9pZCBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxJbnNlcnRET01Ob2RlSW1wbChJbnN0cnVtZW50
aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBOb2RlJiBwYXJlbnQpCiB7Ci0gICAgaWYg
KGF1dG8qIHBhZ2VET01EZWJ1Z2dlckFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5wYWdlRE9N
RGVidWdnZXJBZ2VudCgpKQorICAgIGlmIChhdXRvKiBwYWdlRE9NRGVidWdnZXJBZ2VudCA9IGlu
c3RydW1lbnRpbmdBZ2VudHMuZW5hYmxlZFBhZ2VET01EZWJ1Z2dlckFnZW50KCkpCiAgICAgICAg
IHBhZ2VET01EZWJ1Z2dlckFnZW50LT53aWxsSW5zZXJ0RE9NTm9kZShwYXJlbnQpOwogfQogCiB2
b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkSW5zZXJ0RE9NTm9kZUltcGwoSW5zdHJ1
bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgTm9kZSYgbm9kZSkKIHsKLSAgICBp
ZiAoSW5zcGVjdG9yRE9NQWdlbnQqIGRvbUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5pbnNw
ZWN0b3JET01BZ2VudCgpKQorICAgIGlmIChhdXRvKiBkb21BZ2VudCA9IGluc3RydW1lbnRpbmdB
Z2VudHMucGVyc2lzdGVudERPTUFnZW50KCkpCiAgICAgICAgIGRvbUFnZW50LT5kaWRJbnNlcnRE
T01Ob2RlKG5vZGUpOwotICAgIGlmIChhdXRvKiBwYWdlRE9NRGVidWdnZXJBZ2VudCA9IGluc3Ry
dW1lbnRpbmdBZ2VudHMucGFnZURPTURlYnVnZ2VyQWdlbnQoKSkKKyAgICBpZiAoYXV0byogcGFn
ZURPTURlYnVnZ2VyQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmVuYWJsZWRQYWdlRE9NRGVi
dWdnZXJBZ2VudCgpKQogICAgICAgICBwYWdlRE9NRGVidWdnZXJBZ2VudC0+ZGlkSW5zZXJ0RE9N
Tm9kZShub2RlKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxSZW1v
dmVET01Ob2RlSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBO
b2RlJiBub2RlKQogewotICAgIGlmIChhdXRvKiBwYWdlRE9NRGVidWdnZXJBZ2VudCA9IGluc3Ry
dW1lbnRpbmdBZ2VudHMucGFnZURPTURlYnVnZ2VyQWdlbnQoKSkKKyAgICBpZiAoYXV0byogcGFn
ZURPTURlYnVnZ2VyQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmVuYWJsZWRQYWdlRE9NRGVi
dWdnZXJBZ2VudCgpKQogICAgICAgICBwYWdlRE9NRGVidWdnZXJBZ2VudC0+d2lsbFJlbW92ZURP
TU5vZGUobm9kZSk7CiB9CiAKIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZW1v
dmVET01Ob2RlSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBO
b2RlJiBub2RlKQogewotICAgIGlmIChhdXRvKiBwYWdlRE9NRGVidWdnZXJBZ2VudCA9IGluc3Ry
dW1lbnRpbmdBZ2VudHMucGFnZURPTURlYnVnZ2VyQWdlbnQoKSkKKyAgICBpZiAoYXV0byogcGFn
ZURPTURlYnVnZ2VyQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmVuYWJsZWRQYWdlRE9NRGVi
dWdnZXJBZ2VudCgpKQogICAgICAgICBwYWdlRE9NRGVidWdnZXJBZ2VudC0+ZGlkUmVtb3ZlRE9N
Tm9kZShub2RlKTsKLSAgICBpZiAoSW5zcGVjdG9yRE9NQWdlbnQqIGRvbUFnZW50ID0gaW5zdHJ1
bWVudGluZ0FnZW50cy5pbnNwZWN0b3JET01BZ2VudCgpKQorICAgIGlmIChhdXRvKiBkb21BZ2Vu
dCA9IGluc3RydW1lbnRpbmdBZ2VudHMucGVyc2lzdGVudERPTUFnZW50KCkpCiAgICAgICAgIGRv
bUFnZW50LT5kaWRSZW1vdmVET01Ob2RlKG5vZGUpOwogfQogCiB2b2lkIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6d2lsbE1vZGlmeURPTUF0dHJJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGlu
c3RydW1lbnRpbmdBZ2VudHMsIEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IEF0b21TdHJpbmcmIG9s
ZFZhbHVlLCBjb25zdCBBdG9tU3RyaW5nJiBuZXdWYWx1ZSkKIHsKLSAgICBpZiAoYXV0byogcGFn
ZURPTURlYnVnZ2VyQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLnBhZ2VET01EZWJ1Z2dlckFn
ZW50KCkpCisgICAgaWYgKGF1dG8qIHBhZ2VET01EZWJ1Z2dlckFnZW50ID0gaW5zdHJ1bWVudGlu
Z0FnZW50cy5lbmFibGVkUGFnZURPTURlYnVnZ2VyQWdlbnQoKSkKICAgICAgICAgcGFnZURPTURl
YnVnZ2VyQWdlbnQtPndpbGxNb2RpZnlET01BdHRyKGVsZW1lbnQpOwotICAgIGlmIChJbnNwZWN0
b3JET01BZ2VudCogZG9tQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3RvckRPTUFn
ZW50KCkpCisgICAgaWYgKGF1dG8qIGRvbUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5wZXJz
aXN0ZW50RE9NQWdlbnQoKSkKICAgICAgICAgZG9tQWdlbnQtPndpbGxNb2RpZnlET01BdHRyKGVs
ZW1lbnQsIG9sZFZhbHVlLCBuZXdWYWx1ZSk7CiB9CiAKIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uOjpkaWRNb2RpZnlET01BdHRySW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVt
ZW50aW5nQWdlbnRzLCBFbGVtZW50JiBlbGVtZW50LCBjb25zdCBBdG9tU3RyaW5nJiBuYW1lLCBj
b25zdCBBdG9tU3RyaW5nJiB2YWx1ZSkKIHsKLSAgICBpZiAoSW5zcGVjdG9yRE9NQWdlbnQqIGRv
bUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JET01BZ2VudCgpKQorICAgIGlm
IChhdXRvKiBkb21BZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMucGVyc2lzdGVudERPTUFnZW50
KCkpCiAgICAgICAgIGRvbUFnZW50LT5kaWRNb2RpZnlET01BdHRyKGVsZW1lbnQsIG5hbWUsIHZh
bHVlKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlbW92ZURPTUF0
dHJJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIEVsZW1lbnQm
IGVsZW1lbnQsIGNvbnN0IEF0b21TdHJpbmcmIG5hbWUpCiB7Ci0gICAgaWYgKEluc3BlY3RvckRP
TUFnZW50KiBkb21BZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yRE9NQWdlbnQo
KSkKKyAgICBpZiAoYXV0byogZG9tQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLnBlcnNpc3Rl
bnRET01BZ2VudCgpKQogICAgICAgICBkb21BZ2VudC0+ZGlkUmVtb3ZlRE9NQXR0cihlbGVtZW50
LCBuYW1lKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxJbnZhbGlk
YXRlU3R5bGVBdHRySW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRz
LCBFbGVtZW50JiBlbGVtZW50KQogewotICAgIGlmIChhdXRvKiBwYWdlRE9NRGVidWdnZXJBZ2Vu
dCA9IGluc3RydW1lbnRpbmdBZ2VudHMucGFnZURPTURlYnVnZ2VyQWdlbnQoKSkKKyAgICBpZiAo
YXV0byogcGFnZURPTURlYnVnZ2VyQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmVuYWJsZWRQ
YWdlRE9NRGVidWdnZXJBZ2VudCgpKQogICAgICAgICBwYWdlRE9NRGVidWdnZXJBZ2VudC0+d2ls
bEludmFsaWRhdGVTdHlsZUF0dHIoZWxlbWVudCk7CiB9CiAKIHZvaWQgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjpkaWRJbnZhbGlkYXRlU3R5bGVBdHRySW1wbChJbnN0cnVtZW50aW5nQWdlbnRz
JiBpbnN0cnVtZW50aW5nQWdlbnRzLCBFbGVtZW50JiBlbGVtZW50KQogewotICAgIGlmIChhdXRv
KiBkb21BZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yRE9NQWdlbnQoKSkKKyAg
ICBpZiAoYXV0byogZG9tQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLnBlcnNpc3RlbnRET01B
Z2VudCgpKQogICAgICAgICBkb21BZ2VudC0+ZGlkSW52YWxpZGF0ZVN0eWxlQXR0cihlbGVtZW50
KTsKIH0KIAogdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRvY3VtZW50RGV0YWNoZWRJ
bXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIERvY3VtZW50JiBk
b2N1bWVudCkKIHsKLSAgICBpZiAoSW5zcGVjdG9yQ1NTQWdlbnQqIGNzc0FnZW50ID0gaW5zdHJ1
bWVudGluZ0FnZW50cy5pbnNwZWN0b3JDU1NBZ2VudCgpKQorICAgIGlmIChhdXRvKiBjc3NBZ2Vu
dCA9IGluc3RydW1lbnRpbmdBZ2VudHMuZW5hYmxlZENTU0FnZW50KCkpCiAgICAgICAgIGNzc0Fn
ZW50LT5kb2N1bWVudERldGFjaGVkKGRvY3VtZW50KTsKIH0KIApAQCAtMjIyLDM2MCArMjIyLDM2
MCBAQCB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZnJhbWVXaW5kb3dEaXNjYXJkZWRJ
bXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGlucwogICAgIGlmIChMSUtFTFkoIWluc3RydW1lbnRp
bmdBZ2VudHMuaW5zcGVjdG9yRW52aXJvbm1lbnQoKS5kZXZlbG9wZXJFeHRyYXNFbmFibGVkKCkp
KQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoV2ViQ29uc29sZUFnZW50KiBjb25zb2xlQWdl
bnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLndlYkNvbnNvbGVBZ2VudCgpKQorICAgIGlmIChhdXRv
KiBjb25zb2xlQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLndlYkNvbnNvbGVBZ2VudCgpKQog
ICAgICAgICBjb25zb2xlQWdlbnQtPmZyYW1lV2luZG93RGlzY2FyZGVkKHdpbmRvdyk7CiB9CiAK
IHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjptZWRpYVF1ZXJ5UmVzdWx0Q2hhbmdlZElt
cGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cykKIHsKLSAgICBpZiAo
SW5zcGVjdG9yQ1NTQWdlbnQqIGNzc0FnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0
b3JDU1NBZ2VudCgpKQorICAgIGlmIChhdXRvKiBjc3NBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2Vu
dHMuZW5hYmxlZENTU0FnZW50KCkpCiAgICAgICAgIGNzc0FnZW50LT5tZWRpYVF1ZXJ5UmVzdWx0
Q2hhbmdlZCgpOwogfQogCiB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6YWN0aXZlU3R5
bGVTaGVldHNVcGRhdGVkSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdl
bnRzLCBEb2N1bWVudCYgZG9jdW1lbnQpCiB7Ci0gICAgaWYgKEluc3BlY3RvckNTU0FnZW50KiBj
c3NBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yQ1NTQWdlbnQoKSkKKyAgICBp
ZiAoYXV0byogY3NzQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmVuYWJsZWRDU1NBZ2VudCgp
KQogICAgICAgICBjc3NBZ2VudC0+YWN0aXZlU3R5bGVTaGVldHNVcGRhdGVkKGRvY3VtZW50KTsK
IH0KIAogdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFB1c2hTaGFkb3dSb290SW1w
bChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBFbGVtZW50JiBob3N0
LCBTaGFkb3dSb290JiByb290KQogewotICAgIGlmIChJbnNwZWN0b3JET01BZ2VudCogZG9tQWdl
bnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3RvckRPTUFnZW50KCkpCisgICAgaWYgKGF1
dG8qIGRvbUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5wZXJzaXN0ZW50RE9NQWdlbnQoKSkK
ICAgICAgICAgZG9tQWdlbnQtPmRpZFB1c2hTaGFkb3dSb290KGhvc3QsIHJvb3QpOwogfQogCiB2
b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFBvcFNoYWRvd1Jvb3RJbXBsKEluc3Ry
dW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIEVsZW1lbnQmIGhvc3QsIFNoYWRv
d1Jvb3QmIHJvb3QpCiB7Ci0gICAgaWYgKEluc3BlY3RvckRPTUFnZW50KiBkb21BZ2VudCA9IGlu
c3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yRE9NQWdlbnQoKSkKKyAgICBpZiAoYXV0byogZG9t
QWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLnBlcnNpc3RlbnRET01BZ2VudCgpKQogICAgICAg
ICBkb21BZ2VudC0+d2lsbFBvcFNoYWRvd1Jvb3QoaG9zdCwgcm9vdCk7CiB9CiAKIHZvaWQgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRDaGFuZ2VDdXN0b21FbGVtZW50U3RhdGVJbXBsKElu
c3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIEVsZW1lbnQmIGVsZW1lbnQp
CiB7Ci0gICAgaWYgKEluc3BlY3RvckRPTUFnZW50KiBkb21BZ2VudCA9IGluc3RydW1lbnRpbmdB
Z2VudHMuaW5zcGVjdG9yRE9NQWdlbnQoKSkKKyAgICBpZiAoYXV0byogZG9tQWdlbnQgPSBpbnN0
cnVtZW50aW5nQWdlbnRzLnBlcnNpc3RlbnRET01BZ2VudCgpKQogICAgICAgICBkb21BZ2VudC0+
ZGlkQ2hhbmdlQ3VzdG9tRWxlbWVudFN0YXRlKGVsZW1lbnQpOwogfQogCiB2b2lkIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6cHNldWRvRWxlbWVudENyZWF0ZWRJbXBsKEluc3RydW1lbnRpbmdB
Z2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIFBzZXVkb0VsZW1lbnQmIHBzZXVkb0VsZW1lbnQp
CiB7Ci0gICAgaWYgKEluc3BlY3RvckRPTUFnZW50KiBkb21BZ2VudCA9IGluc3RydW1lbnRpbmdB
Z2VudHMuaW5zcGVjdG9yRE9NQWdlbnQoKSkKKyAgICBpZiAoYXV0byogZG9tQWdlbnQgPSBpbnN0
cnVtZW50aW5nQWdlbnRzLnBlcnNpc3RlbnRET01BZ2VudCgpKQogICAgICAgICBkb21BZ2VudC0+
cHNldWRvRWxlbWVudENyZWF0ZWQocHNldWRvRWxlbWVudCk7CiB9CiAKIHZvaWQgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjpwc2V1ZG9FbGVtZW50RGVzdHJveWVkSW1wbChJbnN0cnVtZW50aW5n
QWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBQc2V1ZG9FbGVtZW50JiBwc2V1ZG9FbGVtZW50
KQogewotICAgIGlmIChJbnNwZWN0b3JET01BZ2VudCogZG9tQWdlbnQgPSBpbnN0cnVtZW50aW5n
QWdlbnRzLmluc3BlY3RvckRPTUFnZW50KCkpCisgICAgaWYgKGF1dG8qIGRvbUFnZW50ID0gaW5z
dHJ1bWVudGluZ0FnZW50cy5wZXJzaXN0ZW50RE9NQWdlbnQoKSkKICAgICAgICAgZG9tQWdlbnQt
PnBzZXVkb0VsZW1lbnREZXN0cm95ZWQocHNldWRvRWxlbWVudCk7Ci0gICAgaWYgKEluc3BlY3Rv
ckxheWVyVHJlZUFnZW50KiBsYXllclRyZWVBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuaW5z
cGVjdG9yTGF5ZXJUcmVlQWdlbnQoKSkKKyAgICBpZiAoYXV0byogbGF5ZXJUcmVlQWdlbnQgPSBp
bnN0cnVtZW50aW5nQWdlbnRzLmVuYWJsZWRMYXllclRyZWVBZ2VudCgpKQogICAgICAgICBsYXll
clRyZWVBZ2VudC0+cHNldWRvRWxlbWVudERlc3Ryb3llZChwc2V1ZG9FbGVtZW50KTsKIH0KIAog
dm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246Om1vdXNlRGlkTW92ZU92ZXJFbGVtZW50SW1w
bChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBjb25zdCBIaXRUZXN0
UmVzdWx0JiByZXN1bHQsIHVuc2lnbmVkIG1vZGlmaWVyRmxhZ3MpCiB7Ci0gICAgaWYgKEluc3Bl
Y3RvckRPTUFnZW50KiBkb21BZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yRE9N
QWdlbnQoKSkKKyAgICBpZiAoYXV0byogZG9tQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLnBl
cnNpc3RlbnRET01BZ2VudCgpKQogICAgICAgICBkb21BZ2VudC0+bW91c2VEaWRNb3ZlT3ZlckVs
ZW1lbnQocmVzdWx0LCBtb2RpZmllckZsYWdzKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OmRpZFNjcm9sbEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGlu
Z0FnZW50cykKIHsKLSAgICBpZiAoSW5zcGVjdG9yUGFnZUFnZW50KiBwYWdlQWdlbnQgPSBpbnN0
cnVtZW50aW5nQWdlbnRzLmluc3BlY3RvclBhZ2VBZ2VudCgpKQorICAgIGlmIChhdXRvKiBwYWdl
QWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmVuYWJsZWRQYWdlQWdlbnQoKSkKICAgICAgICAg
cGFnZUFnZW50LT5kaWRTY3JvbGwoKTsKIH0KIAogYm9vbCBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OmhhbmRsZVRvdWNoRXZlbnRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRp
bmdBZ2VudHMsIE5vZGUmIG5vZGUpCiB7Ci0gICAgaWYgKEluc3BlY3RvckRPTUFnZW50KiBkb21B
Z2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yRE9NQWdlbnQoKSkKKyAgICBpZiAo
YXV0byogZG9tQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLnBlcnNpc3RlbnRET01BZ2VudCgp
KQogICAgICAgICByZXR1cm4gZG9tQWdlbnQtPmhhbmRsZVRvdWNoRXZlbnQobm9kZSk7CiAgICAg
cmV0dXJuIGZhbHNlOwogfQogCiBib29sIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aGFuZGxl
TW91c2VQcmVzc0ltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cykK
IHsKLSAgICBpZiAoSW5zcGVjdG9yRE9NQWdlbnQqIGRvbUFnZW50ID0gaW5zdHJ1bWVudGluZ0Fn
ZW50cy5pbnNwZWN0b3JET01BZ2VudCgpKQorICAgIGlmIChhdXRvKiBkb21BZ2VudCA9IGluc3Ry
dW1lbnRpbmdBZ2VudHMucGVyc2lzdGVudERPTUFnZW50KCkpCiAgICAgICAgIHJldHVybiBkb21B
Z2VudC0+aGFuZGxlTW91c2VQcmVzcygpOwogICAgIHJldHVybiBmYWxzZTsKIH0KIAogYm9vbCBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmZvcmNlUHNldWRvU3RhdGVJbXBsKEluc3RydW1lbnRp
bmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQsIENT
U1NlbGVjdG9yOjpQc2V1ZG9DbGFzc1R5cGUgcHNldWRvU3RhdGUpCiB7Ci0gICAgaWYgKEluc3Bl
Y3RvckNTU0FnZW50KiBjc3NBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yQ1NT
QWdlbnQoKSkKKyAgICBpZiAoYXV0byogY3NzQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmVu
YWJsZWRDU1NBZ2VudCgpKQogICAgICAgICByZXR1cm4gY3NzQWdlbnQtPmZvcmNlUHNldWRvU3Rh
dGUoZWxlbWVudCwgcHNldWRvU3RhdGUpOwogICAgIHJldHVybiBmYWxzZTsKIH0KIAogdm9pZCBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmNoYXJhY3RlckRhdGFNb2RpZmllZEltcGwoSW5zdHJ1
bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgQ2hhcmFjdGVyRGF0YSYgY2hhcmFj
dGVyRGF0YSkKIHsKLSAgICBpZiAoSW5zcGVjdG9yRE9NQWdlbnQqIGRvbUFnZW50ID0gaW5zdHJ1
bWVudGluZ0FnZW50cy5pbnNwZWN0b3JET01BZ2VudCgpKQorICAgIGlmIChhdXRvKiBkb21BZ2Vu
dCA9IGluc3RydW1lbnRpbmdBZ2VudHMucGVyc2lzdGVudERPTUFnZW50KCkpCiAgICAgICAgIGRv
bUFnZW50LT5jaGFyYWN0ZXJEYXRhTW9kaWZpZWQoY2hhcmFjdGVyRGF0YSk7CiB9CiAKIHZvaWQg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsU2VuZFhNTEh0dHBSZXF1ZXN0SW1wbChJbnN0
cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBjb25zdCBTdHJpbmcmIHVybCkK
IHsKLSAgICBpZiAoSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudCogZG9tRGVidWdnZXJBZ2VudCA9
IGluc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudCgpKQorICAgIGlm
IChhdXRvKiBkb21EZWJ1Z2dlckFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5lbmFibGVkRE9N
RGVidWdnZXJBZ2VudCgpKQogICAgICAgICBkb21EZWJ1Z2dlckFnZW50LT53aWxsU2VuZFhNTEh0
dHBSZXF1ZXN0KHVybCk7CiB9CiAKIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxs
RmV0Y2hJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIGNvbnN0
IFN0cmluZyYgdXJsKQogewotICAgIGlmIChJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50KiBkb21E
ZWJ1Z2dlckFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JET01EZWJ1Z2dlckFn
ZW50KCkpCisgICAgaWYgKGF1dG8qIGRvbURlYnVnZ2VyQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdl
bnRzLmVuYWJsZWRET01EZWJ1Z2dlckFnZW50KCkpCiAgICAgICAgIGRvbURlYnVnZ2VyQWdlbnQt
PndpbGxGZXRjaCh1cmwpOwogfQogCiB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlk
SW5zdGFsbFRpbWVySW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRz
LCBpbnQgdGltZXJJZCwgU2Vjb25kcyB0aW1lb3V0LCBib29sIHNpbmdsZVNob3QsIFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpCiB7Ci0gICAgaWYgKGF1dG8qIHdlYkRlYnVnZ2VyQWdl
bnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLndlYkRlYnVnZ2VyQWdlbnQoKSkKKyAgICBpZiAoYXV0
byogd2ViRGVidWdnZXJBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuZW5hYmxlZFdlYkRlYnVn
Z2VyQWdlbnQoKSkKICAgICAgICAgd2ViRGVidWdnZXJBZ2VudC0+ZGlkU2NoZWR1bGVBc3luY0Nh
bGwoY29udGV4dC5leGVjU3RhdGUoKSwgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6QXN5bmNDYWxs
VHlwZTo6RE9NVGltZXIsIHRpbWVySWQsIHNpbmdsZVNob3QpOwogCi0gICAgaWYgKEluc3BlY3Rv
clRpbWVsaW5lQWdlbnQqIHRpbWVsaW5lQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLnRyYWNr
aW5nSW5zcGVjdG9yVGltZWxpbmVBZ2VudCgpKQorICAgIGlmIChhdXRvKiB0aW1lbGluZUFnZW50
ID0gaW5zdHJ1bWVudGluZ0FnZW50cy50cmFja2luZ1RpbWVsaW5lQWdlbnQoKSkKICAgICAgICAg
dGltZWxpbmVBZ2VudC0+ZGlkSW5zdGFsbFRpbWVyKHRpbWVySWQsIHRpbWVvdXQsIHNpbmdsZVNo
b3QsIGZyYW1lRm9yU2NyaXB0RXhlY3V0aW9uQ29udGV4dChjb250ZXh0KSk7CiB9CiAKIHZvaWQg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZW1vdmVUaW1lckltcGwoSW5zdHJ1bWVudGlu
Z0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgaW50IHRpbWVySWQsIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQmIGNvbnRleHQpCiB7Ci0gICAgaWYgKGF1dG8qIHdlYkRlYnVnZ2VyQWdlbnQgPSBp
bnN0cnVtZW50aW5nQWdlbnRzLndlYkRlYnVnZ2VyQWdlbnQoKSkKKyAgICBpZiAoYXV0byogd2Vi
RGVidWdnZXJBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuZW5hYmxlZFdlYkRlYnVnZ2VyQWdl
bnQoKSkKICAgICAgICAgd2ViRGVidWdnZXJBZ2VudC0+ZGlkQ2FuY2VsQXN5bmNDYWxsKEluc3Bl
Y3RvckRlYnVnZ2VyQWdlbnQ6OkFzeW5jQ2FsbFR5cGU6OkRPTVRpbWVyLCB0aW1lcklkKTsKLSAg
ICBpZiAoSW5zcGVjdG9yVGltZWxpbmVBZ2VudCogdGltZWxpbmVBZ2VudCA9IGluc3RydW1lbnRp
bmdBZ2VudHMudHJhY2tpbmdJbnNwZWN0b3JUaW1lbGluZUFnZW50KCkpCisgICAgaWYgKGF1dG8q
IHRpbWVsaW5lQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLnRyYWNraW5nVGltZWxpbmVBZ2Vu
dCgpKQogICAgICAgICB0aW1lbGluZUFnZW50LT5kaWRSZW1vdmVUaW1lcih0aW1lcklkLCBmcmFt
ZUZvclNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoY29udGV4dCkpOwogfQogCiB2b2lkIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6ZGlkQWRkRXZlbnRMaXN0ZW5lckltcGwoSW5zdHJ1bWVudGluZ0Fn
ZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgRXZlbnRUYXJnZXQmIHRhcmdldCwgY29uc3QgQXRv
bVN0cmluZyYgZXZlbnRUeXBlLCBFdmVudExpc3RlbmVyJiBsaXN0ZW5lciwgYm9vbCBjYXB0dXJl
KQogewotICAgIGlmIChhdXRvKiB3ZWJEZWJ1Z2dlckFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50
cy53ZWJEZWJ1Z2dlckFnZW50KCkpCisgICAgaWYgKGF1dG8qIHdlYkRlYnVnZ2VyQWdlbnQgPSBp
bnN0cnVtZW50aW5nQWdlbnRzLmVuYWJsZWRXZWJEZWJ1Z2dlckFnZW50KCkpCiAgICAgICAgIHdl
YkRlYnVnZ2VyQWdlbnQtPmRpZEFkZEV2ZW50TGlzdGVuZXIodGFyZ2V0LCBldmVudFR5cGUsIGxp
c3RlbmVyLCBjYXB0dXJlKTsKLSAgICBpZiAoSW5zcGVjdG9yRE9NQWdlbnQqIGRvbUFnZW50ID0g
aW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JET01BZ2VudCgpKQorICAgIGlmIChhdXRvKiBk
b21BZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMucGVyc2lzdGVudERPTUFnZW50KCkpCiAgICAg
ICAgIGRvbUFnZW50LT5kaWRBZGRFdmVudExpc3RlbmVyKHRhcmdldCk7CiB9CiAKIHZvaWQgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsUmVtb3ZlRXZlbnRMaXN0ZW5lckltcGwoSW5zdHJ1
bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgRXZlbnRUYXJnZXQmIHRhcmdldCwg
Y29uc3QgQXRvbVN0cmluZyYgZXZlbnRUeXBlLCBFdmVudExpc3RlbmVyJiBsaXN0ZW5lciwgYm9v
bCBjYXB0dXJlKQogewotICAgIGlmIChhdXRvKiB3ZWJEZWJ1Z2dlckFnZW50ID0gaW5zdHJ1bWVu
dGluZ0FnZW50cy53ZWJEZWJ1Z2dlckFnZW50KCkpCisgICAgaWYgKGF1dG8qIHdlYkRlYnVnZ2Vy
QWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmVuYWJsZWRXZWJEZWJ1Z2dlckFnZW50KCkpCiAg
ICAgICAgIHdlYkRlYnVnZ2VyQWdlbnQtPndpbGxSZW1vdmVFdmVudExpc3RlbmVyKHRhcmdldCwg
ZXZlbnRUeXBlLCBsaXN0ZW5lciwgY2FwdHVyZSk7Ci0gICAgaWYgKEluc3BlY3RvckRPTUFnZW50
KiBkb21BZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yRE9NQWdlbnQoKSkKKyAg
ICBpZiAoYXV0byogZG9tQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLnBlcnNpc3RlbnRET01B
Z2VudCgpKQogICAgICAgICBkb21BZ2VudC0+d2lsbFJlbW92ZUV2ZW50TGlzdGVuZXIodGFyZ2V0
LCBldmVudFR5cGUsIGxpc3RlbmVyLCBjYXB0dXJlKTsKIH0KIAogYm9vbCBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OmlzRXZlbnRMaXN0ZW5lckRpc2FibGVkSW1wbChJbnN0cnVtZW50aW5nQWdl
bnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBFdmVudFRhcmdldCYgdGFyZ2V0LCBjb25zdCBBdG9t
U3RyaW5nJiBldmVudFR5cGUsIEV2ZW50TGlzdGVuZXImIGxpc3RlbmVyLCBib29sIGNhcHR1cmUp
CiB7Ci0gICAgaWYgKEluc3BlY3RvckRPTUFnZW50KiBkb21BZ2VudCA9IGluc3RydW1lbnRpbmdB
Z2VudHMuaW5zcGVjdG9yRE9NQWdlbnQoKSkKKyAgICBpZiAoYXV0byogZG9tQWdlbnQgPSBpbnN0
cnVtZW50aW5nQWdlbnRzLnBlcnNpc3RlbnRET01BZ2VudCgpKQogICAgICAgICByZXR1cm4gZG9t
QWdlbnQtPmlzRXZlbnRMaXN0ZW5lckRpc2FibGVkKHRhcmdldCwgZXZlbnRUeXBlLCBsaXN0ZW5l
ciwgY2FwdHVyZSk7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCiBpbnQgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjp3aWxsUG9zdE1lc3NhZ2VJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3Ry
dW1lbnRpbmdBZ2VudHMpCiB7Ci0gICAgaWYgKGF1dG8qIHdlYkRlYnVnZ2VyQWdlbnQgPSBpbnN0
cnVtZW50aW5nQWdlbnRzLndlYkRlYnVnZ2VyQWdlbnQoKSkKKyAgICBpZiAoYXV0byogd2ViRGVi
dWdnZXJBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuZW5hYmxlZFdlYkRlYnVnZ2VyQWdlbnQo
KSkKICAgICAgICAgcmV0dXJuIHdlYkRlYnVnZ2VyQWdlbnQtPndpbGxQb3N0TWVzc2FnZSgpOwog
ICAgIHJldHVybiAwOwogfQogCiB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUG9z
dE1lc3NhZ2VJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIGlu
dCBwb3N0TWVzc2FnZUlkZW50aWZpZXIsIEpTQzo6SlNHbG9iYWxPYmplY3QmIHN0YXRlKQogewot
ICAgIGlmIChhdXRvKiB3ZWJEZWJ1Z2dlckFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy53ZWJE
ZWJ1Z2dlckFnZW50KCkpCisgICAgaWYgKGF1dG8qIHdlYkRlYnVnZ2VyQWdlbnQgPSBpbnN0cnVt
ZW50aW5nQWdlbnRzLmVuYWJsZWRXZWJEZWJ1Z2dlckFnZW50KCkpCiAgICAgICAgIHdlYkRlYnVn
Z2VyQWdlbnQtPmRpZFBvc3RNZXNzYWdlKHBvc3RNZXNzYWdlSWRlbnRpZmllciwgc3RhdGUpOwog
fQogCiB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRmFpbFBvc3RNZXNzYWdlSW1w
bChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBpbnQgcG9zdE1lc3Nh
Z2VJZGVudGlmaWVyKQogewotICAgIGlmIChhdXRvKiB3ZWJEZWJ1Z2dlckFnZW50ID0gaW5zdHJ1
bWVudGluZ0FnZW50cy53ZWJEZWJ1Z2dlckFnZW50KCkpCisgICAgaWYgKGF1dG8qIHdlYkRlYnVn
Z2VyQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmVuYWJsZWRXZWJEZWJ1Z2dlckFnZW50KCkp
CiAgICAgICAgIHdlYkRlYnVnZ2VyQWdlbnQtPmRpZEZhaWxQb3N0TWVzc2FnZShwb3N0TWVzc2Fn
ZUlkZW50aWZpZXIpOwogfQogCiB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbERp
c3BhdGNoUG9zdE1lc3NhZ2VJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdB
Z2VudHMsIGludCBwb3N0TWVzc2FnZUlkZW50aWZpZXIpCiB7Ci0gICAgaWYgKGF1dG8qIHdlYkRl
YnVnZ2VyQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLndlYkRlYnVnZ2VyQWdlbnQoKSkKKyAg
ICBpZiAoYXV0byogd2ViRGVidWdnZXJBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuZW5hYmxl
ZFdlYkRlYnVnZ2VyQWdlbnQoKSkKICAgICAgICAgd2ViRGVidWdnZXJBZ2VudC0+d2lsbERpc3Bh
dGNoUG9zdE1lc3NhZ2UocG9zdE1lc3NhZ2VJZGVudGlmaWVyKTsKIH0KIAogdm9pZCBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb246OmRpZERpc3BhdGNoUG9zdE1lc3NhZ2VJbXBsKEluc3RydW1lbnRp
bmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIGludCBwb3N0TWVzc2FnZUlkZW50aWZpZXIp
CiB7Ci0gICAgaWYgKGF1dG8qIHdlYkRlYnVnZ2VyQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRz
LndlYkRlYnVnZ2VyQWdlbnQoKSkKKyAgICBpZiAoYXV0byogd2ViRGVidWdnZXJBZ2VudCA9IGlu
c3RydW1lbnRpbmdBZ2VudHMuZW5hYmxlZFdlYkRlYnVnZ2VyQWdlbnQoKSkKICAgICAgICAgd2Vi
RGVidWdnZXJBZ2VudC0+ZGlkRGlzcGF0Y2hQb3N0TWVzc2FnZShwb3N0TWVzc2FnZUlkZW50aWZp
ZXIpOwogfQogCiB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbENhbGxGdW5jdGlv
bkltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgY29uc3QgU3Ry
aW5nJiBzY3JpcHROYW1lLCBpbnQgc2NyaXB0TGluZSwgaW50IHNjcmlwdENvbHVtbiwgU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKIHsKLSAgICBpZiAoYXV0byogdGltZWxpbmVBZ2Vu
dCA9IGluc3RydW1lbnRpbmdBZ2VudHMudHJhY2tpbmdJbnNwZWN0b3JUaW1lbGluZUFnZW50KCkp
CisgICAgaWYgKGF1dG8qIHRpbWVsaW5lQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLnRyYWNr
aW5nVGltZWxpbmVBZ2VudCgpKQogICAgICAgICB0aW1lbGluZUFnZW50LT53aWxsQ2FsbEZ1bmN0
aW9uKHNjcmlwdE5hbWUsIHNjcmlwdExpbmUsIHNjcmlwdENvbHVtbiwgZnJhbWVGb3JTY3JpcHRF
eGVjdXRpb25Db250ZXh0KGNvbnRleHQpKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OmRpZENhbGxGdW5jdGlvbkltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVu
dGluZ0FnZW50cywgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKIHsKLSAgICBpZiAo
YXV0byogdGltZWxpbmVBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMudHJhY2tpbmdJbnNwZWN0
b3JUaW1lbGluZUFnZW50KCkpCisgICAgaWYgKGF1dG8qIHRpbWVsaW5lQWdlbnQgPSBpbnN0cnVt
ZW50aW5nQWdlbnRzLnRyYWNraW5nVGltZWxpbmVBZ2VudCgpKQogICAgICAgICB0aW1lbGluZUFn
ZW50LT5kaWRDYWxsRnVuY3Rpb24oZnJhbWVGb3JTY3JpcHRFeGVjdXRpb25Db250ZXh0KGNvbnRl
eHQpKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxEaXNwYXRjaEV2
ZW50SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBEb2N1bWVu
dCYgZG9jdW1lbnQsIGNvbnN0IEV2ZW50JiBldmVudCkKIHsKLSAgICBpZiAoYXV0byogdGltZWxp
bmVBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMudHJhY2tpbmdJbnNwZWN0b3JUaW1lbGluZUFn
ZW50KCkpCisgICAgaWYgKGF1dG8qIHRpbWVsaW5lQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRz
LnRyYWNraW5nVGltZWxpbmVBZ2VudCgpKQogICAgICAgICB0aW1lbGluZUFnZW50LT53aWxsRGlz
cGF0Y2hFdmVudChldmVudCwgZG9jdW1lbnQuZnJhbWUoKSk7CiB9CiAKIHZvaWQgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjp3aWxsSGFuZGxlRXZlbnRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMm
IGluc3RydW1lbnRpbmdBZ2VudHMsIEV2ZW50JiBldmVudCwgY29uc3QgUmVnaXN0ZXJlZEV2ZW50
TGlzdGVuZXImIGxpc3RlbmVyKQogewotICAgIGlmIChhdXRvKiB3ZWJEZWJ1Z2dlckFnZW50ID0g
aW5zdHJ1bWVudGluZ0FnZW50cy53ZWJEZWJ1Z2dlckFnZW50KCkpCisgICAgaWYgKGF1dG8qIHdl
YkRlYnVnZ2VyQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmVuYWJsZWRXZWJEZWJ1Z2dlckFn
ZW50KCkpCiAgICAgICAgIHdlYkRlYnVnZ2VyQWdlbnQtPndpbGxIYW5kbGVFdmVudChsaXN0ZW5l
cik7CiAKLSAgICBpZiAoSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudCogZG9tRGVidWdnZXJBZ2Vu
dCA9IGluc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudCgpKQorICAg
IGlmIChhdXRvKiBkb21EZWJ1Z2dlckFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5lbmFibGVk
RE9NRGVidWdnZXJBZ2VudCgpKQogICAgICAgICBkb21EZWJ1Z2dlckFnZW50LT53aWxsSGFuZGxl
RXZlbnQoZXZlbnQsIGxpc3RlbmVyKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OmRpZEhhbmRsZUV2ZW50SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5n
QWdlbnRzKQogewotICAgIGlmIChhdXRvKiB3ZWJEZWJ1Z2dlckFnZW50ID0gaW5zdHJ1bWVudGlu
Z0FnZW50cy53ZWJEZWJ1Z2dlckFnZW50KCkpCisgICAgaWYgKGF1dG8qIHdlYkRlYnVnZ2VyQWdl
bnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmVuYWJsZWRXZWJEZWJ1Z2dlckFnZW50KCkpCiAgICAg
ICAgIHdlYkRlYnVnZ2VyQWdlbnQtPmRpZERpc3BhdGNoQXN5bmNDYWxsKCk7CiAKLSAgICBpZiAo
SW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudCogZG9tRGVidWdnZXJBZ2VudCA9IGluc3RydW1lbnRp
bmdBZ2VudHMuaW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudCgpKQorICAgIGlmIChhdXRvKiBkb21E
ZWJ1Z2dlckFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5lbmFibGVkRE9NRGVidWdnZXJBZ2Vu
dCgpKQogICAgICAgICBkb21EZWJ1Z2dlckFnZW50LT5kaWRIYW5kbGVFdmVudCgpOwogfQogCiB2
b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRGlzcGF0Y2hFdmVudEltcGwoSW5zdHJ1
bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgY29uc3QgRXZlbnQmIGV2ZW50KQog
ewotICAgIGlmIChhdXRvKiB0aW1lbGluZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy50cmFj
a2luZ0luc3BlY3RvclRpbWVsaW5lQWdlbnQoKSkKKyAgICBpZiAoYXV0byogdGltZWxpbmVBZ2Vu
dCA9IGluc3RydW1lbnRpbmdBZ2VudHMudHJhY2tpbmdUaW1lbGluZUFnZW50KCkpCiAgICAgICAg
IHRpbWVsaW5lQWdlbnQtPmRpZERpc3BhdGNoRXZlbnQoZXZlbnQuZGVmYXVsdFByZXZlbnRlZCgp
KTsKIH0KIAogdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxEaXNwYXRjaEV2ZW50
T25XaW5kb3dJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIGNv
bnN0IEV2ZW50JiBldmVudCwgRE9NV2luZG93JiB3aW5kb3cpCiB7Ci0gICAgaWYgKGF1dG8qIHRp
bWVsaW5lQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLnRyYWNraW5nSW5zcGVjdG9yVGltZWxp
bmVBZ2VudCgpKQorICAgIGlmIChhdXRvKiB0aW1lbGluZUFnZW50ID0gaW5zdHJ1bWVudGluZ0Fn
ZW50cy50cmFja2luZ1RpbWVsaW5lQWdlbnQoKSkKICAgICAgICAgdGltZWxpbmVBZ2VudC0+d2ls
bERpc3BhdGNoRXZlbnQoZXZlbnQsIHdpbmRvdy5mcmFtZSgpKTsKIH0KIAogdm9pZCBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb246OmRpZERpc3BhdGNoRXZlbnRPbldpbmRvd0ltcGwoSW5zdHJ1bWVu
dGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgY29uc3QgRXZlbnQmIGV2ZW50KQogewot
ICAgIGlmIChhdXRvKiB0aW1lbGluZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy50cmFja2lu
Z0luc3BlY3RvclRpbWVsaW5lQWdlbnQoKSkKKyAgICBpZiAoYXV0byogdGltZWxpbmVBZ2VudCA9
IGluc3RydW1lbnRpbmdBZ2VudHMudHJhY2tpbmdUaW1lbGluZUFnZW50KCkpCiAgICAgICAgIHRp
bWVsaW5lQWdlbnQtPmRpZERpc3BhdGNoRXZlbnQoZXZlbnQuZGVmYXVsdFByZXZlbnRlZCgpKTsK
IH0KIAogdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmV2ZW50RGlkUmVzZXRBZnRlckRp
c3BhdGNoSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBjb25z
dCBFdmVudCYgZXZlbnQpCiB7Ci0gICAgaWYgKGF1dG8qIGRvbUFnZW50ID0gaW5zdHJ1bWVudGlu
Z0FnZW50cy5pbnNwZWN0b3JET01BZ2VudCgpKQorICAgIGlmIChhdXRvKiBkb21BZ2VudCA9IGlu
c3RydW1lbnRpbmdBZ2VudHMucGVyc2lzdGVudERPTUFnZW50KCkpCiAgICAgICAgIGRvbUFnZW50
LT5ldmVudERpZFJlc2V0QWZ0ZXJEaXNwYXRjaChldmVudCk7CiB9CiAKIHZvaWQgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjp3aWxsRXZhbHVhdGVTY3JpcHRJbXBsKEluc3RydW1lbnRpbmdBZ2Vu
dHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIEZyYW1lJiBmcmFtZSwgY29uc3QgU3RyaW5nJiB1cmws
IGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyKQogewotICAgIGlmIChhdXRvKiB0aW1l
bGluZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy50cmFja2luZ0luc3BlY3RvclRpbWVsaW5l
QWdlbnQoKSkKKyAgICBpZiAoYXV0byogdGltZWxpbmVBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2Vu
dHMudHJhY2tpbmdUaW1lbGluZUFnZW50KCkpCiAgICAgICAgIHRpbWVsaW5lQWdlbnQtPndpbGxF
dmFsdWF0ZVNjcmlwdCh1cmwsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgZnJhbWUpOwogfQog
CiB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRXZhbHVhdGVTY3JpcHRJbXBsKElu
c3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIEZyYW1lJiBmcmFtZSkKIHsK
LSAgICBpZiAoYXV0byogdGltZWxpbmVBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMudHJhY2tp
bmdJbnNwZWN0b3JUaW1lbGluZUFnZW50KCkpCisgICAgaWYgKGF1dG8qIHRpbWVsaW5lQWdlbnQg
PSBpbnN0cnVtZW50aW5nQWdlbnRzLnRyYWNraW5nVGltZWxpbmVBZ2VudCgpKQogICAgICAgICB0
aW1lbGluZUFnZW50LT5kaWRFdmFsdWF0ZVNjcmlwdChmcmFtZSk7CiB9CiAKIHZvaWQgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsRmlyZVRpbWVySW1wbChJbnN0cnVtZW50aW5nQWdlbnRz
JiBpbnN0cnVtZW50aW5nQWdlbnRzLCBpbnQgdGltZXJJZCwgYm9vbCBvbmVTaG90LCBTY3JpcHRF
eGVjdXRpb25Db250ZXh0JiBjb250ZXh0KQogewotICAgIGlmIChhdXRvKiB3ZWJEZWJ1Z2dlckFn
ZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy53ZWJEZWJ1Z2dlckFnZW50KCkpCisgICAgaWYgKGF1
dG8qIHdlYkRlYnVnZ2VyQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmVuYWJsZWRXZWJEZWJ1
Z2dlckFnZW50KCkpCiAgICAgICAgIHdlYkRlYnVnZ2VyQWdlbnQtPndpbGxEaXNwYXRjaEFzeW5j
Q2FsbChJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpBc3luY0NhbGxUeXBlOjpET01UaW1lciwgdGlt
ZXJJZCk7Ci0gICAgaWYgKGF1dG8qIGRvbURlYnVnZ2VyQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdl
bnRzLmluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQoKSkKKyAgICBpZiAoYXV0byogZG9tRGVidWdn
ZXJBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuZW5hYmxlZERPTURlYnVnZ2VyQWdlbnQoKSkK
ICAgICAgICAgZG9tRGVidWdnZXJBZ2VudC0+d2lsbEZpcmVUaW1lcihvbmVTaG90KTsKLSAgICBp
ZiAoYXV0byogdGltZWxpbmVBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMudHJhY2tpbmdJbnNw
ZWN0b3JUaW1lbGluZUFnZW50KCkpCisgICAgaWYgKGF1dG8qIHRpbWVsaW5lQWdlbnQgPSBpbnN0
cnVtZW50aW5nQWdlbnRzLnRyYWNraW5nVGltZWxpbmVBZ2VudCgpKQogICAgICAgICB0aW1lbGlu
ZUFnZW50LT53aWxsRmlyZVRpbWVyKHRpbWVySWQsIGZyYW1lRm9yU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dChjb250ZXh0KSk7CiB9CiAKIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRG
aXJlVGltZXJJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMpCiB7
Ci0gICAgaWYgKGF1dG8qIHdlYkRlYnVnZ2VyQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLndl
YkRlYnVnZ2VyQWdlbnQoKSkKKyAgICBpZiAoYXV0byogd2ViRGVidWdnZXJBZ2VudCA9IGluc3Ry
dW1lbnRpbmdBZ2VudHMuZW5hYmxlZFdlYkRlYnVnZ2VyQWdlbnQoKSkKICAgICAgICAgd2ViRGVi
dWdnZXJBZ2VudC0+ZGlkRGlzcGF0Y2hBc3luY0NhbGwoKTsKLSAgICBpZiAoYXV0byogdGltZWxp
bmVBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMudHJhY2tpbmdJbnNwZWN0b3JUaW1lbGluZUFn
ZW50KCkpCisgICAgaWYgKGF1dG8qIHRpbWVsaW5lQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRz
LnRyYWNraW5nVGltZWxpbmVBZ2VudCgpKQogICAgICAgICB0aW1lbGluZUFnZW50LT5kaWRGaXJl
VGltZXIoKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEludmFsaWRh
dGVMYXlvdXRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIEZy
YW1lJiBmcmFtZSkKIHsKLSAgICBpZiAoSW5zcGVjdG9yVGltZWxpbmVBZ2VudCogdGltZWxpbmVB
Z2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMudHJhY2tpbmdJbnNwZWN0b3JUaW1lbGluZUFnZW50
KCkpCisgICAgaWYgKGF1dG8qIHRpbWVsaW5lQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLnRy
YWNraW5nVGltZWxpbmVBZ2VudCgpKQogICAgICAgICB0aW1lbGluZUFnZW50LT5kaWRJbnZhbGlk
YXRlTGF5b3V0KGZyYW1lKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246Ondp
bGxMYXlvdXRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIEZy
YW1lJiBmcmFtZSkKIHsKLSAgICBpZiAoYXV0byogdGltZWxpbmVBZ2VudCA9IGluc3RydW1lbnRp
bmdBZ2VudHMudHJhY2tpbmdJbnNwZWN0b3JUaW1lbGluZUFnZW50KCkpCisgICAgaWYgKGF1dG8q
IHRpbWVsaW5lQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLnRyYWNraW5nVGltZWxpbmVBZ2Vu
dCgpKQogICAgICAgICB0aW1lbGluZUFnZW50LT53aWxsTGF5b3V0KGZyYW1lKTsKIH0KIAogdm9p
ZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZExheW91dEltcGwoSW5zdHJ1bWVudGluZ0Fn
ZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgUmVuZGVyT2JqZWN0JiByb290KQogewotICAgIGlm
IChhdXRvKiB0aW1lbGluZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy50cmFja2luZ0luc3Bl
Y3RvclRpbWVsaW5lQWdlbnQoKSkKKyAgICBpZiAoYXV0byogdGltZWxpbmVBZ2VudCA9IGluc3Ry
dW1lbnRpbmdBZ2VudHMudHJhY2tpbmdUaW1lbGluZUFnZW50KCkpCiAgICAgICAgIHRpbWVsaW5l
QWdlbnQtPmRpZExheW91dChyb290KTsKLSAgICBpZiAoYXV0byogcGFnZUFnZW50ID0gaW5zdHJ1
bWVudGluZ0FnZW50cy5pbnNwZWN0b3JQYWdlQWdlbnQoKSkKKyAgICBpZiAoYXV0byogcGFnZUFn
ZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5lbmFibGVkUGFnZUFnZW50KCkpCiAgICAgICAgIHBh
Z2VBZ2VudC0+ZGlkTGF5b3V0KCk7CiB9CiAKIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
Ojp3aWxsQ29tcG9zaXRlSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdl
bnRzLCBGcmFtZSYgZnJhbWUpCiB7Ci0gICAgaWYgKEluc3BlY3RvclRpbWVsaW5lQWdlbnQqIHRp
bWVsaW5lQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLnRyYWNraW5nSW5zcGVjdG9yVGltZWxp
bmVBZ2VudCgpKQorICAgIGlmIChhdXRvKiB0aW1lbGluZUFnZW50ID0gaW5zdHJ1bWVudGluZ0Fn
ZW50cy50cmFja2luZ1RpbWVsaW5lQWdlbnQoKSkKICAgICAgICAgdGltZWxpbmVBZ2VudC0+d2ls
bENvbXBvc2l0ZShmcmFtZSk7CiB9CiAKIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpk
aWRDb21wb3NpdGVJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMp
CiB7Ci0gICAgaWYgKEluc3BlY3RvclRpbWVsaW5lQWdlbnQqIHRpbWVsaW5lQWdlbnQgPSBpbnN0
cnVtZW50aW5nQWdlbnRzLnRyYWNraW5nSW5zcGVjdG9yVGltZWxpbmVBZ2VudCgpKQorICAgIGlm
IChhdXRvKiB0aW1lbGluZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy50cmFja2luZ1RpbWVs
aW5lQWdlbnQoKSkKICAgICAgICAgdGltZWxpbmVBZ2VudC0+ZGlkQ29tcG9zaXRlKCk7CiB9CiAK
IHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsUGFpbnRJbXBsKEluc3RydW1lbnRp
bmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIFJlbmRlck9iamVjdCYgcmVuZGVyZXIpCiB7
Ci0gICAgaWYgKEluc3BlY3RvclRpbWVsaW5lQWdlbnQqIHRpbWVsaW5lQWdlbnQgPSBpbnN0cnVt
ZW50aW5nQWdlbnRzLnRyYWNraW5nSW5zcGVjdG9yVGltZWxpbmVBZ2VudCgpKQorICAgIGlmIChh
dXRvKiB0aW1lbGluZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy50cmFja2luZ1RpbWVsaW5l
QWdlbnQoKSkKICAgICAgICAgdGltZWxpbmVBZ2VudC0+d2lsbFBhaW50KHJlbmRlcmVyLmZyYW1l
KCkpOwogfQogCiB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUGFpbnRJbXBsKElu
c3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIFJlbmRlck9iamVjdCYgcmVu
ZGVyZXIsIGNvbnN0IExheW91dFJlY3QmIHJlY3QpCiB7Ci0gICAgaWYgKEluc3BlY3RvclRpbWVs
aW5lQWdlbnQqIHRpbWVsaW5lQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLnRyYWNraW5nSW5z
cGVjdG9yVGltZWxpbmVBZ2VudCgpKQorICAgIGlmIChhdXRvKiB0aW1lbGluZUFnZW50ID0gaW5z
dHJ1bWVudGluZ0FnZW50cy50cmFja2luZ1RpbWVsaW5lQWdlbnQoKSkKICAgICAgICAgdGltZWxp
bmVBZ2VudC0+ZGlkUGFpbnQocmVuZGVyZXIsIHJlY3QpOwogCi0gICAgaWYgKEluc3BlY3RvclBh
Z2VBZ2VudCogcGFnZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JQYWdlQWdl
bnQoKSkKKyAgICBpZiAoYXV0byogcGFnZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5lbmFi
bGVkUGFnZUFnZW50KCkpCiAgICAgICAgIHBhZ2VBZ2VudC0+ZGlkUGFpbnQocmVuZGVyZXIsIHJl
Y3QpOwogfQogCiB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFJlY2FsY3VsYXRl
U3R5bGVJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIERvY3Vt
ZW50JiBkb2N1bWVudCkKIHsKLSAgICBpZiAoYXV0byogdGltZWxpbmVBZ2VudCA9IGluc3RydW1l
bnRpbmdBZ2VudHMudHJhY2tpbmdJbnNwZWN0b3JUaW1lbGluZUFnZW50KCkpCisgICAgaWYgKGF1
dG8qIHRpbWVsaW5lQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLnRyYWNraW5nVGltZWxpbmVB
Z2VudCgpKQogICAgICAgICB0aW1lbGluZUFnZW50LT53aWxsUmVjYWxjdWxhdGVTdHlsZShkb2N1
bWVudC5mcmFtZSgpKTsKLSAgICBpZiAoSW5zcGVjdG9yTmV0d29ya0FnZW50KiBuZXR3b3JrQWdl
bnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3Rvck5ldHdvcmtBZ2VudCgpKQorICAgIGlm
IChhdXRvKiBuZXR3b3JrQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmVuYWJsZWROZXR3b3Jr
QWdlbnQoKSkKICAgICAgICAgbmV0d29ya0FnZW50LT53aWxsUmVjYWxjdWxhdGVTdHlsZSgpOwog
fQogCiB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjYWxjdWxhdGVTdHlsZUlt
cGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cykKIHsKLSAgICBpZiAo
YXV0byogdGltZWxpbmVBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMudHJhY2tpbmdJbnNwZWN0
b3JUaW1lbGluZUFnZW50KCkpCisgICAgaWYgKGF1dG8qIHRpbWVsaW5lQWdlbnQgPSBpbnN0cnVt
ZW50aW5nQWdlbnRzLnRyYWNraW5nVGltZWxpbmVBZ2VudCgpKQogICAgICAgICB0aW1lbGluZUFn
ZW50LT5kaWRSZWNhbGN1bGF0ZVN0eWxlKCk7Ci0gICAgaWYgKEluc3BlY3Rvck5ldHdvcmtBZ2Vu
dCogbmV0d29ya0FnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JOZXR3b3JrQWdl
bnQoKSkKKyAgICBpZiAoYXV0byogbmV0d29ya0FnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5l
bmFibGVkTmV0d29ya0FnZW50KCkpCiAgICAgICAgIG5ldHdvcmtBZ2VudC0+ZGlkUmVjYWxjdWxh
dGVTdHlsZSgpOwotICAgIGlmIChJbnNwZWN0b3JQYWdlQWdlbnQqIHBhZ2VBZ2VudCA9IGluc3Ry
dW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yUGFnZUFnZW50KCkpCisgICAgaWYgKGF1dG8qIHBhZ2VB
Z2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuZW5hYmxlZFBhZ2VBZ2VudCgpKQogICAgICAgICBw
YWdlQWdlbnQtPmRpZFJlY2FsY3VsYXRlU3R5bGUoKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OmRpZFNjaGVkdWxlU3R5bGVSZWNhbGN1bGF0aW9uSW1wbChJbnN0cnVtZW50
aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBEb2N1bWVudCYgZG9jdW1lbnQpCiB7Ci0g
ICAgaWYgKEluc3BlY3RvclRpbWVsaW5lQWdlbnQqIHRpbWVsaW5lQWdlbnQgPSBpbnN0cnVtZW50
aW5nQWdlbnRzLnRyYWNraW5nSW5zcGVjdG9yVGltZWxpbmVBZ2VudCgpKQorICAgIGlmIChhdXRv
KiB0aW1lbGluZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy50cmFja2luZ1RpbWVsaW5lQWdl
bnQoKSkKICAgICAgICAgdGltZWxpbmVBZ2VudC0+ZGlkU2NoZWR1bGVTdHlsZVJlY2FsY3VsYXRp
b24oZG9jdW1lbnQuZnJhbWUoKSk7Ci0gICAgaWYgKEluc3BlY3Rvck5ldHdvcmtBZ2VudCogbmV0
d29ya0FnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JOZXR3b3JrQWdlbnQoKSkK
KyAgICBpZiAoYXV0byogbmV0d29ya0FnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5lbmFibGVk
TmV0d29ya0FnZW50KCkpCiAgICAgICAgIG5ldHdvcmtBZ2VudC0+ZGlkU2NoZWR1bGVTdHlsZVJl
Y2FsY3VsYXRpb24oZG9jdW1lbnQpOwogfQogCiB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6YXBwbHlVc2VyQWdlbnRPdmVycmlkZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1
bWVudGluZ0FnZW50cywgU3RyaW5nJiB1c2VyQWdlbnQpCiB7Ci0gICAgaWYgKEluc3BlY3RvclBh
Z2VBZ2VudCogcGFnZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JQYWdlQWdl
bnQoKSkKKyAgICBpZiAoYXV0byogcGFnZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5lbmFi
bGVkUGFnZUFnZW50KCkpCiAgICAgICAgIHBhZ2VBZ2VudC0+YXBwbHlVc2VyQWdlbnRPdmVycmlk
ZSh1c2VyQWdlbnQpOwogfQogCiB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6YXBwbHlF
bXVsYXRlZE1lZGlhSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRz
LCBTdHJpbmcmIG1lZGlhKQogewotICAgIGlmIChJbnNwZWN0b3JQYWdlQWdlbnQqIHBhZ2VBZ2Vu
dCA9IGluc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yUGFnZUFnZW50KCkpCisgICAgaWYgKGF1
dG8qIHBhZ2VBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuZW5hYmxlZFBhZ2VBZ2VudCgpKQog
ICAgICAgICBwYWdlQWdlbnQtPmFwcGx5RW11bGF0ZWRNZWRpYShtZWRpYSk7CiB9CiAKIHZvaWQg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsU2VuZFJlcXVlc3RJbXBsKEluc3RydW1lbnRp
bmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwg
RG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlKQogewotICAgIGlmIChJbnNwZWN0b3JO
ZXR3b3JrQWdlbnQqIG5ldHdvcmtBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9y
TmV0d29ya0FnZW50KCkpCisgICAgaWYgKGF1dG8qIG5ldHdvcmtBZ2VudCA9IGluc3RydW1lbnRp
bmdBZ2VudHMuZW5hYmxlZE5ldHdvcmtBZ2VudCgpKQogICAgICAgICBuZXR3b3JrQWdlbnQtPndp
bGxTZW5kUmVxdWVzdChpZGVudGlmaWVyLCBsb2FkZXIsIHJlcXVlc3QsIHJlZGlyZWN0UmVzcG9u
c2UpOwogfQogCiB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFNlbmRSZXF1ZXN0
T2ZUeXBlSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCB1bnNp
Z25lZCBsb25nIGlkZW50aWZpZXIsIERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIFJlc291cmNlUmVx
dWVzdCYgcmVxdWVzdCwgTG9hZFR5cGUgbG9hZFR5cGUpCiB7Ci0gICAgaWYgKEluc3BlY3Rvck5l
dHdvcmtBZ2VudCogbmV0d29ya0FnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JO
ZXR3b3JrQWdlbnQoKSkKKyAgICBpZiAoYXV0byogbmV0d29ya0FnZW50ID0gaW5zdHJ1bWVudGlu
Z0FnZW50cy5lbmFibGVkTmV0d29ya0FnZW50KCkpCiAgICAgICAgIG5ldHdvcmtBZ2VudC0+d2ls
bFNlbmRSZXF1ZXN0T2ZUeXBlKGlkZW50aWZpZXIsIGxvYWRlciwgcmVxdWVzdCwgbG9hZFR5cGUp
OwogfQogCkBAIC01ODQsNyArNTg0LDcgQEAgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OmRpZExvYWRSZXNvdXJjZUZyb21NZW1vcnlDYWNoZUltcGwoSW5zdHJ1bWVudGluZ0EKICAgICBp
ZiAoIWxvYWRlciB8fCAhY2FjaGVkUmVzb3VyY2UpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlm
IChJbnNwZWN0b3JOZXR3b3JrQWdlbnQqIG5ldHdvcmtBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2Vu
dHMuaW5zcGVjdG9yTmV0d29ya0FnZW50KCkpCisgICAgaWYgKGF1dG8qIG5ldHdvcmtBZ2VudCA9
IGluc3RydW1lbnRpbmdBZ2VudHMuZW5hYmxlZE5ldHdvcmtBZ2VudCgpKQogICAgICAgICBuZXR3
b3JrQWdlbnQtPmRpZExvYWRSZXNvdXJjZUZyb21NZW1vcnlDYWNoZShsb2FkZXIsICpjYWNoZWRS
ZXNvdXJjZSk7CiB9CiAKQEAgLTU5MywyNyArNTkzLDI3IEBAIHZvaWQgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjpkaWRSZWNlaXZlUmVzb3VyY2VSZXNwb25zZUltcGwoSW5zdHJ1bWVudGluZ0Fn
ZW50CiAgICAgaWYgKExJS0VMWSghaW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JFbnZpcm9u
bWVudCgpLmRldmVsb3BlckV4dHJhc0VuYWJsZWQoKSkpCiAgICAgICAgIHJldHVybjsKIAotICAg
IGlmIChJbnNwZWN0b3JOZXR3b3JrQWdlbnQqIG5ldHdvcmtBZ2VudCA9IGluc3RydW1lbnRpbmdB
Z2VudHMuaW5zcGVjdG9yTmV0d29ya0FnZW50KCkpCisgICAgaWYgKGF1dG8qIG5ldHdvcmtBZ2Vu
dCA9IGluc3RydW1lbnRpbmdBZ2VudHMuZW5hYmxlZE5ldHdvcmtBZ2VudCgpKQogICAgICAgICBu
ZXR3b3JrQWdlbnQtPmRpZFJlY2VpdmVSZXNwb25zZShpZGVudGlmaWVyLCBsb2FkZXIsIHJlc3Bv
bnNlLCByZXNvdXJjZUxvYWRlcik7Ci0gICAgaWYgKFdlYkNvbnNvbGVBZ2VudCogY29uc29sZUFn
ZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy53ZWJDb25zb2xlQWdlbnQoKSkKKyAgICBpZiAoYXV0
byogY29uc29sZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy53ZWJDb25zb2xlQWdlbnQoKSkK
ICAgICAgICAgY29uc29sZUFnZW50LT5kaWRSZWNlaXZlUmVzcG9uc2UoaWRlbnRpZmllciwgcmVz
cG9uc2UpOyAvLyBUaGlzIHNob3VsZCBjb21lIEFGVEVSIHJlc291cmNlIG5vdGlmaWNhdGlvbiwg
ZnJvbnQtZW5kIHJlbGllcyBvbiB0aGlzLgogfQogCiB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6ZGlkUmVjZWl2ZVRocmVhZGFibGVMb2FkZXJSZXNwb25zZUltcGwoSW5zdHJ1bWVudGlu
Z0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyJiBk
b2N1bWVudFRocmVhZGFibGVMb2FkZXIsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllcikKIHsKLSAg
ICBpZiAoSW5zcGVjdG9yTmV0d29ya0FnZW50KiBuZXR3b3JrQWdlbnQgPSBpbnN0cnVtZW50aW5n
QWdlbnRzLmluc3BlY3Rvck5ldHdvcmtBZ2VudCgpKQorICAgIGlmIChhdXRvKiBuZXR3b3JrQWdl
bnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmVuYWJsZWROZXR3b3JrQWdlbnQoKSkKICAgICAgICAg
bmV0d29ya0FnZW50LT5kaWRSZWNlaXZlVGhyZWFkYWJsZUxvYWRlclJlc3BvbnNlKGlkZW50aWZp
ZXIsIGRvY3VtZW50VGhyZWFkYWJsZUxvYWRlcik7CiB9CiAKIHZvaWQgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjpkaWRSZWNlaXZlRGF0YUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1
bWVudGluZ0FnZW50cywgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBjaGFyKiBkYXRh
LCBpbnQgZGF0YUxlbmd0aCwgaW50IGVuY29kZWREYXRhTGVuZ3RoKQogewotICAgIGlmIChJbnNw
ZWN0b3JOZXR3b3JrQWdlbnQqIG5ldHdvcmtBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuaW5z
cGVjdG9yTmV0d29ya0FnZW50KCkpCisgICAgaWYgKGF1dG8qIG5ldHdvcmtBZ2VudCA9IGluc3Ry
dW1lbnRpbmdBZ2VudHMuZW5hYmxlZE5ldHdvcmtBZ2VudCgpKQogICAgICAgICBuZXR3b3JrQWdl
bnQtPmRpZFJlY2VpdmVEYXRhKGlkZW50aWZpZXIsIGRhdGEsIGRhdGFMZW5ndGgsIGVuY29kZWRE
YXRhTGVuZ3RoKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEZpbmlz
aExvYWRpbmdJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIHVu
c2lnbmVkIGxvbmcgaWRlbnRpZmllciwgRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgY29uc3QgTmV0
d29ya0xvYWRNZXRyaWNzJiBuZXR3b3JrTG9hZE1ldHJpY3MsIFJlc291cmNlTG9hZGVyKiByZXNv
dXJjZUxvYWRlcikKIHsKLSAgICBpZiAoSW5zcGVjdG9yTmV0d29ya0FnZW50KiBuZXR3b3JrQWdl
bnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3Rvck5ldHdvcmtBZ2VudCgpKQorICAgIGlm
IChhdXRvKiBuZXR3b3JrQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmVuYWJsZWROZXR3b3Jr
QWdlbnQoKSkKICAgICAgICAgbmV0d29ya0FnZW50LT5kaWRGaW5pc2hMb2FkaW5nKGlkZW50aWZp
ZXIsIGxvYWRlciwgbmV0d29ya0xvYWRNZXRyaWNzLCByZXNvdXJjZUxvYWRlcik7CiB9CiAKQEAg
LTYyMiwzOSArNjIyLDM5IEBAIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRGYWls
TG9hZGluZ0ltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVuCiAgICAgaWYgKExJS0VM
WSghaW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JFbnZpcm9ubWVudCgpLmRldmVsb3BlckV4
dHJhc0VuYWJsZWQoKSkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChJbnNwZWN0b3JOZXR3
b3JrQWdlbnQqIG5ldHdvcmtBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yTmV0
d29ya0FnZW50KCkpCisgICAgaWYgKGF1dG8qIG5ldHdvcmtBZ2VudCA9IGluc3RydW1lbnRpbmdB
Z2VudHMuZW5hYmxlZE5ldHdvcmtBZ2VudCgpKQogICAgICAgICBuZXR3b3JrQWdlbnQtPmRpZEZh
aWxMb2FkaW5nKGlkZW50aWZpZXIsIGxvYWRlciwgZXJyb3IpOwotICAgIGlmIChXZWJDb25zb2xl
QWdlbnQqIGNvbnNvbGVBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMud2ViQ29uc29sZUFnZW50
KCkpCisgICAgaWYgKGF1dG8qIGNvbnNvbGVBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMud2Vi
Q29uc29sZUFnZW50KCkpCiAgICAgICAgIGNvbnNvbGVBZ2VudC0+ZGlkRmFpbExvYWRpbmcoaWRl
bnRpZmllciwgZXJyb3IpOyAvLyBUaGlzIHNob3VsZCBjb21lIEFGVEVSIHJlc291cmNlIG5vdGlm
aWNhdGlvbiwgZnJvbnQtZW5kIHJlbGllcyBvbiB0aGlzLgogfQogCiB2b2lkIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6d2lsbExvYWRYSFJTeW5jaHJvbm91c2x5SW1wbChJbnN0cnVtZW50aW5n
QWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzKQogewotICAgIGlmIChJbnNwZWN0b3JOZXR3b3Jr
QWdlbnQqIG5ldHdvcmtBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yTmV0d29y
a0FnZW50KCkpCisgICAgaWYgKGF1dG8qIG5ldHdvcmtBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2Vu
dHMuZW5hYmxlZE5ldHdvcmtBZ2VudCgpKQogICAgICAgICBuZXR3b3JrQWdlbnQtPndpbGxMb2Fk
WEhSU3luY2hyb25vdXNseSgpOwogfQogCiB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
ZGlkTG9hZFhIUlN5bmNocm9ub3VzbHlJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1l
bnRpbmdBZ2VudHMpCiB7Ci0gICAgaWYgKEluc3BlY3Rvck5ldHdvcmtBZ2VudCogbmV0d29ya0Fn
ZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JOZXR3b3JrQWdlbnQoKSkKKyAgICBp
ZiAoYXV0byogbmV0d29ya0FnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5lbmFibGVkTmV0d29y
a0FnZW50KCkpCiAgICAgICAgIG5ldHdvcmtBZ2VudC0+ZGlkTG9hZFhIUlN5bmNocm9ub3VzbHko
KTsKIH0KIAogdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnNjcmlwdEltcG9ydGVkSW1w
bChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCB1bnNpZ25lZCBsb25n
IGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgc291cmNlU3RyaW5nKQogewotICAgIGlmIChJbnNw
ZWN0b3JOZXR3b3JrQWdlbnQqIG5ldHdvcmtBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuaW5z
cGVjdG9yTmV0d29ya0FnZW50KCkpCisgICAgaWYgKGF1dG8qIG5ldHdvcmtBZ2VudCA9IGluc3Ry
dW1lbnRpbmdBZ2VudHMuZW5hYmxlZE5ldHdvcmtBZ2VudCgpKQogICAgICAgICBuZXR3b3JrQWdl
bnQtPnNldEluaXRpYWxTY3JpcHRDb250ZW50KGlkZW50aWZpZXIsIHNvdXJjZVN0cmluZyk7CiB9
CiAKIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzY3JpcHRFeGVjdXRpb25CbG9ja2Vk
QnlDU1BJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIGNvbnN0
IFN0cmluZyYgZGlyZWN0aXZlVGV4dCkKIHsKLSAgICBpZiAoYXV0byogd2ViRGVidWdnZXJBZ2Vu
dCA9IGluc3RydW1lbnRpbmdBZ2VudHMud2ViRGVidWdnZXJBZ2VudCgpKQorICAgIGlmIChhdXRv
KiB3ZWJEZWJ1Z2dlckFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5lbmFibGVkV2ViRGVidWdn
ZXJBZ2VudCgpKQogICAgICAgICB3ZWJEZWJ1Z2dlckFnZW50LT5zY3JpcHRFeGVjdXRpb25CbG9j
a2VkQnlDU1AoZGlyZWN0aXZlVGV4dCk7CiB9CiAKIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjpkaWRSZWNlaXZlU2NyaXB0UmVzcG9uc2VJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGlu
c3RydW1lbnRpbmdBZ2VudHMsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllcikKIHsKLSAgICBpZiAo
SW5zcGVjdG9yTmV0d29ya0FnZW50KiBuZXR3b3JrQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRz
Lmluc3BlY3Rvck5ldHdvcmtBZ2VudCgpKQorICAgIGlmIChhdXRvKiBuZXR3b3JrQWdlbnQgPSBp
bnN0cnVtZW50aW5nQWdlbnRzLmVuYWJsZWROZXR3b3JrQWdlbnQoKSkKICAgICAgICAgbmV0d29y
a0FnZW50LT5kaWRSZWNlaXZlU2NyaXB0UmVzcG9uc2UoaWRlbnRpZmllcik7CiB9CiAKQEAgLTY2
Myw3ICs2NjMsNyBAQCB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZG9tQ29udGVudExv
YWRlZEV2ZW50RmlyZWRJbXBsKEluc3RydW1lbnRpbmdBZ2VudAogICAgIGlmICghZnJhbWUuaXNN
YWluRnJhbWUoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKEluc3BlY3RvclBhZ2VBZ2Vu
dCogcGFnZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JQYWdlQWdlbnQoKSkK
KyAgICBpZiAoYXV0byogcGFnZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5lbmFibGVkUGFn
ZUFnZW50KCkpCiAgICAgICAgIHBhZ2VBZ2VudC0+ZG9tQ29udGVudEV2ZW50RmlyZWQoKTsKIH0K
IApAQCAtNjcyLDEzICs2NzIsMTMgQEAgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246Omxv
YWRFdmVudEZpcmVkSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW4KICAgICBpZiAo
IWZyYW1lIHx8ICFmcmFtZS0+aXNNYWluRnJhbWUoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
aWYgKEluc3BlY3RvclBhZ2VBZ2VudCogcGFnZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5p
bnNwZWN0b3JQYWdlQWdlbnQoKSkKKyAgICBpZiAoYXV0byogcGFnZUFnZW50ID0gaW5zdHJ1bWVu
dGluZ0FnZW50cy5lbmFibGVkUGFnZUFnZW50KCkpCiAgICAgICAgIHBhZ2VBZ2VudC0+bG9hZEV2
ZW50RmlyZWQoKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmZyYW1lRGV0
YWNoZWRGcm9tUGFyZW50SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdl
bnRzLCBGcmFtZSYgZnJhbWUpCiB7Ci0gICAgaWYgKEluc3BlY3RvclBhZ2VBZ2VudCogcGFnZUFn
ZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JQYWdlQWdlbnQoKSkKKyAgICBpZiAo
YXV0byogcGFnZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5lbmFibGVkUGFnZUFnZW50KCkp
CiAgICAgICAgIHBhZ2VBZ2VudC0+ZnJhbWVEZXRhY2hlZChmcmFtZSk7CiB9CiAKQEAgLTY5Niwx
MDcgKzY5NiwxMDcgQEAgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENvbW1pdExv
YWRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnQKICAgICBBU1NFUlQobG9hZGVy
LT5mcmFtZSgpID09ICZmcmFtZSk7CiAKICAgICBpZiAoZnJhbWUuaXNNYWluRnJhbWUoKSkgewot
ICAgICAgICBpZiAoV2ViQ29uc29sZUFnZW50KiBjb25zb2xlQWdlbnQgPSBpbnN0cnVtZW50aW5n
QWdlbnRzLndlYkNvbnNvbGVBZ2VudCgpKQorICAgICAgICBpZiAoYXV0byogY29uc29sZUFnZW50
ID0gaW5zdHJ1bWVudGluZ0FnZW50cy53ZWJDb25zb2xlQWdlbnQoKSkKICAgICAgICAgICAgIGNv
bnNvbGVBZ2VudC0+cmVzZXQoKTsKIAotICAgICAgICBpZiAoSW5zcGVjdG9yTmV0d29ya0FnZW50
KiBuZXR3b3JrQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3Rvck5ldHdvcmtBZ2Vu
dCgpKQorICAgICAgICBpZiAoYXV0byogbmV0d29ya0FnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50
cy5lbmFibGVkTmV0d29ya0FnZW50KCkpCiAgICAgICAgICAgICBuZXR3b3JrQWdlbnQtPm1haW5G
cmFtZU5hdmlnYXRlZCgqbG9hZGVyKTsKIAotICAgICAgICBpZiAoSW5zcGVjdG9yQ1NTQWdlbnQq
IGNzc0FnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JDU1NBZ2VudCgpKQorICAg
ICAgICBpZiAoYXV0byogY3NzQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmVuYWJsZWRDU1NB
Z2VudCgpKQogICAgICAgICAgICAgY3NzQWdlbnQtPnJlc2V0KCk7CiAKLSAgICAgICAgaWYgKGF1
dG8qIGRhdGFiYXNlQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3RvckRhdGFiYXNl
QWdlbnQoKSkKKyAgICAgICAgaWYgKGF1dG8qIGRhdGFiYXNlQWdlbnQgPSBpbnN0cnVtZW50aW5n
QWdlbnRzLmVuYWJsZWREYXRhYmFzZUFnZW50KCkpCiAgICAgICAgICAgICBkYXRhYmFzZUFnZW50
LT5kaWRDb21taXRMb2FkKCk7CiAKLSAgICAgICAgaWYgKEluc3BlY3RvckRPTUFnZW50KiBkb21B
Z2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yRE9NQWdlbnQoKSkKKyAgICAgICAg
aWYgKGF1dG8qIGRvbUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5wZXJzaXN0ZW50RE9NQWdl
bnQoKSkKICAgICAgICAgICAgIGRvbUFnZW50LT5zZXREb2N1bWVudChmcmFtZS5kb2N1bWVudCgp
KTsKIAotICAgICAgICBpZiAoSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQqIGxheWVyVHJlZUFnZW50
ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JMYXllclRyZWVBZ2VudCgpKQorICAgICAg
ICBpZiAoYXV0byogbGF5ZXJUcmVlQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmVuYWJsZWRM
YXllclRyZWVBZ2VudCgpKQogICAgICAgICAgICAgbGF5ZXJUcmVlQWdlbnQtPnJlc2V0KCk7CiAK
LSAgICAgICAgaWYgKGF1dG8qIHBhZ2VEZWJ1Z2dlckFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50
cy5wYWdlRGVidWdnZXJBZ2VudCgpKQorICAgICAgICBpZiAoYXV0byogcGFnZURlYnVnZ2VyQWdl
bnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmVuYWJsZWRQYWdlRGVidWdnZXJBZ2VudCgpKQogICAg
ICAgICAgICAgcGFnZURlYnVnZ2VyQWdlbnQtPm1haW5GcmFtZU5hdmlnYXRlZCgpOwogCi0gICAg
ICAgIGlmIChQYWdlSGVhcEFnZW50KiBwYWdlSGVhcEFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50
cy5wYWdlSGVhcEFnZW50KCkpCi0gICAgICAgICAgICBwYWdlSGVhcEFnZW50LT5tYWluRnJhbWVO
YXZpZ2F0ZWQoKTsKKyAgICAgICAgaWYgKGF1dG8qIGVuYWJsZWRQYWdlSGVhcEFnZW50ID0gaW5z
dHJ1bWVudGluZ0FnZW50cy5lbmFibGVkUGFnZUhlYXBBZ2VudCgpKQorICAgICAgICAgICAgZW5h
YmxlZFBhZ2VIZWFwQWdlbnQtPm1haW5GcmFtZU5hdmlnYXRlZCgpOwogICAgIH0KIAotICAgIGlm
IChhdXRvKiBwYWdlUnVudGltZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5wYWdlUnVudGlt
ZUFnZW50KCkpCisgICAgaWYgKGF1dG8qIHBhZ2VSdW50aW1lQWdlbnQgPSBpbnN0cnVtZW50aW5n
QWdlbnRzLmVuYWJsZWRQYWdlUnVudGltZUFnZW50KCkpCiAgICAgICAgIHBhZ2VSdW50aW1lQWdl
bnQtPmZyYW1lTmF2aWdhdGVkKGZyYW1lKTsKIAotICAgIGlmIChJbnNwZWN0b3JDYW52YXNBZ2Vu
dCogY2FudmFzQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3RvckNhbnZhc0FnZW50
KCkpCisgICAgaWYgKGF1dG8qIGNhbnZhc0FnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5lbmFi
bGVkQ2FudmFzQWdlbnQoKSkKICAgICAgICAgY2FudmFzQWdlbnQtPmZyYW1lTmF2aWdhdGVkKGZy
YW1lKTsKIAotICAgIGlmIChhdXRvKiBhbmltYXRpb25BZ2VudCA9IGluc3RydW1lbnRpbmdBZ2Vu
dHMuZW5hYmxlZEluc3BlY3RvckFuaW1hdGlvbkFnZW50KCkpCisgICAgaWYgKGF1dG8qIGFuaW1h
dGlvbkFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5lbmFibGVkQW5pbWF0aW9uQWdlbnQoKSkK
ICAgICAgICAgYW5pbWF0aW9uQWdlbnQtPmZyYW1lTmF2aWdhdGVkKGZyYW1lKTsKIAotICAgIGlm
IChJbnNwZWN0b3JET01BZ2VudCogZG9tQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmluc3Bl
Y3RvckRPTUFnZW50KCkpCisgICAgaWYgKGF1dG8qIGRvbUFnZW50ID0gaW5zdHJ1bWVudGluZ0Fn
ZW50cy5wZXJzaXN0ZW50RE9NQWdlbnQoKSkKICAgICAgICAgZG9tQWdlbnQtPmRpZENvbW1pdExv
YWQoZnJhbWUuZG9jdW1lbnQoKSk7CiAKLSAgICBpZiAoSW5zcGVjdG9yUGFnZUFnZW50KiBwYWdl
QWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3RvclBhZ2VBZ2VudCgpKQorICAgIGlm
IChhdXRvKiBwYWdlQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmVuYWJsZWRQYWdlQWdlbnQo
KSkKICAgICAgICAgcGFnZUFnZW50LT5mcmFtZU5hdmlnYXRlZChmcmFtZSk7CiAKICAgICBpZiAo
ZnJhbWUuaXNNYWluRnJhbWUoKSkgewotICAgICAgICBpZiAoSW5zcGVjdG9yVGltZWxpbmVBZ2Vu
dCogdGltZWxpbmVBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMudHJhY2tpbmdJbnNwZWN0b3JU
aW1lbGluZUFnZW50KCkpCisgICAgICAgIGlmIChhdXRvKiB0aW1lbGluZUFnZW50ID0gaW5zdHJ1
bWVudGluZ0FnZW50cy50cmFja2luZ1RpbWVsaW5lQWdlbnQoKSkKICAgICAgICAgICAgIHRpbWVs
aW5lQWdlbnQtPm1haW5GcmFtZU5hdmlnYXRlZCgpOwogICAgIH0KIH0KIAogdm9pZCBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb246OmZyYW1lRG9jdW1lbnRVcGRhdGVkSW1wbChJbnN0cnVtZW50aW5n
QWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBGcmFtZSYgZnJhbWUpCiB7Ci0gICAgaWYgKElu
c3BlY3RvckRPTUFnZW50KiBkb21BZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9y
RE9NQWdlbnQoKSkKKyAgICBpZiAoYXV0byogZG9tQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRz
LnBlcnNpc3RlbnRET01BZ2VudCgpKQogICAgICAgICBkb21BZ2VudC0+ZnJhbWVEb2N1bWVudFVw
ZGF0ZWQoZnJhbWUpOwogCi0gICAgaWYgKGF1dG8qIHBhZ2VET01EZWJ1Z2dlckFnZW50ID0gaW5z
dHJ1bWVudGluZ0FnZW50cy5wYWdlRE9NRGVidWdnZXJBZ2VudCgpKQorICAgIGlmIChhdXRvKiBw
YWdlRE9NRGVidWdnZXJBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuZW5hYmxlZFBhZ2VET01E
ZWJ1Z2dlckFnZW50KCkpCiAgICAgICAgIHBhZ2VET01EZWJ1Z2dlckFnZW50LT5mcmFtZURvY3Vt
ZW50VXBkYXRlZChmcmFtZSk7CiB9CiAKIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjps
b2FkZXJEZXRhY2hlZEZyb21GcmFtZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVu
dGluZ0FnZW50cywgRG9jdW1lbnRMb2FkZXImIGxvYWRlcikKIHsKLSAgICBpZiAoSW5zcGVjdG9y
UGFnZUFnZW50KiBpbnNwZWN0b3JQYWdlQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmluc3Bl
Y3RvclBhZ2VBZ2VudCgpKQorICAgIGlmIChhdXRvKiBpbnNwZWN0b3JQYWdlQWdlbnQgPSBpbnN0
cnVtZW50aW5nQWdlbnRzLmVuYWJsZWRQYWdlQWdlbnQoKSkKICAgICAgICAgaW5zcGVjdG9yUGFn
ZUFnZW50LT5sb2FkZXJEZXRhY2hlZEZyb21GcmFtZShsb2FkZXIpOwogfQogCiB2b2lkIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6ZnJhbWVTdGFydGVkTG9hZGluZ0ltcGwoSW5zdHJ1bWVudGlu
Z0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgRnJhbWUmIGZyYW1lKQogewogICAgIGlmIChm
cmFtZS5pc01haW5GcmFtZSgpKSB7Ci0gICAgICAgIGlmIChhdXRvKiBwYWdlRGVidWdnZXJBZ2Vu
dCA9IGluc3RydW1lbnRpbmdBZ2VudHMucGFnZURlYnVnZ2VyQWdlbnQoKSkKKyAgICAgICAgaWYg
KGF1dG8qIHBhZ2VEZWJ1Z2dlckFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5lbmFibGVkUGFn
ZURlYnVnZ2VyQWdlbnQoKSkKICAgICAgICAgICAgIHBhZ2VEZWJ1Z2dlckFnZW50LT5tYWluRnJh
bWVTdGFydGVkTG9hZGluZygpOwotICAgICAgICBpZiAoSW5zcGVjdG9yVGltZWxpbmVBZ2VudCog
dGltZWxpbmVBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yVGltZWxpbmVBZ2Vu
dCgpKQorICAgICAgICBpZiAoYXV0byogdGltZWxpbmVBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2Vu
dHMuZW5hYmxlZFRpbWVsaW5lQWdlbnQoKSkKICAgICAgICAgICAgIHRpbWVsaW5lQWdlbnQtPm1h
aW5GcmFtZVN0YXJ0ZWRMb2FkaW5nKCk7CiAgICAgfQogCi0gICAgaWYgKEluc3BlY3RvclBhZ2VB
Z2VudCogaW5zcGVjdG9yUGFnZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JQ
YWdlQWdlbnQoKSkKKyAgICBpZiAoYXV0byogaW5zcGVjdG9yUGFnZUFnZW50ID0gaW5zdHJ1bWVu
dGluZ0FnZW50cy5lbmFibGVkUGFnZUFnZW50KCkpCiAgICAgICAgIGluc3BlY3RvclBhZ2VBZ2Vu
dC0+ZnJhbWVTdGFydGVkTG9hZGluZyhmcmFtZSk7CiB9CiAKIHZvaWQgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjpmcmFtZVN0b3BwZWRMb2FkaW5nSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBp
bnN0cnVtZW50aW5nQWdlbnRzLCBGcmFtZSYgZnJhbWUpCiB7CiAgICAgaWYgKGZyYW1lLmlzTWFp
bkZyYW1lKCkpIHsKLSAgICAgICAgaWYgKGF1dG8qIHBhZ2VEZWJ1Z2dlckFnZW50ID0gaW5zdHJ1
bWVudGluZ0FnZW50cy5wYWdlRGVidWdnZXJBZ2VudCgpKQorICAgICAgICBpZiAoYXV0byogcGFn
ZURlYnVnZ2VyQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmVuYWJsZWRQYWdlRGVidWdnZXJB
Z2VudCgpKQogICAgICAgICAgICAgcGFnZURlYnVnZ2VyQWdlbnQtPm1haW5GcmFtZVN0b3BwZWRM
b2FkaW5nKCk7CiAgICAgfQogCi0gICAgaWYgKEluc3BlY3RvclBhZ2VBZ2VudCogaW5zcGVjdG9y
UGFnZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JQYWdlQWdlbnQoKSkKKyAg
ICBpZiAoYXV0byogaW5zcGVjdG9yUGFnZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5lbmFi
bGVkUGFnZUFnZW50KCkpCiAgICAgICAgIGluc3BlY3RvclBhZ2VBZ2VudC0+ZnJhbWVTdG9wcGVk
TG9hZGluZyhmcmFtZSk7CiB9CiAKIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpmcmFt
ZVNjaGVkdWxlZE5hdmlnYXRpb25JbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRp
bmdBZ2VudHMsIEZyYW1lJiBmcmFtZSwgU2Vjb25kcyBkZWxheSkKIHsKLSAgICBpZiAoSW5zcGVj
dG9yUGFnZUFnZW50KiBpbnNwZWN0b3JQYWdlQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmlu
c3BlY3RvclBhZ2VBZ2VudCgpKQorICAgIGlmIChhdXRvKiBpbnNwZWN0b3JQYWdlQWdlbnQgPSBp
bnN0cnVtZW50aW5nQWdlbnRzLmVuYWJsZWRQYWdlQWdlbnQoKSkKICAgICAgICAgaW5zcGVjdG9y
UGFnZUFnZW50LT5mcmFtZVNjaGVkdWxlZE5hdmlnYXRpb24oZnJhbWUsIGRlbGF5KTsKIH0KIAog
dm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmZyYW1lQ2xlYXJlZFNjaGVkdWxlZE5hdmln
YXRpb25JbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIEZyYW1l
JiBmcmFtZSkKIHsKLSAgICBpZiAoSW5zcGVjdG9yUGFnZUFnZW50KiBpbnNwZWN0b3JQYWdlQWdl
bnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3RvclBhZ2VBZ2VudCgpKQorICAgIGlmIChh
dXRvKiBpbnNwZWN0b3JQYWdlQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmVuYWJsZWRQYWdl
QWdlbnQoKSkKICAgICAgICAgaW5zcGVjdG9yUGFnZUFnZW50LT5mcmFtZUNsZWFyZWRTY2hlZHVs
ZWROYXZpZ2F0aW9uKGZyYW1lKTsKIH0KIAogI2lmIEVOQUJMRShEQVJLX01PREVfQ1NTKSB8fCBI
QVZFKE9TX0RBUktfTU9ERV9TVVBQT1JUKQogdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OmRlZmF1bHRBcHBlYXJhbmNlRGlkQ2hhbmdlSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0
cnVtZW50aW5nQWdlbnRzLCBib29sIHVzZURhcmtBcHBlYXJhbmNlKQogewotICAgIGlmIChJbnNw
ZWN0b3JQYWdlQWdlbnQqIGluc3BlY3RvclBhZ2VBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMu
aW5zcGVjdG9yUGFnZUFnZW50KCkpCisgICAgaWYgKGF1dG8qIGluc3BlY3RvclBhZ2VBZ2VudCA9
IGluc3RydW1lbnRpbmdBZ2VudHMuZW5hYmxlZFBhZ2VBZ2VudCgpKQogICAgICAgICBpbnNwZWN0
b3JQYWdlQWdlbnQtPmRlZmF1bHRBcHBlYXJhbmNlRGlkQ2hhbmdlKHVzZURhcmtBcHBlYXJhbmNl
KTsKIH0KICNlbmRpZgpAQCAtODA3LDI4ICs4MDcsMjggQEAgdm9pZCBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OndpbGxEZXN0cm95Q2FjaGVkUmVzb3VyY2VJbXBsKENhY2hlZFJlc291cmNlJiBj
YWMKICAgICAgICAgcmV0dXJuOwogCiAgICAgZm9yIChhdXRvKiBpbnN0cnVtZW50aW5nQWdlbnQg
OiAqc19pbnN0cnVtZW50aW5nQWdlbnRzU2V0KSB7Ci0gICAgICAgIGlmIChJbnNwZWN0b3JOZXR3
b3JrQWdlbnQqIGluc3BlY3Rvck5ldHdvcmtBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudC0+aW5z
cGVjdG9yTmV0d29ya0FnZW50KCkpCisgICAgICAgIGlmIChhdXRvKiBpbnNwZWN0b3JOZXR3b3Jr
QWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnQtPmVuYWJsZWROZXR3b3JrQWdlbnQoKSkKICAgICAg
ICAgICAgIGluc3BlY3Rvck5ldHdvcmtBZ2VudC0+d2lsbERlc3Ryb3lDYWNoZWRSZXNvdXJjZShj
YWNoZWRSZXNvdXJjZSk7CiAgICAgfQogfQogCiBib29sIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6d2lsbEludGVyY2VwdFJlcXVlc3RJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1l
bnRpbmdBZ2VudHMsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKIHsKLSAgICBpZiAo
YXV0byogbmV0d29ya0FnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JOZXR3b3Jr
QWdlbnQoKSkKKyAgICBpZiAoYXV0byogbmV0d29ya0FnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50
cy5lbmFibGVkTmV0d29ya0FnZW50KCkpCiAgICAgICAgIHJldHVybiBuZXR3b3JrQWdlbnQtPndp
bGxJbnRlcmNlcHRSZXF1ZXN0KHJlcXVlc3QpOwogICAgIHJldHVybiBmYWxzZTsKIH0KIAogYm9v
bCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnNob3VsZEludGVyY2VwdFJlc3BvbnNlSW1wbChJ
bnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJiByZXNwb25zZSkKIHsKLSAgICBpZiAoYXV0byogbmV0d29ya0FnZW50ID0gaW5zdHJ1
bWVudGluZ0FnZW50cy5pbnNwZWN0b3JOZXR3b3JrQWdlbnQoKSkKKyAgICBpZiAoYXV0byogbmV0
d29ya0FnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5lbmFibGVkTmV0d29ya0FnZW50KCkpCiAg
ICAgICAgIHJldHVybiBuZXR3b3JrQWdlbnQtPnNob3VsZEludGVyY2VwdFJlc3BvbnNlKHJlc3Bv
bnNlKTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjppbnRlcmNlcHRSZXNwb25zZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVu
dGluZ0FnZW50cywgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIHVuc2lnbmVkIGxv
bmcgaWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJiwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4pPiYmIGhhbmRsZXIpCiB7Ci0gICAgaWYgKGF1dG8q
IG5ldHdvcmtBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yTmV0d29ya0FnZW50
KCkpCisgICAgaWYgKGF1dG8qIG5ldHdvcmtBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuZW5h
YmxlZE5ldHdvcmtBZ2VudCgpKQogICAgICAgICBuZXR3b3JrQWdlbnQtPmludGVyY2VwdFJlc3Bv
bnNlKHJlc3BvbnNlLCBpZGVudGlmaWVyLCBXVEZNb3ZlKGhhbmRsZXIpKTsKIH0KIApAQCAtODQ3
LDEwICs4NDcsMTAgQEAgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmFkZE1lc3NhZ2VU
b0NvbnNvbGVJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3QKICAgICBNZXNzYWdlVHlwZSB0
eXBlID0gbWVzc2FnZS0+dHlwZSgpOwogICAgIFN0cmluZyBtZXNzYWdlVGV4dCA9IG1lc3NhZ2Ut
Pm1lc3NhZ2UoKTsKIAotICAgIGlmIChXZWJDb25zb2xlQWdlbnQqIGNvbnNvbGVBZ2VudCA9IGlu
c3RydW1lbnRpbmdBZ2VudHMud2ViQ29uc29sZUFnZW50KCkpCisgICAgaWYgKGF1dG8qIGNvbnNv
bGVBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMud2ViQ29uc29sZUFnZW50KCkpCiAgICAgICAg
IGNvbnNvbGVBZ2VudC0+YWRkTWVzc2FnZVRvQ29uc29sZShXVEZNb3ZlKG1lc3NhZ2UpKTsKICAg
ICAvLyBGSVhNRTogVGhpcyBzaG91bGQganVzdCBwYXNzIHRoZSBtZXNzYWdlIG9uIHRvIHRoZSBk
ZWJ1Z2dlciBhZ2VudC4gSmF2YVNjcmlwdENvcmUgSW5zcGVjdG9yRGVidWdnZXJBZ2VudCBzaG91
bGQga25vdyBDb25zb2xlIE1lc3NhZ2VUeXBlcy4KLSAgICBpZiAoYXV0byogd2ViRGVidWdnZXJB
Z2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMud2ViRGVidWdnZXJBZ2VudCgpKSB7CisgICAgaWYg
KGF1dG8qIHdlYkRlYnVnZ2VyQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmVuYWJsZWRXZWJE
ZWJ1Z2dlckFnZW50KCkpIHsKICAgICAgICAgaWYgKGlzQ29uc29sZUFzc2VydE1lc3NhZ2Uoc291
cmNlLCB0eXBlKSkKICAgICAgICAgICAgIHdlYkRlYnVnZ2VyQWdlbnQtPmhhbmRsZUNvbnNvbGVB
c3NlcnQobWVzc2FnZVRleHQpOwogICAgIH0KQEAgLTg3Niw3ICs4NzYsNyBAQCB2b2lkIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6Y29uc29sZUNvdW50UmVzZXRJbXBsKEluc3RydW1lbnRpbmdB
Z2VudHMmIGluc3RydQogCiB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6dGFrZUhlYXBT
bmFwc2hvdEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgY29u
c3QgU3RyaW5nJiB0aXRsZSkKIHsKLSAgICBpZiAoV2ViQ29uc29sZUFnZW50KiBjb25zb2xlQWdl
bnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLndlYkNvbnNvbGVBZ2VudCgpKQorICAgIGlmIChhdXRv
KiBjb25zb2xlQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLndlYkNvbnNvbGVBZ2VudCgpKQog
ICAgICAgICBjb25zb2xlQWdlbnQtPnRha2VIZWFwU25hcHNob3QodGl0bGUpOwogfQogCkBAIC04
ODUsNyArODg1LDcgQEAgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnN0YXJ0Q29uc29s
ZVRpbWluZ0ltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHIKICAgICBpZiAoTElLRUxZKCFp
bnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3RvckVudmlyb25tZW50KCkuZGV2ZWxvcGVyRXh0cmFz
RW5hYmxlZCgpKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKGF1dG8qIHRpbWVsaW5lQWdl
bnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLnRyYWNraW5nSW5zcGVjdG9yVGltZWxpbmVBZ2VudCgp
KQorICAgIGlmIChhdXRvKiB0aW1lbGluZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy50cmFj
a2luZ1RpbWVsaW5lQWdlbnQoKSkKICAgICAgICAgdGltZWxpbmVBZ2VudC0+dGltZShmcmFtZSwg
bGFiZWwpOwogICAgIGlmIChhdXRvKiBjb25zb2xlQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRz
LndlYkNvbnNvbGVBZ2VudCgpKQogICAgICAgICBjb25zb2xlQWdlbnQtPnN0YXJ0VGltaW5nKGV4
ZWMsIGxhYmVsKTsKQEAgLTkxNiw3ICs5MTYsNyBAQCB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6c3RvcENvbnNvbGVUaW1pbmdJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydQog
CiAgICAgaWYgKGF1dG8qIGNvbnNvbGVBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMud2ViQ29u
c29sZUFnZW50KCkpCiAgICAgICAgIGNvbnNvbGVBZ2VudC0+c3RvcFRpbWluZyhleGVjLCBsYWJl
bCk7Ci0gICAgaWYgKGF1dG8qIHRpbWVsaW5lQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLnRy
YWNraW5nSW5zcGVjdG9yVGltZWxpbmVBZ2VudCgpKQorICAgIGlmIChhdXRvKiB0aW1lbGluZUFn
ZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy50cmFja2luZ1RpbWVsaW5lQWdlbnQoKSkKICAgICAg
ICAgdGltZWxpbmVBZ2VudC0+dGltZUVuZChmcmFtZSwgbGFiZWwpOwogfQogCkBAIC05MzEsNyAr
OTMxLDcgQEAgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnN0b3BDb25zb2xlVGltaW5n
SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnUKIAogdm9pZCBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OmNvbnNvbGVUaW1lU3RhbXBJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3Ry
dW1lbnRpbmdBZ2VudHMsIEZyYW1lJiBmcmFtZSwgUmVmPFNjcmlwdEFyZ3VtZW50cz4mJiBhcmd1
bWVudHMpCiB7Ci0gICAgaWYgKEluc3BlY3RvclRpbWVsaW5lQWdlbnQqIHRpbWVsaW5lQWdlbnQg
PSBpbnN0cnVtZW50aW5nQWdlbnRzLnRyYWNraW5nSW5zcGVjdG9yVGltZWxpbmVBZ2VudCgpKSB7
CisgICAgaWYgKGF1dG8qIHRpbWVsaW5lQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLnRyYWNr
aW5nVGltZWxpbmVBZ2VudCgpKSB7CiAgICAgICAgIFN0cmluZyBtZXNzYWdlOwogICAgICAgICBh
cmd1bWVudHMtPmdldEZpcnN0QXJndW1lbnRBc1N0cmluZyhtZXNzYWdlKTsKICAgICAgICAgdGlt
ZWxpbmVBZ2VudC0+ZGlkVGltZVN0YW1wKGZyYW1lLCBtZXNzYWdlKTsKQEAgLTk0MCwxNjAgKzk0
MCwxNjAgQEAgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmNvbnNvbGVUaW1lU3RhbXBJ
bXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW0KIAogdm9pZCBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OnN0YXJ0UHJvZmlsaW5nSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVt
ZW50aW5nQWdlbnRzLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBleGVjLCBjb25zdCBTdHJpbmcmIHRp
dGxlKQogewotICAgIGlmIChJbnNwZWN0b3JUaW1lbGluZUFnZW50KiB0aW1lbGluZUFnZW50ID0g
aW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JUaW1lbGluZUFnZW50KCkpCisgICAgaWYgKGF1
dG8qIHRpbWVsaW5lQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmVuYWJsZWRUaW1lbGluZUFn
ZW50KCkpCiAgICAgICAgIHRpbWVsaW5lQWdlbnQtPnN0YXJ0RnJvbUNvbnNvbGUoZXhlYywgdGl0
bGUpOwogfQogCiB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6c3RvcFByb2ZpbGluZ0lt
cGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgSlNDOjpKU0dsb2Jh
bE9iamVjdCogZXhlYywgY29uc3QgU3RyaW5nJiB0aXRsZSkKIHsKLSAgICBpZiAoSW5zcGVjdG9y
VGltZWxpbmVBZ2VudCogdGltZWxpbmVBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVj
dG9yVGltZWxpbmVBZ2VudCgpKQorICAgIGlmIChhdXRvKiB0aW1lbGluZUFnZW50ID0gaW5zdHJ1
bWVudGluZ0FnZW50cy5lbmFibGVkVGltZWxpbmVBZ2VudCgpKQogICAgICAgICB0aW1lbGluZUFn
ZW50LT5zdG9wRnJvbUNvbnNvbGUoZXhlYywgdGl0bGUpOwogfQogCiB2b2lkIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6Y29uc29sZVN0YXJ0UmVjb3JkaW5nQ2FudmFzSW1wbChJbnN0cnVtZW50
aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBDYW52YXNSZW5kZXJpbmdDb250ZXh0JiBj
b250ZXh0LCBKU0M6OkpTR2xvYmFsT2JqZWN0JiBleGVjLCBKU0M6OkpTT2JqZWN0KiBvcHRpb25z
KQogewotICAgIGlmIChJbnNwZWN0b3JDYW52YXNBZ2VudCogY2FudmFzQWdlbnQgPSBpbnN0cnVt
ZW50aW5nQWdlbnRzLmluc3BlY3RvckNhbnZhc0FnZW50KCkpCisgICAgaWYgKGF1dG8qIGNhbnZh
c0FnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5lbmFibGVkQ2FudmFzQWdlbnQoKSkKICAgICAg
ICAgY2FudmFzQWdlbnQtPmNvbnNvbGVTdGFydFJlY29yZGluZ0NhbnZhcyhjb250ZXh0LCBleGVj
LCBvcHRpb25zKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmNvbnNvbGVT
dG9wUmVjb3JkaW5nQ2FudmFzSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5n
QWdlbnRzLCBDYW52YXNSZW5kZXJpbmdDb250ZXh0JiBjb250ZXh0KQogewotICAgIGlmIChhdXRv
KiBjYW52YXNBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yQ2FudmFzQWdlbnQo
KSkKKyAgICBpZiAoYXV0byogY2FudmFzQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmVuYWJs
ZWRDYW52YXNBZ2VudCgpKQogICAgICAgICBjYW52YXNBZ2VudC0+Y29uc29sZVN0b3BSZWNvcmRp
bmdDYW52YXMoY29udGV4dCk7CiB9CiAKIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpk
aWRPcGVuRGF0YWJhc2VJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2Vu
dHMsIERhdGFiYXNlJiBkYXRhYmFzZSkKIHsKLSAgICBpZiAoYXV0byogZGF0YWJhc2VBZ2VudCA9
IGluc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yRGF0YWJhc2VBZ2VudCgpKQorICAgIGlmIChh
dXRvKiBkYXRhYmFzZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5lbmFibGVkRGF0YWJhc2VB
Z2VudCgpKQogICAgICAgICBkYXRhYmFzZUFnZW50LT5kaWRPcGVuRGF0YWJhc2UoZGF0YWJhc2Up
OwogfQogCiB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRGlzcGF0Y2hET01TdG9y
YWdlRXZlbnRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIGNv
bnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIG9sZFZhbHVlLCBjb25zdCBTdHJpbmcmIG5l
d1ZhbHVlLCBTdG9yYWdlVHlwZSBzdG9yYWdlVHlwZSwgU2VjdXJpdHlPcmlnaW4qIHNlY3VyaXR5
T3JpZ2luKQogewotICAgIGlmIChJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQqIGRvbVN0b3JhZ2VB
Z2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50KCkpCisg
ICAgaWYgKGF1dG8qIGRvbVN0b3JhZ2VBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuZW5hYmxl
ZERPTVN0b3JhZ2VBZ2VudCgpKQogICAgICAgICBkb21TdG9yYWdlQWdlbnQtPmRpZERpc3BhdGNo
RE9NU3RvcmFnZUV2ZW50KGtleSwgb2xkVmFsdWUsIG5ld1ZhbHVlLCBzdG9yYWdlVHlwZSwgc2Vj
dXJpdHlPcmlnaW4pOwogfQogCiBib29sIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6c2hvdWxk
V2FpdEZvckRlYnVnZ2VyT25TdGFydEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVu
dGluZ0FnZW50cykKIHsKLSAgICBpZiAoSW5zcGVjdG9yV29ya2VyQWdlbnQqIHdvcmtlckFnZW50
ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JXb3JrZXJBZ2VudCgpKQorICAgIGlmIChh
dXRvKiB3b3JrZXJBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMucGVyc2lzdGVudFdvcmtlckFn
ZW50KCkpCiAgICAgICAgIHJldHVybiB3b3JrZXJBZ2VudC0+c2hvdWxkV2FpdEZvckRlYnVnZ2Vy
T25TdGFydCgpOwogICAgIHJldHVybiBmYWxzZTsKIH0KIAogdm9pZCBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OndvcmtlclN0YXJ0ZWRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1l
bnRpbmdBZ2VudHMsIFdvcmtlckluc3BlY3RvclByb3h5JiBwcm94eSkKIHsKLSAgICBpZiAoSW5z
cGVjdG9yV29ya2VyQWdlbnQqIHdvcmtlckFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5pbnNw
ZWN0b3JXb3JrZXJBZ2VudCgpKQorICAgIGlmIChhdXRvKiB3b3JrZXJBZ2VudCA9IGluc3RydW1l
bnRpbmdBZ2VudHMucGVyc2lzdGVudFdvcmtlckFnZW50KCkpCiAgICAgICAgIHdvcmtlckFnZW50
LT53b3JrZXJTdGFydGVkKHByb3h5KTsKIH0KIAogdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OndvcmtlclRlcm1pbmF0ZWRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRp
bmdBZ2VudHMsIFdvcmtlckluc3BlY3RvclByb3h5JiBwcm94eSkKIHsKLSAgICBpZiAoSW5zcGVj
dG9yV29ya2VyQWdlbnQqIHdvcmtlckFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0
b3JXb3JrZXJBZ2VudCgpKQorICAgIGlmIChhdXRvKiB3b3JrZXJBZ2VudCA9IGluc3RydW1lbnRp
bmdBZ2VudHMucGVyc2lzdGVudFdvcmtlckFnZW50KCkpCiAgICAgICAgIHdvcmtlckFnZW50LT53
b3JrZXJUZXJtaW5hdGVkKHByb3h5KTsKIH0KIAogdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OmRpZENyZWF0ZVdlYlNvY2tldEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVu
dGluZ0FnZW50cywgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBVUkwmIHJlcXVlc3RV
UkwpCiB7Ci0gICAgaWYgKEluc3BlY3Rvck5ldHdvcmtBZ2VudCogbmV0d29ya0FnZW50ID0gaW5z
dHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JOZXR3b3JrQWdlbnQoKSkKKyAgICBpZiAoYXV0byog
bmV0d29ya0FnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5lbmFibGVkTmV0d29ya0FnZW50KCkp
CiAgICAgICAgIG5ldHdvcmtBZ2VudC0+ZGlkQ3JlYXRlV2ViU29ja2V0KGlkZW50aWZpZXIsIHJl
cXVlc3RVUkwpOwogfQogCiB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFNlbmRX
ZWJTb2NrZXRIYW5kc2hha2VSZXF1ZXN0SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVt
ZW50aW5nQWdlbnRzLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVx
dWVzdCYgcmVxdWVzdCkKIHsKLSAgICBpZiAoSW5zcGVjdG9yTmV0d29ya0FnZW50KiBuZXR3b3Jr
QWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3Rvck5ldHdvcmtBZ2VudCgpKQorICAg
IGlmIChhdXRvKiBuZXR3b3JrQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmVuYWJsZWROZXR3
b3JrQWdlbnQoKSkKICAgICAgICAgbmV0d29ya0FnZW50LT53aWxsU2VuZFdlYlNvY2tldEhhbmRz
aGFrZVJlcXVlc3QoaWRlbnRpZmllciwgcmVxdWVzdCk7CiB9CiAKIHZvaWQgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2VJbXBsKElu
c3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIHVuc2lnbmVkIGxvbmcgaWRl
bnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7Ci0gICAgaWYgKElu
c3BlY3Rvck5ldHdvcmtBZ2VudCogbmV0d29ya0FnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5p
bnNwZWN0b3JOZXR3b3JrQWdlbnQoKSkKKyAgICBpZiAoYXV0byogbmV0d29ya0FnZW50ID0gaW5z
dHJ1bWVudGluZ0FnZW50cy5lbmFibGVkTmV0d29ya0FnZW50KCkpCiAgICAgICAgIG5ldHdvcmtB
Z2VudC0+ZGlkUmVjZWl2ZVdlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlKGlkZW50aWZpZXIsIHJl
c3BvbnNlKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENsb3NlV2Vi
U29ja2V0SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCB1bnNp
Z25lZCBsb25nIGlkZW50aWZpZXIpCiB7Ci0gICAgaWYgKEluc3BlY3Rvck5ldHdvcmtBZ2VudCog
bmV0d29ya0FnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JOZXR3b3JrQWdlbnQo
KSkKKyAgICBpZiAoYXV0byogbmV0d29ya0FnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5lbmFi
bGVkTmV0d29ya0FnZW50KCkpCiAgICAgICAgIG5ldHdvcmtBZ2VudC0+ZGlkQ2xvc2VXZWJTb2Nr
ZXQoaWRlbnRpZmllcik7CiB9CiAKIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRS
ZWNlaXZlV2ViU29ja2V0RnJhbWVJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRp
bmdBZ2VudHMsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgV2ViU29ja2V0RnJhbWUm
IGZyYW1lKQogewotICAgIGlmIChJbnNwZWN0b3JOZXR3b3JrQWdlbnQqIG5ldHdvcmtBZ2VudCA9
IGluc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yTmV0d29ya0FnZW50KCkpCisgICAgaWYgKGF1
dG8qIG5ldHdvcmtBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuZW5hYmxlZE5ldHdvcmtBZ2Vu
dCgpKQogICAgICAgICBuZXR3b3JrQWdlbnQtPmRpZFJlY2VpdmVXZWJTb2NrZXRGcmFtZShpZGVu
dGlmaWVyLCBmcmFtZSk7CiB9CiAKIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRS
ZWNlaXZlV2ViU29ja2V0RnJhbWVFcnJvckltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1
bWVudGluZ0FnZW50cywgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGVy
cm9yTWVzc2FnZSkKIHsKLSAgICBpZiAoSW5zcGVjdG9yTmV0d29ya0FnZW50KiBuZXR3b3JrQWdl
bnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3Rvck5ldHdvcmtBZ2VudCgpKQorICAgIGlm
IChhdXRvKiBuZXR3b3JrQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmVuYWJsZWROZXR3b3Jr
QWdlbnQoKSkKICAgICAgICAgbmV0d29ya0FnZW50LT5kaWRSZWNlaXZlV2ViU29ja2V0RnJhbWVF
cnJvcihpZGVudGlmaWVyLCBlcnJvck1lc3NhZ2UpOwogfQogCiB2b2lkIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6ZGlkU2VuZFdlYlNvY2tldEZyYW1lSW1wbChJbnN0cnVtZW50aW5nQWdlbnRz
JiBpbnN0cnVtZW50aW5nQWdlbnRzLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFdl
YlNvY2tldEZyYW1lJiBmcmFtZSkKIHsKLSAgICBpZiAoSW5zcGVjdG9yTmV0d29ya0FnZW50KiBu
ZXR3b3JrQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3Rvck5ldHdvcmtBZ2VudCgp
KQorICAgIGlmIChhdXRvKiBuZXR3b3JrQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmVuYWJs
ZWROZXR3b3JrQWdlbnQoKSkKICAgICAgICAgbmV0d29ya0FnZW50LT5kaWRTZW5kV2ViU29ja2V0
RnJhbWUoaWRlbnRpZmllciwgZnJhbWUpOwogfQogCiB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6ZGlkQ2hhbmdlQ1NTQ2FudmFzQ2xpZW50Tm9kZXNJbXBsKEluc3RydW1lbnRpbmdBZ2Vu
dHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIENhbnZhc0Jhc2UmIGNhbnZhc0Jhc2UpCiB7Ci0gICAg
aWYgKEluc3BlY3RvckNhbnZhc0FnZW50KiBjYW52YXNBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2Vu
dHMuaW5zcGVjdG9yQ2FudmFzQWdlbnQoKSkKKyAgICBpZiAoYXV0byogY2FudmFzQWdlbnQgPSBp
bnN0cnVtZW50aW5nQWdlbnRzLmVuYWJsZWRDYW52YXNBZ2VudCgpKQogICAgICAgICBjYW52YXNB
Z2VudC0+ZGlkQ2hhbmdlQ1NTQ2FudmFzQ2xpZW50Tm9kZXMoY2FudmFzQmFzZSk7CiB9CiAKIHZv
aWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRDcmVhdGVDYW52YXNSZW5kZXJpbmdDb250
ZXh0SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBDYW52YXNS
ZW5kZXJpbmdDb250ZXh0JiBjb250ZXh0KQogewotICAgIGlmIChJbnNwZWN0b3JDYW52YXNBZ2Vu
dCogY2FudmFzQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3RvckNhbnZhc0FnZW50
KCkpCisgICAgaWYgKGF1dG8qIGNhbnZhc0FnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5lbmFi
bGVkQ2FudmFzQWdlbnQoKSkKICAgICAgICAgY2FudmFzQWdlbnQtPmRpZENyZWF0ZUNhbnZhc1Jl
bmRlcmluZ0NvbnRleHQoY29udGV4dCk7CiB9CiAKIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjpkaWRDaGFuZ2VDYW52YXNNZW1vcnlJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3Ry
dW1lbnRpbmdBZ2VudHMsIENhbnZhc1JlbmRlcmluZ0NvbnRleHQmIGNvbnRleHQpCiB7Ci0gICAg
aWYgKEluc3BlY3RvckNhbnZhc0FnZW50KiBjYW52YXNBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2Vu
dHMuaW5zcGVjdG9yQ2FudmFzQWdlbnQoKSkKKyAgICBpZiAoYXV0byogY2FudmFzQWdlbnQgPSBp
bnN0cnVtZW50aW5nQWdlbnRzLmVuYWJsZWRDYW52YXNBZ2VudCgpKQogICAgICAgICBjYW52YXNB
Z2VudC0+ZGlkQ2hhbmdlQ2FudmFzTWVtb3J5KGNvbnRleHQpOwogfQogCiB2b2lkIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6cmVjb3JkQ2FudmFzQWN0aW9uSW1wbChJbnN0cnVtZW50aW5nQWdl
bnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBDYW52YXNSZW5kZXJpbmdDb250ZXh0JiBjYW52YXNS
ZW5kZXJpbmdDb250ZXh0LCBjb25zdCBTdHJpbmcmIG5hbWUsIHN0ZDo6aW5pdGlhbGl6ZXJfbGlz
dDxSZWNvcmRDYW52YXNBY3Rpb25WYXJpYW50PiYmIHBhcmFtZXRlcnMpCiB7Ci0gICAgaWYgKElu
c3BlY3RvckNhbnZhc0FnZW50KiBjYW52YXNBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuaW5z
cGVjdG9yQ2FudmFzQWdlbnQoKSkKKyAgICBpZiAoYXV0byogY2FudmFzQWdlbnQgPSBpbnN0cnVt
ZW50aW5nQWdlbnRzLmVuYWJsZWRDYW52YXNBZ2VudCgpKQogICAgICAgICBjYW52YXNBZ2VudC0+
cmVjb3JkQ2FudmFzQWN0aW9uKGNhbnZhc1JlbmRlcmluZ0NvbnRleHQsIG5hbWUsIFdURk1vdmUo
cGFyYW1ldGVycykpOwogfQogCiB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRmlu
aXNoUmVjb3JkaW5nQ2FudmFzRnJhbWVJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1l
bnRpbmdBZ2VudHMsIENhbnZhc1JlbmRlcmluZ0NvbnRleHQmIGNvbnRleHQsIGJvb2wgZm9yY2VE
aXNwYXRjaCkKIHsKLSAgICBpZiAoSW5zcGVjdG9yQ2FudmFzQWdlbnQqIGNhbnZhc0FnZW50ID0g
aW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JDYW52YXNBZ2VudCgpKQorICAgIGlmIChhdXRv
KiBjYW52YXNBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuZW5hYmxlZENhbnZhc0FnZW50KCkp
CiAgICAgICAgIGNhbnZhc0FnZW50LT5kaWRGaW5pc2hSZWNvcmRpbmdDYW52YXNGcmFtZShjb250
ZXh0LCBmb3JjZURpc3BhdGNoKTsKIH0KIAogI2lmIEVOQUJMRShXRUJHTCkKIHZvaWQgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRFbmFibGVFeHRlbnNpb25JbXBsKEluc3RydW1lbnRpbmdB
Z2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGNv
bnRleHRXZWJHTEJhc2UsIGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9uKQogewotICAgIGlmIChJbnNw
ZWN0b3JDYW52YXNBZ2VudCogY2FudmFzQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmluc3Bl
Y3RvckNhbnZhc0FnZW50KCkpCisgICAgaWYgKGF1dG8qIGNhbnZhc0FnZW50ID0gaW5zdHJ1bWVu
dGluZ0FnZW50cy5lbmFibGVkQ2FudmFzQWdlbnQoKSkKICAgICAgICAgY2FudmFzQWdlbnQtPmRp
ZEVuYWJsZUV4dGVuc2lvbihjb250ZXh0V2ViR0xCYXNlLCBleHRlbnNpb24pOwogfQogCiB2b2lk
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkQ3JlYXRlV2ViR0xQcm9ncmFtSW1wbChJbnN0
cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBXZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlJiBjb250ZXh0V2ViR0xCYXNlLCBXZWJHTFByb2dyYW0mIHByb2dyYW0pCiB7Ci0gICAg
aWYgKEluc3BlY3RvckNhbnZhc0FnZW50KiBjYW52YXNBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2Vu
dHMuaW5zcGVjdG9yQ2FudmFzQWdlbnQoKSkKKyAgICBpZiAoYXV0byogY2FudmFzQWdlbnQgPSBp
bnN0cnVtZW50aW5nQWdlbnRzLmVuYWJsZWRDYW52YXNBZ2VudCgpKQogICAgICAgICBjYW52YXNB
Z2VudC0+ZGlkQ3JlYXRlV2ViR0xQcm9ncmFtKGNvbnRleHRXZWJHTEJhc2UsIHByb2dyYW0pOwog
fQogCiB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbERlc3Ryb3lXZWJHTFByb2dy
YW1JbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIFdlYkdMUHJv
Z3JhbSYgcHJvZ3JhbSkKIHsKLSAgICBpZiAoSW5zcGVjdG9yQ2FudmFzQWdlbnQqIGNhbnZhc0Fn
ZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JDYW52YXNBZ2VudCgpKQorICAgIGlm
IChhdXRvKiBjYW52YXNBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuZW5hYmxlZENhbnZhc0Fn
ZW50KCkpCiAgICAgICAgIGNhbnZhc0FnZW50LT53aWxsRGVzdHJveVdlYkdMUHJvZ3JhbShwcm9n
cmFtKTsKIH0KIAogYm9vbCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmlzV2ViR0xQcm9ncmFt
RGlzYWJsZWRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIFdl
YkdMUHJvZ3JhbSYgcHJvZ3JhbSkKIHsKLSAgICBpZiAoSW5zcGVjdG9yQ2FudmFzQWdlbnQqIGNh
bnZhc0FnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JDYW52YXNBZ2VudCgpKQor
ICAgIGlmIChhdXRvKiBjYW52YXNBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuZW5hYmxlZENh
bnZhc0FnZW50KCkpCiAgICAgICAgIHJldHVybiBjYW52YXNBZ2VudC0+aXNXZWJHTFByb2dyYW1E
aXNhYmxlZChwcm9ncmFtKTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKIGJvb2wgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjppc1dlYkdMUHJvZ3JhbUhpZ2hsaWdodGVkSW1wbChJbnN0cnVtZW50
aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBXZWJHTFByb2dyYW0mIHByb2dyYW0pCiB7
Ci0gICAgaWYgKEluc3BlY3RvckNhbnZhc0FnZW50KiBjYW52YXNBZ2VudCA9IGluc3RydW1lbnRp
bmdBZ2VudHMuaW5zcGVjdG9yQ2FudmFzQWdlbnQoKSkKKyAgICBpZiAoYXV0byogY2FudmFzQWdl
bnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmVuYWJsZWRDYW52YXNBZ2VudCgpKQogICAgICAgICBy
ZXR1cm4gY2FudmFzQWdlbnQtPmlzV2ViR0xQcm9ncmFtSGlnaGxpZ2h0ZWQocHJvZ3JhbSk7CiAg
ICAgcmV0dXJuIGZhbHNlOwogfQpAQCAtMTEwMiwzMSArMTEwMiwzMSBAQCBib29sIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6aXNXZWJHTFByb2dyYW1IaWdobGlnaHRlZEltcGwoSW5zdHJ1bWVu
dGluZ0FnZW50cwogI2lmIEVOQUJMRShXRUJHUFUpCiB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6ZGlkQ3JlYXRlV2ViR1BVRGV2aWNlSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0
cnVtZW50aW5nQWdlbnRzLCBXZWJHUFVEZXZpY2UmIGRldmljZSkKIHsKLSAgICBpZiAoYXV0byog
Y2FudmFzQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3RvckNhbnZhc0FnZW50KCkp
CisgICAgaWYgKGF1dG8qIGNhbnZhc0FnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5lbmFibGVk
Q2FudmFzQWdlbnQoKSkKICAgICAgICAgY2FudmFzQWdlbnQtPmRpZENyZWF0ZVdlYkdQVURldmlj
ZShkZXZpY2UpOwogfQogCiB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbERlc3Ry
b3lXZWJHUFVEZXZpY2VJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2Vu
dHMsIFdlYkdQVURldmljZSYgZGV2aWNlKQogewotICAgIGlmIChhdXRvKiBjYW52YXNBZ2VudCA9
IGluc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yQ2FudmFzQWdlbnQoKSkKKyAgICBpZiAoYXV0
byogY2FudmFzQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmVuYWJsZWRDYW52YXNBZ2VudCgp
KQogICAgICAgICBjYW52YXNBZ2VudC0+d2lsbERlc3Ryb3lXZWJHUFVEZXZpY2UoZGV2aWNlKTsK
IH0KIAogdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxDb25maWd1cmVTd2FwQ2hh
aW5JbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIEdQVUNhbnZh
c0NvbnRleHQmIGNvbnRleHRHUFUsIFdlYkdQVVN3YXBDaGFpbiYgbmV3U3dhcENoYWluKQogewot
ICAgIGlmIChhdXRvKiBjYW52YXNBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9y
Q2FudmFzQWdlbnQoKSkKKyAgICBpZiAoYXV0byogY2FudmFzQWdlbnQgPSBpbnN0cnVtZW50aW5n
QWdlbnRzLmVuYWJsZWRDYW52YXNBZ2VudCgpKQogICAgICAgICBjYW52YXNBZ2VudC0+d2lsbENv
bmZpZ3VyZVN3YXBDaGFpbihjb250ZXh0R1BVLCBuZXdTd2FwQ2hhaW4pOwogfQogCiB2b2lkIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkQ3JlYXRlV2ViR1BVUGlwZWxpbmVJbXBsKEluc3Ry
dW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIFdlYkdQVURldmljZSYgZGV2aWNl
LCBXZWJHUFVQaXBlbGluZSYgcGlwZWxpbmUpCiB7Ci0gICAgaWYgKGF1dG8qIGNhbnZhc0FnZW50
ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JDYW52YXNBZ2VudCgpKQorICAgIGlmIChh
dXRvKiBjYW52YXNBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuZW5hYmxlZENhbnZhc0FnZW50
KCkpCiAgICAgICAgIGNhbnZhc0FnZW50LT5kaWRDcmVhdGVXZWJHUFVQaXBlbGluZShkZXZpY2Us
IHBpcGVsaW5lKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxEZXN0
cm95V2ViR1BVUGlwZWxpbmVJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdB
Z2VudHMsIFdlYkdQVVBpcGVsaW5lJiBwaXBlbGluZSkKIHsKLSAgICBpZiAoYXV0byogY2FudmFz
QWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3RvckNhbnZhc0FnZW50KCkpCisgICAg
aWYgKGF1dG8qIGNhbnZhc0FnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5lbmFibGVkQ2FudmFz
QWdlbnQoKSkKICAgICAgICAgY2FudmFzQWdlbnQtPndpbGxEZXN0cm95V2ViR1BVUGlwZWxpbmUo
cGlwZWxpbmUpOwogfQogCkBAIC0xMTM4LDY3ICsxMTM4LDY3IEBAIEluc3RydW1lbnRpbmdBZ2Vu
dHMqIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aW5zdHJ1bWVudGluZ0FnZW50c0ZvcldlYkdQ
VURldmljCiAKIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsQXBwbHlLZXlmcmFt
ZUVmZmVjdEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgRWxl
bWVudCYgdGFyZ2V0LCBLZXlmcmFtZUVmZmVjdCYgZWZmZWN0LCBDb21wdXRlZEVmZmVjdFRpbWlu
ZyBjb21wdXRlZFRpbWluZykKIHsKLSAgICBpZiAoYXV0byogYW5pbWF0aW9uQWdlbnQgPSBpbnN0
cnVtZW50aW5nQWdlbnRzLnRyYWNraW5nSW5zcGVjdG9yQW5pbWF0aW9uQWdlbnQoKSkKKyAgICBp
ZiAoYXV0byogYW5pbWF0aW9uQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLnRyYWNraW5nQW5p
bWF0aW9uQWdlbnQoKSkKICAgICAgICAgYW5pbWF0aW9uQWdlbnQtPndpbGxBcHBseUtleWZyYW1l
RWZmZWN0KHRhcmdldCwgZWZmZWN0LCBjb21wdXRlZFRpbWluZyk7CiB9CiAKIHZvaWQgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRDaGFuZ2VXZWJBbmltYXRpb25OYW1lSW1wbChJbnN0cnVt
ZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBXZWJBbmltYXRpb24mIGFuaW1hdGlv
bikKIHsKLSAgICBpZiAoYXV0byogYW5pbWF0aW9uQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRz
LmVuYWJsZWRJbnNwZWN0b3JBbmltYXRpb25BZ2VudCgpKQorICAgIGlmIChhdXRvKiBhbmltYXRp
b25BZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuZW5hYmxlZEFuaW1hdGlvbkFnZW50KCkpCiAg
ICAgICAgIGFuaW1hdGlvbkFnZW50LT5kaWRDaGFuZ2VXZWJBbmltYXRpb25OYW1lKGFuaW1hdGlv
bik7CiB9CiAKIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRTZXRXZWJBbmltYXRp
b25FZmZlY3RJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIFdl
YkFuaW1hdGlvbiYgYW5pbWF0aW9uKQogewotICAgIGlmIChhdXRvKiBhbmltYXRpb25BZ2VudCA9
IGluc3RydW1lbnRpbmdBZ2VudHMuZW5hYmxlZEluc3BlY3RvckFuaW1hdGlvbkFnZW50KCkpCisg
ICAgaWYgKGF1dG8qIGFuaW1hdGlvbkFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5lbmFibGVk
QW5pbWF0aW9uQWdlbnQoKSkKICAgICAgICAgYW5pbWF0aW9uQWdlbnQtPmRpZFNldFdlYkFuaW1h
dGlvbkVmZmVjdChhbmltYXRpb24pOwotICAgIGVsc2UgaWYgKGF1dG8qIGFuaW1hdGlvbkFnZW50
ID0gaW5zdHJ1bWVudGluZ0FnZW50cy50cmFja2luZ0luc3BlY3RvckFuaW1hdGlvbkFnZW50KCkp
CisgICAgZWxzZSBpZiAoYXV0byogYW5pbWF0aW9uQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRz
LnRyYWNraW5nQW5pbWF0aW9uQWdlbnQoKSkKICAgICAgICAgYW5pbWF0aW9uQWdlbnQtPmRpZFNl
dFdlYkFuaW1hdGlvbkVmZmVjdChhbmltYXRpb24pOwogfQogCiB2b2lkIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6ZGlkQ2hhbmdlV2ViQW5pbWF0aW9uRWZmZWN0VGltaW5nSW1wbChJbnN0cnVt
ZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBXZWJBbmltYXRpb24mIGFuaW1hdGlv
bikKIHsKLSAgICBpZiAoYXV0byogYW5pbWF0aW9uQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRz
LmVuYWJsZWRJbnNwZWN0b3JBbmltYXRpb25BZ2VudCgpKQorICAgIGlmIChhdXRvKiBhbmltYXRp
b25BZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuZW5hYmxlZEFuaW1hdGlvbkFnZW50KCkpCiAg
ICAgICAgIGFuaW1hdGlvbkFnZW50LT5kaWRDaGFuZ2VXZWJBbmltYXRpb25FZmZlY3RUaW1pbmco
YW5pbWF0aW9uKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENoYW5n
ZVdlYkFuaW1hdGlvbkVmZmVjdFRhcmdldEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1
bWVudGluZ0FnZW50cywgV2ViQW5pbWF0aW9uJiBhbmltYXRpb24pCiB7Ci0gICAgaWYgKGF1dG8q
IGFuaW1hdGlvbkFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5lbmFibGVkSW5zcGVjdG9yQW5p
bWF0aW9uQWdlbnQoKSkKKyAgICBpZiAoYXV0byogYW5pbWF0aW9uQWdlbnQgPSBpbnN0cnVtZW50
aW5nQWdlbnRzLmVuYWJsZWRBbmltYXRpb25BZ2VudCgpKQogICAgICAgICBhbmltYXRpb25BZ2Vu
dC0+ZGlkQ2hhbmdlV2ViQW5pbWF0aW9uRWZmZWN0VGFyZ2V0KGFuaW1hdGlvbik7CiB9CiAKIHZv
aWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRDcmVhdGVXZWJBbmltYXRpb25JbXBsKElu
c3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIFdlYkFuaW1hdGlvbiYgYW5p
bWF0aW9uKQogewotICAgIGlmIChhdXRvKiBhbmltYXRpb25BZ2VudCA9IGluc3RydW1lbnRpbmdB
Z2VudHMuZW5hYmxlZEluc3BlY3RvckFuaW1hdGlvbkFnZW50KCkpCisgICAgaWYgKGF1dG8qIGFu
aW1hdGlvbkFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5lbmFibGVkQW5pbWF0aW9uQWdlbnQo
KSkKICAgICAgICAgYW5pbWF0aW9uQWdlbnQtPmRpZENyZWF0ZVdlYkFuaW1hdGlvbihhbmltYXRp
b24pOwogfQogCiB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbERlc3Ryb3lXZWJB
bmltYXRpb25JbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIFdl
YkFuaW1hdGlvbiYgYW5pbWF0aW9uKQogewotICAgIGlmIChhdXRvKiBhbmltYXRpb25BZ2VudCA9
IGluc3RydW1lbnRpbmdBZ2VudHMuZW5hYmxlZEluc3BlY3RvckFuaW1hdGlvbkFnZW50KCkpCisg
ICAgaWYgKGF1dG8qIGFuaW1hdGlvbkFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5lbmFibGVk
QW5pbWF0aW9uQWdlbnQoKSkKICAgICAgICAgYW5pbWF0aW9uQWdlbnQtPndpbGxEZXN0cm95V2Vi
QW5pbWF0aW9uKGFuaW1hdGlvbik7Ci0gICAgZWxzZSBpZiAoYXV0byogYW5pbWF0aW9uQWdlbnQg
PSBpbnN0cnVtZW50aW5nQWdlbnRzLnRyYWNraW5nSW5zcGVjdG9yQW5pbWF0aW9uQWdlbnQoKSkK
KyAgICBlbHNlIGlmIChhdXRvKiBhbmltYXRpb25BZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMu
dHJhY2tpbmdBbmltYXRpb25BZ2VudCgpKQogICAgICAgICBhbmltYXRpb25BZ2VudC0+d2lsbERl
c3Ryb3lXZWJBbmltYXRpb24oYW5pbWF0aW9uKTsKIH0KIAogI2lmIEVOQUJMRShSRVNPVVJDRV9V
U0FHRSkKIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRIYW5kbGVNZW1vcnlQcmVz
c3VyZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgQ3JpdGlj
YWwgY3JpdGljYWwpCiB7Ci0gICAgaWYgKEluc3BlY3Rvck1lbW9yeUFnZW50KiBtZW1vcnlBZ2Vu
dCA9IGluc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yTWVtb3J5QWdlbnQoKSkKKyAgICBpZiAo
YXV0byogbWVtb3J5QWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmVuYWJsZWRNZW1vcnlBZ2Vu
dCgpKQogICAgICAgICBtZW1vcnlBZ2VudC0+ZGlkSGFuZGxlTWVtb3J5UHJlc3N1cmUoY3JpdGlj
YWwpOwogfQogI2VuZGlmCiAKIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpuZXR3b3Jr
U3RhdGVDaGFuZ2VkSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRz
KQogewotICAgIGlmIChJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQqIGFwcGxpY2F0aW9u
Q2FjaGVBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yQXBwbGljYXRpb25DYWNo
ZUFnZW50KCkpCisgICAgaWYgKGF1dG8qIGFwcGxpY2F0aW9uQ2FjaGVBZ2VudCA9IGluc3RydW1l
bnRpbmdBZ2VudHMuZW5hYmxlZEFwcGxpY2F0aW9uQ2FjaGVBZ2VudCgpKQogICAgICAgICBhcHBs
aWNhdGlvbkNhY2hlQWdlbnQtPm5ldHdvcmtTdGF0ZUNoYW5nZWQoKTsKIH0KIAogdm9pZCBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OnVwZGF0ZUFwcGxpY2F0aW9uQ2FjaGVTdGF0dXNJbXBsKElu
c3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIEZyYW1lJiBmcmFtZSkKIHsK
LSAgICBpZiAoYXV0byogYXBwbGljYXRpb25DYWNoZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50
cy5pbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQoKSkKKyAgICBpZiAoYXV0byogYXBwbGlj
YXRpb25DYWNoZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5lbmFibGVkQXBwbGljYXRpb25D
YWNoZUFnZW50KCkpCiAgICAgICAgIGFwcGxpY2F0aW9uQ2FjaGVBZ2VudC0+dXBkYXRlQXBwbGlj
YXRpb25DYWNoZVN0YXR1cygmZnJhbWUpOwogfQogCkBAIC0xMjE2LDUzICsxMjE2LDUzIEBAIGJv
b2wgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp0aW1lbGluZUFnZW50VHJhY2tpbmcoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogc2NyCiB7CiAgICAgRkFTVF9SRVRVUk5fSUZfTk9fRlJPTlRFTkRT
KGZhbHNlKTsKICAgICBpZiAoYXV0byogaW5zdHJ1bWVudGluZ0FnZW50cyA9IGluc3RydW1lbnRp
bmdBZ2VudHNGb3JDb250ZXh0KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpKQotICAgICAgICByZXR1
cm4gaW5zdHJ1bWVudGluZ0FnZW50cy0+dHJhY2tpbmdJbnNwZWN0b3JUaW1lbGluZUFnZW50KCk7
CisgICAgICAgIHJldHVybiBpbnN0cnVtZW50aW5nQWdlbnRzLT50cmFja2luZ1RpbWVsaW5lQWdl
bnQoKTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjpkaWRSZXF1ZXN0QW5pbWF0aW9uRnJhbWVJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGlu
c3RydW1lbnRpbmdBZ2VudHMsIGludCBjYWxsYmFja0lkLCBEb2N1bWVudCYgZG9jdW1lbnQpCiB7
Ci0gICAgaWYgKGF1dG8qIHBhZ2VEZWJ1Z2dlckFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5w
YWdlRGVidWdnZXJBZ2VudCgpKQorICAgIGlmIChhdXRvKiBwYWdlRGVidWdnZXJBZ2VudCA9IGlu
c3RydW1lbnRpbmdBZ2VudHMuZW5hYmxlZFBhZ2VEZWJ1Z2dlckFnZW50KCkpCiAgICAgICAgIHBh
Z2VEZWJ1Z2dlckFnZW50LT5kaWRSZXF1ZXN0QW5pbWF0aW9uRnJhbWUoY2FsbGJhY2tJZCwgZG9j
dW1lbnQpOwotICAgIGlmIChJbnNwZWN0b3JUaW1lbGluZUFnZW50KiB0aW1lbGluZUFnZW50ID0g
aW5zdHJ1bWVudGluZ0FnZW50cy50cmFja2luZ0luc3BlY3RvclRpbWVsaW5lQWdlbnQoKSkKKyAg
ICBpZiAoYXV0byogdGltZWxpbmVBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMudHJhY2tpbmdU
aW1lbGluZUFnZW50KCkpCiAgICAgICAgIHRpbWVsaW5lQWdlbnQtPmRpZFJlcXVlc3RBbmltYXRp
b25GcmFtZShjYWxsYmFja0lkLCBkb2N1bWVudC5mcmFtZSgpKTsKIH0KIAogdm9pZCBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb246OmRpZENhbmNlbEFuaW1hdGlvbkZyYW1lSW1wbChJbnN0cnVtZW50
aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBpbnQgY2FsbGJhY2tJZCwgRG9jdW1lbnQm
IGRvY3VtZW50KQogewotICAgIGlmIChhdXRvKiBwYWdlRGVidWdnZXJBZ2VudCA9IGluc3RydW1l
bnRpbmdBZ2VudHMucGFnZURlYnVnZ2VyQWdlbnQoKSkKKyAgICBpZiAoYXV0byogcGFnZURlYnVn
Z2VyQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmVuYWJsZWRQYWdlRGVidWdnZXJBZ2VudCgp
KQogICAgICAgICBwYWdlRGVidWdnZXJBZ2VudC0+ZGlkQ2FuY2VsQW5pbWF0aW9uRnJhbWUoY2Fs
bGJhY2tJZCk7Ci0gICAgaWYgKEluc3BlY3RvclRpbWVsaW5lQWdlbnQqIHRpbWVsaW5lQWdlbnQg
PSBpbnN0cnVtZW50aW5nQWdlbnRzLnRyYWNraW5nSW5zcGVjdG9yVGltZWxpbmVBZ2VudCgpKQor
ICAgIGlmIChhdXRvKiB0aW1lbGluZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy50cmFja2lu
Z1RpbWVsaW5lQWdlbnQoKSkKICAgICAgICAgdGltZWxpbmVBZ2VudC0+ZGlkQ2FuY2VsQW5pbWF0
aW9uRnJhbWUoY2FsbGJhY2tJZCwgZG9jdW1lbnQuZnJhbWUoKSk7CiB9CiAKIHZvaWQgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsRmlyZUFuaW1hdGlvbkZyYW1lSW1wbChJbnN0cnVtZW50
aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBpbnQgY2FsbGJhY2tJZCwgRG9jdW1lbnQm
IGRvY3VtZW50KQogewotICAgIGlmIChhdXRvKiBwYWdlRGVidWdnZXJBZ2VudCA9IGluc3RydW1l
bnRpbmdBZ2VudHMucGFnZURlYnVnZ2VyQWdlbnQoKSkKKyAgICBpZiAoYXV0byogcGFnZURlYnVn
Z2VyQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmVuYWJsZWRQYWdlRGVidWdnZXJBZ2VudCgp
KQogICAgICAgICBwYWdlRGVidWdnZXJBZ2VudC0+d2lsbEZpcmVBbmltYXRpb25GcmFtZShjYWxs
YmFja0lkKTsKLSAgICBpZiAoYXV0byogcGFnZURPTURlYnVnZ2VyQWdlbnQgPSBpbnN0cnVtZW50
aW5nQWdlbnRzLnBhZ2VET01EZWJ1Z2dlckFnZW50KCkpCisgICAgaWYgKGF1dG8qIHBhZ2VET01E
ZWJ1Z2dlckFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5lbmFibGVkUGFnZURPTURlYnVnZ2Vy
QWdlbnQoKSkKICAgICAgICAgcGFnZURPTURlYnVnZ2VyQWdlbnQtPndpbGxGaXJlQW5pbWF0aW9u
RnJhbWUoKTsKLSAgICBpZiAoYXV0byogdGltZWxpbmVBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2Vu
dHMudHJhY2tpbmdJbnNwZWN0b3JUaW1lbGluZUFnZW50KCkpCisgICAgaWYgKGF1dG8qIHRpbWVs
aW5lQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLnRyYWNraW5nVGltZWxpbmVBZ2VudCgpKQog
ICAgICAgICB0aW1lbGluZUFnZW50LT53aWxsRmlyZUFuaW1hdGlvbkZyYW1lKGNhbGxiYWNrSWQs
IGRvY3VtZW50LmZyYW1lKCkpOwogfQogCiB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
ZGlkRmlyZUFuaW1hdGlvbkZyYW1lSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50
aW5nQWdlbnRzKQogewotICAgIGlmIChhdXRvKiB3ZWJEZWJ1Z2dlckFnZW50ID0gaW5zdHJ1bWVu
dGluZ0FnZW50cy53ZWJEZWJ1Z2dlckFnZW50KCkpCisgICAgaWYgKGF1dG8qIHdlYkRlYnVnZ2Vy
QWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmVuYWJsZWRXZWJEZWJ1Z2dlckFnZW50KCkpCiAg
ICAgICAgIHdlYkRlYnVnZ2VyQWdlbnQtPmRpZERpc3BhdGNoQXN5bmNDYWxsKCk7Ci0gICAgaWYg
KGF1dG8qIHRpbWVsaW5lQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLnRyYWNraW5nSW5zcGVj
dG9yVGltZWxpbmVBZ2VudCgpKQorICAgIGlmIChhdXRvKiB0aW1lbGluZUFnZW50ID0gaW5zdHJ1
bWVudGluZ0FnZW50cy50cmFja2luZ1RpbWVsaW5lQWdlbnQoKSkKICAgICAgICAgdGltZWxpbmVB
Z2VudC0+ZGlkRmlyZUFuaW1hdGlvbkZyYW1lKCk7CiB9CiAKIHZvaWQgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjp3aWxsRmlyZU9ic2VydmVyQ2FsbGJhY2tJbXBsKEluc3RydW1lbnRpbmdBZ2Vu
dHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIGNvbnN0IFN0cmluZyYgY2FsbGJhY2tUeXBlLCBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KQogewotICAgIGlmIChhdXRvKiB0aW1lbGluZUFn
ZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy50cmFja2luZ0luc3BlY3RvclRpbWVsaW5lQWdlbnQo
KSkKKyAgICBpZiAoYXV0byogdGltZWxpbmVBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMudHJh
Y2tpbmdUaW1lbGluZUFnZW50KCkpCiAgICAgICAgIHRpbWVsaW5lQWdlbnQtPndpbGxGaXJlT2Jz
ZXJ2ZXJDYWxsYmFjayhjYWxsYmFja1R5cGUsIGZyYW1lRm9yU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgmY29udGV4dCkpOwogfQogCiB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRmly
ZU9ic2VydmVyQ2FsbGJhY2tJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdB
Z2VudHMpCiB7Ci0gICAgaWYgKGF1dG8qIHRpbWVsaW5lQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdl
bnRzLnRyYWNraW5nSW5zcGVjdG9yVGltZWxpbmVBZ2VudCgpKQorICAgIGlmIChhdXRvKiB0aW1l
bGluZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy50cmFja2luZ1RpbWVsaW5lQWdlbnQoKSkK
ICAgICAgICAgdGltZWxpbmVBZ2VudC0+ZGlkRmlyZU9ic2VydmVyQ2FsbGJhY2soKTsKIH0KIApA
QCAtMTI5MywxMyArMTI5MywxMyBAQCBJbnN0cnVtZW50aW5nQWdlbnRzKiBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246Omluc3RydW1lbnRpbmdBZ2VudHNGb3JSZW5kZXJlcihSZQogCiB2b2lkIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6bGF5ZXJUcmVlRGlkQ2hhbmdlSW1wbChJbnN0cnVtZW50
aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzKQogewotICAgIGlmIChJbnNwZWN0b3JMYXll
clRyZWVBZ2VudCogbGF5ZXJUcmVlQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3Rv
ckxheWVyVHJlZUFnZW50KCkpCisgICAgaWYgKGF1dG8qIGxheWVyVHJlZUFnZW50ID0gaW5zdHJ1
bWVudGluZ0FnZW50cy5lbmFibGVkTGF5ZXJUcmVlQWdlbnQoKSkKICAgICAgICAgbGF5ZXJUcmVl
QWdlbnQtPmxheWVyVHJlZURpZENoYW5nZSgpOwogfQogCiB2b2lkIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6cmVuZGVyTGF5ZXJEZXN0cm95ZWRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGlu
c3RydW1lbnRpbmdBZ2VudHMsIGNvbnN0IFJlbmRlckxheWVyJiByZW5kZXJMYXllcikKIHsKLSAg
ICBpZiAoSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQqIGxheWVyVHJlZUFnZW50ID0gaW5zdHJ1bWVu
dGluZ0FnZW50cy5pbnNwZWN0b3JMYXllclRyZWVBZ2VudCgpKQorICAgIGlmIChhdXRvKiBsYXll
clRyZWVBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuZW5hYmxlZExheWVyVHJlZUFnZW50KCkp
CiAgICAgICAgIGxheWVyVHJlZUFnZW50LT5yZW5kZXJMYXllckRlc3Ryb3llZChyZW5kZXJMYXll
cik7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnN0cnVtZW50
aW5nQWdlbnRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnN0cnVtZW50aW5nQWdl
bnRzLmNwcAppbmRleCBkN2EyZjcxOTU4ZDk0M2NjY2FjNDM0ZWFjOTNlMzNkYWUyN2NjNDA0Li4y
NjA4ODIzMWExODRjOWQzZGU0NGMyYzJjZDFmYTc5ZjVhYWRkMjcxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zdHJ1bWVudGluZ0FnZW50cy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3RydW1lbnRpbmdBZ2VudHMuY3BwCkBAIC00NCwzNCArNDQs
MTEgQEAgSW5zdHJ1bWVudGluZ0FnZW50czo6SW5zdHJ1bWVudGluZ0FnZW50cyhJbnNwZWN0b3JF
bnZpcm9ubWVudCYgZW52aXJvbm1lbnQpCiAKIHZvaWQgSW5zdHJ1bWVudGluZ0FnZW50czo6cmVz
ZXQoKQogewotICAgIG1faW5zcGVjdG9yQWdlbnQgPSBudWxscHRyOwotICAgIG1faW5zcGVjdG9y
UGFnZUFnZW50ID0gbnVsbHB0cjsKLSAgICBtX2luc3BlY3RvckNTU0FnZW50ID0gbnVsbHB0cjsK
LSAgICBtX2luc3BlY3RvckxheWVyVHJlZUFnZW50ID0gbnVsbHB0cjsKLSAgICBtX2luc3BlY3Rv
cldvcmtlckFnZW50ID0gbnVsbHB0cjsKLSAgICBtX3dlYkNvbnNvbGVBZ2VudCA9IG51bGxwdHI7
Ci0gICAgbV9pbnNwZWN0b3JET01BZ2VudCA9IG51bGxwdHI7Ci0gICAgbV9pbnNwZWN0b3JOZXR3
b3JrQWdlbnQgPSBudWxscHRyOwotICAgIG1fcGFnZVJ1bnRpbWVBZ2VudCA9IG51bGxwdHI7Ci0g
ICAgbV9pbnNwZWN0b3JTY3JpcHRQcm9maWxlckFnZW50ID0gbnVsbHB0cjsKLSAgICBtX2luc3Bl
Y3RvclRpbWVsaW5lQWdlbnQgPSBudWxscHRyOwotICAgIG1fdHJhY2tpbmdJbnNwZWN0b3JUaW1l
bGluZUFnZW50ID0gbnVsbHB0cjsKLSAgICBtX2luc3BlY3RvckRPTVN0b3JhZ2VBZ2VudCA9IG51
bGxwdHI7Ci0jaWYgRU5BQkxFKFJFU09VUkNFX1VTQUdFKQotICAgIG1faW5zcGVjdG9yQ1BVUHJv
ZmlsZXJBZ2VudCA9IG51bGxwdHI7Ci0gICAgbV9pbnNwZWN0b3JNZW1vcnlBZ2VudCA9IG51bGxw
dHI7Ci0jZW5kaWYKLSAgICBtX2luc3BlY3RvckRhdGFiYXNlQWdlbnQgPSBudWxscHRyOwotICAg
IG1faW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50ID0gbnVsbHB0cjsKLSAgICBtX3dlYkRl
YnVnZ2VyQWdlbnQgPSBudWxscHRyOwotICAgIG1fcGFnZURlYnVnZ2VyQWdlbnQgPSBudWxscHRy
OwotICAgIG1fcGFnZUhlYXBBZ2VudCA9IG51bGxwdHI7Ci0gICAgbV9pbnNwZWN0b3JET01EZWJ1
Z2dlckFnZW50ID0gbnVsbHB0cjsKLSAgICBtX3BhZ2VET01EZWJ1Z2dlckFnZW50ID0gbnVsbHB0
cjsKLSAgICBtX2luc3BlY3RvckNhbnZhc0FnZW50ID0gbnVsbHB0cjsKLSAgICBtX3BlcnNpc3Rl
bnRJbnNwZWN0b3JBbmltYXRpb25BZ2VudCA9IG51bGxwdHI7Ci0gICAgbV9lbmFibGVkSW5zcGVj
dG9yQW5pbWF0aW9uQWdlbnQgPSBudWxscHRyOwotICAgIG1fdHJhY2tpbmdJbnNwZWN0b3JBbmlt
YXRpb25BZ2VudCA9IG51bGxwdHI7CisjZGVmaW5lIFJFU0VUX01FTUJFUl9WQVJJQUJMRV9GT1Jf
SU5TUEVDVE9SX0FHRU5UKENsYXNzLCBOYW1lLCBHZXR0ZXIsIFNldHRlcikgXAorICAgIG1fIyNH
ZXR0ZXIjI05hbWUgPSBudWxscHRyOyBcCisKK0ZPUl9FQUNIX0lOU1BFQ1RPUl9BR0VOVChSRVNF
VF9NRU1CRVJfVkFSSUFCTEVfRk9SX0lOU1BFQ1RPUl9BR0VOVCkKKyN1bmRlZiBSRVNFVF9NRU1C
RVJfVkFSSUFCTEVfRk9SX0lOU1BFQ1RPUl9BR0VOVAogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zdHJ1bWVudGluZ0Fn
ZW50cy5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3RydW1lbnRpbmdBZ2VudHMuaApp
bmRleCBmNTljM2RiZGNhZjc4Y2Y5YzZkOGRiYjQzMmRjY2YyMmYxNWQ1MDdkLi44MjlkYzk1MmI4
Y2U4MGUxNWVjOWY0ZjM0MzU4NzAwOGI1YTQxZDJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zdHJ1bWVudGluZ0FnZW50cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnN0cnVtZW50aW5nQWdlbnRzLmgKQEAgLTM4LDcgKzM4LDYgQEAKIAogbmFtZXNw
YWNlIEluc3BlY3RvciB7CiBjbGFzcyBJbnNwZWN0b3JBZ2VudDsKLWNsYXNzIEluc3BlY3RvckRl
YnVnZ2VyQWdlbnQ7CiBjbGFzcyBJbnNwZWN0b3JTY3JpcHRQcm9maWxlckFnZW50OwogfQogCkBA
IC01OSw3ICs1OCw2IEBAIGNsYXNzIEluc3BlY3Rvck5ldHdvcmtBZ2VudDsKIGNsYXNzIEluc3Bl
Y3RvclBhZ2VBZ2VudDsKIGNsYXNzIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ7CiBjbGFzcyBJbnNw
ZWN0b3JXb3JrZXJBZ2VudDsKLWNsYXNzIFBhZ2U7CiBjbGFzcyBQYWdlRE9NRGVidWdnZXJBZ2Vu
dDsKIGNsYXNzIFBhZ2VEZWJ1Z2dlckFnZW50OwogY2xhc3MgUGFnZUhlYXBBZ2VudDsKQEAgLTY3
LDYgKzY1LDc1IEBAIGNsYXNzIFBhZ2VSdW50aW1lQWdlbnQ7CiBjbGFzcyBXZWJDb25zb2xlQWdl
bnQ7CiBjbGFzcyBXZWJEZWJ1Z2dlckFnZW50OwogCisjZGVmaW5lIERFRklORV9JTlNQRUNUT1Jf
QUdFTlQobWFjcm8sIENsYXNzLCBOYW1lLCBHZXR0ZXIsIFNldHRlcikgbWFjcm8oQ2xhc3MsIE5h
bWUsIEdldHRlciwgU2V0dGVyKQorCisjZGVmaW5lIERFRklORV9JTlNQRUNUT1JfQUdFTlRfQW5p
bWF0aW9uKG1hY3JvLCBHZXR0ZXIsIFNldHRlcikgREVGSU5FX0lOU1BFQ1RPUl9BR0VOVChtYWNy
bywgSW5zcGVjdG9yQW5pbWF0aW9uQWdlbnQsIEFuaW1hdGlvbkFnZW50LCBHZXR0ZXIsIFNldHRl
cikKKyNkZWZpbmUgREVGSU5FX0lOU1BFQ1RPUl9BR0VOVF9BcHBsaWNhdGlvbkNhY2hlKG1hY3Jv
LCBHZXR0ZXIsIFNldHRlcikgREVGSU5FX0lOU1BFQ1RPUl9BR0VOVChtYWNybywgSW5zcGVjdG9y
QXBwbGljYXRpb25DYWNoZUFnZW50LCBBcHBsaWNhdGlvbkNhY2hlQWdlbnQsIEdldHRlciwgU2V0
dGVyKQorI2RlZmluZSBERUZJTkVfSU5TUEVDVE9SX0FHRU5UX0NhbnZhcyhtYWNybywgR2V0dGVy
LCBTZXR0ZXIpIERFRklORV9JTlNQRUNUT1JfQUdFTlQobWFjcm8sIEluc3BlY3RvckNhbnZhc0Fn
ZW50LCBDYW52YXNBZ2VudCwgR2V0dGVyLCBTZXR0ZXIpCisjZGVmaW5lIERFRklORV9JTlNQRUNU
T1JfQUdFTlRfQ1NTKG1hY3JvLCBHZXR0ZXIsIFNldHRlcikgREVGSU5FX0lOU1BFQ1RPUl9BR0VO
VChtYWNybywgSW5zcGVjdG9yQ1NTQWdlbnQsIENTU0FnZW50LCBHZXR0ZXIsIFNldHRlcikKKyNk
ZWZpbmUgREVGSU5FX0lOU1BFQ1RPUl9BR0VOVF9ET00obWFjcm8sIEdldHRlciwgU2V0dGVyKSBE
RUZJTkVfSU5TUEVDVE9SX0FHRU5UKG1hY3JvLCBJbnNwZWN0b3JET01BZ2VudCwgRE9NQWdlbnQs
IEdldHRlciwgU2V0dGVyKQorI2RlZmluZSBERUZJTkVfSU5TUEVDVE9SX0FHRU5UX0RPTURlYnVn
Z2VyKG1hY3JvLCBHZXR0ZXIsIFNldHRlcikgREVGSU5FX0lOU1BFQ1RPUl9BR0VOVChtYWNybywg
SW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudCwgRE9NRGVidWdnZXJBZ2VudCwgR2V0dGVyLCBTZXR0
ZXIpCisjZGVmaW5lIERFRklORV9JTlNQRUNUT1JfQUdFTlRfRE9NRGVidWdnZXJfUGFnZShtYWNy
bywgR2V0dGVyLCBTZXR0ZXIpIERFRklORV9JTlNQRUNUT1JfQUdFTlQobWFjcm8sIFBhZ2VET01E
ZWJ1Z2dlckFnZW50LCBQYWdlRE9NRGVidWdnZXJBZ2VudCwgR2V0dGVyLCBTZXR0ZXIpCisjZGVm
aW5lIERFRklORV9JTlNQRUNUT1JfQUdFTlRfRE9NU3RvcmFnZShtYWNybywgR2V0dGVyLCBTZXR0
ZXIpIERFRklORV9JTlNQRUNUT1JfQUdFTlQobWFjcm8sIEluc3BlY3RvckRPTVN0b3JhZ2VBZ2Vu
dCwgRE9NU3RvcmFnZUFnZW50LCBHZXR0ZXIsIFNldHRlcikKKyNkZWZpbmUgREVGSU5FX0lOU1BF
Q1RPUl9BR0VOVF9EYXRhYmFzZShtYWNybywgR2V0dGVyLCBTZXR0ZXIpIERFRklORV9JTlNQRUNU
T1JfQUdFTlQobWFjcm8sIEluc3BlY3RvckRhdGFiYXNlQWdlbnQsIERhdGFiYXNlQWdlbnQsIEdl
dHRlciwgU2V0dGVyKQorI2RlZmluZSBERUZJTkVfSU5TUEVDVE9SX0FHRU5UX0RlYnVnZ2VyX1dl
YihtYWNybywgR2V0dGVyLCBTZXR0ZXIpIERFRklORV9JTlNQRUNUT1JfQUdFTlQobWFjcm8sIFdl
YkRlYnVnZ2VyQWdlbnQsIFdlYkRlYnVnZ2VyQWdlbnQsIEdldHRlciwgU2V0dGVyKQorI2RlZmlu
ZSBERUZJTkVfSU5TUEVDVE9SX0FHRU5UX0RlYnVnZ2VyX1BhZ2UobWFjcm8sIEdldHRlciwgU2V0
dGVyKSBERUZJTkVfSU5TUEVDVE9SX0FHRU5UKG1hY3JvLCBQYWdlRGVidWdnZXJBZ2VudCwgUGFn
ZURlYnVnZ2VyQWdlbnQsIEdldHRlciwgU2V0dGVyKQorI2RlZmluZSBERUZJTkVfSU5TUEVDVE9S
X0FHRU5UX0hlYXBfUGFnZShtYWNybywgR2V0dGVyLCBTZXR0ZXIpIERFRklORV9JTlNQRUNUT1Jf
QUdFTlQobWFjcm8sIFBhZ2VIZWFwQWdlbnQsIFBhZ2VIZWFwQWdlbnQsIEdldHRlciwgU2V0dGVy
KQorI2RlZmluZSBERUZJTkVfSU5TUEVDVE9SX0FHRU5UX0luc3BlY3RvcihtYWNybywgR2V0dGVy
LCBTZXR0ZXIpIERFRklORV9JTlNQRUNUT1JfQUdFTlQobWFjcm8sIEluc3BlY3Rvcjo6SW5zcGVj
dG9yQWdlbnQsIEluc3BlY3RvckFnZW50LCBHZXR0ZXIsIFNldHRlcikKKyNkZWZpbmUgREVGSU5F
X0lOU1BFQ1RPUl9BR0VOVF9MYXllclRyZWUobWFjcm8sIEdldHRlciwgU2V0dGVyKSBERUZJTkVf
SU5TUEVDVE9SX0FHRU5UKG1hY3JvLCBJbnNwZWN0b3JMYXllclRyZWVBZ2VudCwgTGF5ZXJUcmVl
QWdlbnQsIEdldHRlciwgU2V0dGVyKQorI2RlZmluZSBERUZJTkVfSU5TUEVDVE9SX0FHRU5UX05l
dHdvcmsobWFjcm8sIEdldHRlciwgU2V0dGVyKSBERUZJTkVfSU5TUEVDVE9SX0FHRU5UKG1hY3Jv
LCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQsIE5ldHdvcmtBZ2VudCwgR2V0dGVyLCBTZXR0ZXIpCisj
ZGVmaW5lIERFRklORV9JTlNQRUNUT1JfQUdFTlRfUGFnZShtYWNybywgR2V0dGVyLCBTZXR0ZXIp
IERFRklORV9JTlNQRUNUT1JfQUdFTlQobWFjcm8sIEluc3BlY3RvclBhZ2VBZ2VudCwgUGFnZUFn
ZW50LCBHZXR0ZXIsIFNldHRlcikKKyNkZWZpbmUgREVGSU5FX0lOU1BFQ1RPUl9BR0VOVF9SdW50
aW1lX1BhZ2UobWFjcm8sIEdldHRlciwgU2V0dGVyKSBERUZJTkVfSU5TUEVDVE9SX0FHRU5UKG1h
Y3JvLCBQYWdlUnVudGltZUFnZW50LCBQYWdlUnVudGltZUFnZW50LCBHZXR0ZXIsIFNldHRlcikK
KyNkZWZpbmUgREVGSU5FX0lOU1BFQ1RPUl9BR0VOVF9TY3JpcHRQcm9maWxlcihtYWNybywgR2V0
dGVyLCBTZXR0ZXIpIERFRklORV9JTlNQRUNUT1JfQUdFTlQobWFjcm8sIEluc3BlY3Rvcjo6SW5z
cGVjdG9yU2NyaXB0UHJvZmlsZXJBZ2VudCwgU2NyaXB0UHJvZmlsZXJBZ2VudCwgR2V0dGVyLCBT
ZXR0ZXIpCisjZGVmaW5lIERFRklORV9JTlNQRUNUT1JfQUdFTlRfVGltZWxpbmUobWFjcm8sIEdl
dHRlciwgU2V0dGVyKSBERUZJTkVfSU5TUEVDVE9SX0FHRU5UKG1hY3JvLCBJbnNwZWN0b3JUaW1l
bGluZUFnZW50LCBUaW1lbGluZUFnZW50LCBHZXR0ZXIsIFNldHRlcikKKyNkZWZpbmUgREVGSU5F
X0lOU1BFQ1RPUl9BR0VOVF9Xb3JrZXIobWFjcm8sIEdldHRlciwgU2V0dGVyKSBERUZJTkVfSU5T
UEVDVE9SX0FHRU5UKG1hY3JvLCBJbnNwZWN0b3JXb3JrZXJBZ2VudCwgV29ya2VyQWdlbnQsIEdl
dHRlciwgU2V0dGVyKQorCisjaWYgRU5BQkxFKFJFU09VUkNFX1VTQUdFKQorI2RlZmluZSBERUZJ
TkVfSU5TUEVDVE9SX0FHRU5UX0NQVVByb2ZpbGVyKG1hY3JvLCBHZXR0ZXIsIFNldHRlcikgREVG
SU5FX0lOU1BFQ1RPUl9BR0VOVChtYWNybywgSW5zcGVjdG9yQ1BVUHJvZmlsZXJBZ2VudCwgQ1BV
UHJvZmlsZXJBZ2VudCwgR2V0dGVyLCBTZXR0ZXIpCisjZGVmaW5lIERFRklORV9JTlNQRUNUT1Jf
QUdFTlRfTWVtb3J5KG1hY3JvLCBHZXR0ZXIsIFNldHRlcikgREVGSU5FX0lOU1BFQ1RPUl9BR0VO
VChtYWNybywgSW5zcGVjdG9yTWVtb3J5QWdlbnQsIE1lbW9yeUFnZW50LCBHZXR0ZXIsIFNldHRl
cikKKyNlbHNlCisjZGVmaW5lIERFRklORV9JTlNQRUNUT1JfQUdFTlRfQ1BVUHJvZmlsZXIobWFj
cm8sIEdldHRlciwgU2V0dGVyKQorI2RlZmluZSBERUZJTkVfSU5TUEVDVE9SX0FHRU5UX01lbW9y
eShtYWNybywgR2V0dGVyLCBTZXR0ZXIpCisjZW5kaWYKKworLy8gU2V0IHdoZW4gV2ViIEluc3Bl
Y3RvciBpcyBjb25uZWN0ZWQKKyNkZWZpbmUgREVGSU5FX1BFUlNJU1RFTlRfSU5TUEVDVE9SX0FH
RU5UKG1hY3JvLCBBZ2VudCkgREVGSU5FX0lOU1BFQ1RPUl9BR0VOVF8jI0FnZW50KG1hY3JvLCBw
ZXJzaXN0ZW50LCBQZXJzaXN0ZW50KQorCisvLyBTZXQgd2hlbiBgZW5hYmxlYGQsIHN1Y2ggYXMg
aWYgdGhlIGNvcnJlc3BvbmRpbmcgdGFiIGlzIHZpc2libGUKKyNkZWZpbmUgREVGSU5FX0VOQUJM
RURfSU5TUEVDVE9SX0FHRU5UKG1hY3JvLCBBZ2VudCkgREVGSU5FX0lOU1BFQ1RPUl9BR0VOVF8j
I0FnZW50KG1hY3JvLCBlbmFibGVkLCBFbmFibGVkKQorCisvLyBTZXQgd2hlbiBwYXJ0IG9mIGEg
dGltZWxpbmUgcmVjb3JkaW5nLgorI2RlZmluZSBERUZJTkVfVFJBQ0tJTkdfSU5TUEVDVE9SX0FH
RU5UKG1hY3JvLCBBZ2VudCkgREVGSU5FX0lOU1BFQ1RPUl9BR0VOVF8jI0FnZW50KG1hY3JvLCB0
cmFja2luZywgVHJhY2tpbmcpCisKKyNkZWZpbmUgRk9SX0VBQ0hfSU5TUEVDVE9SX0FHRU5UKG1h
Y3JvKSBcCisgICAgREVGSU5FX0lOU1BFQ1RPUl9BR0VOVChtYWNybywgV2ViQ29uc29sZUFnZW50
LCBDb25zb2xlQWdlbnQsIHdlYiwgV2ViKSBcCisgICAgREVGSU5FX1BFUlNJU1RFTlRfSU5TUEVD
VE9SX0FHRU5UKG1hY3JvLCBBbmltYXRpb24pIFwKKyAgICBERUZJTkVfUEVSU0lTVEVOVF9JTlNQ
RUNUT1JfQUdFTlQobWFjcm8sIENQVVByb2ZpbGVyKSBcCisgICAgREVGSU5FX1BFUlNJU1RFTlRf
SU5TUEVDVE9SX0FHRU5UKG1hY3JvLCBET00pIFwKKyAgICBERUZJTkVfUEVSU0lTVEVOVF9JTlNQ
RUNUT1JfQUdFTlQobWFjcm8sIEluc3BlY3RvcikgXAorICAgIERFRklORV9QRVJTSVNURU5UX0lO
U1BFQ1RPUl9BR0VOVChtYWNybywgTWVtb3J5KSBcCisgICAgREVGSU5FX1BFUlNJU1RFTlRfSU5T
UEVDVE9SX0FHRU5UKG1hY3JvLCBTY3JpcHRQcm9maWxlcikgXAorICAgIERFRklORV9QRVJTSVNU
RU5UX0lOU1BFQ1RPUl9BR0VOVChtYWNybywgV29ya2VyKSBcCisgICAgREVGSU5FX0VOQUJMRURf
SU5TUEVDVE9SX0FHRU5UKG1hY3JvLCBBbmltYXRpb24pIFwKKyAgICBERUZJTkVfRU5BQkxFRF9J
TlNQRUNUT1JfQUdFTlQobWFjcm8sIEFwcGxpY2F0aW9uQ2FjaGUpIFwKKyAgICBERUZJTkVfRU5B
QkxFRF9JTlNQRUNUT1JfQUdFTlQobWFjcm8sIENhbnZhcykgXAorICAgIERFRklORV9FTkFCTEVE
X0lOU1BFQ1RPUl9BR0VOVChtYWNybywgQ1NTKSBcCisgICAgREVGSU5FX0VOQUJMRURfSU5TUEVD
VE9SX0FHRU5UKG1hY3JvLCBEYXRhYmFzZSkgXAorICAgIERFRklORV9FTkFCTEVEX0lOU1BFQ1RP
Ul9BR0VOVChtYWNybywgRGVidWdnZXJfUGFnZSkgXAorICAgIERFRklORV9FTkFCTEVEX0lOU1BF
Q1RPUl9BR0VOVChtYWNybywgRGVidWdnZXJfV2ViKSBcCisgICAgREVGSU5FX0VOQUJMRURfSU5T
UEVDVE9SX0FHRU5UKG1hY3JvLCBET01EZWJ1Z2dlcikgXAorICAgIERFRklORV9FTkFCTEVEX0lO
U1BFQ1RPUl9BR0VOVChtYWNybywgRE9NRGVidWdnZXJfUGFnZSkgXAorICAgIERFRklORV9FTkFC
TEVEX0lOU1BFQ1RPUl9BR0VOVChtYWNybywgRE9NU3RvcmFnZSkgXAorICAgIERFRklORV9FTkFC
TEVEX0lOU1BFQ1RPUl9BR0VOVChtYWNybywgSGVhcF9QYWdlKSBcCisgICAgREVGSU5FX0VOQUJM
RURfSU5TUEVDVE9SX0FHRU5UKG1hY3JvLCBMYXllclRyZWUpIFwKKyAgICBERUZJTkVfRU5BQkxF
RF9JTlNQRUNUT1JfQUdFTlQobWFjcm8sIE1lbW9yeSkgXAorICAgIERFRklORV9FTkFCTEVEX0lO
U1BFQ1RPUl9BR0VOVChtYWNybywgTmV0d29yaykgXAorICAgIERFRklORV9FTkFCTEVEX0lOU1BF
Q1RPUl9BR0VOVChtYWNybywgUGFnZSkgXAorICAgIERFRklORV9FTkFCTEVEX0lOU1BFQ1RPUl9B
R0VOVChtYWNybywgUnVudGltZV9QYWdlKSBcCisgICAgREVGSU5FX0VOQUJMRURfSU5TUEVDVE9S
X0FHRU5UKG1hY3JvLCBUaW1lbGluZSkgXAorICAgIERFRklORV9UUkFDS0lOR19JTlNQRUNUT1Jf
QUdFTlQobWFjcm8sIEFuaW1hdGlvbikgXAorICAgIERFRklORV9UUkFDS0lOR19JTlNQRUNUT1Jf
QUdFTlQobWFjcm8sIFRpbWVsaW5lKSBcCisKIGNsYXNzIEluc3RydW1lbnRpbmdBZ2VudHMgOiBw
dWJsaWMgUmVmQ291bnRlZDxJbnN0cnVtZW50aW5nQWdlbnRzPiB7CiAgICAgV1RGX01BS0VfTk9O
Q09QWUFCTEUoSW5zdHJ1bWVudGluZ0FnZW50cyk7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CkBAIC04MiwxMTkgKzE0OSwyMyBAQCBwdWJsaWM6CiAKICAgICBJbnNwZWN0b3I6Okluc3Bl
Y3RvckVudmlyb25tZW50JiBpbnNwZWN0b3JFbnZpcm9ubWVudCgpIGNvbnN0IHsgcmV0dXJuIG1f
ZW52aXJvbm1lbnQ7IH0KIAotICAgIEluc3BlY3Rvcjo6SW5zcGVjdG9yQWdlbnQqIGluc3BlY3Rv
ckFnZW50KCkgY29uc3QgeyByZXR1cm4gbV9pbnNwZWN0b3JBZ2VudDsgfQotICAgIHZvaWQgc2V0
SW5zcGVjdG9yQWdlbnQoSW5zcGVjdG9yOjpJbnNwZWN0b3JBZ2VudCogYWdlbnQpIHsgbV9pbnNw
ZWN0b3JBZ2VudCA9IGFnZW50OyB9CisjZGVmaW5lIERFQ0xBUkVfR0VUVEVSX1NFVFRFUl9GT1Jf
SU5TUEVDVE9SX0FHRU5UKENsYXNzLCBOYW1lLCBHZXR0ZXIsIFNldHRlcikgXAorICAgIENsYXNz
KiBHZXR0ZXIjI05hbWUoKSBjb25zdCB7IHJldHVybiBtXyMjR2V0dGVyIyNOYW1lOyB9IFwKKyAg
ICB2b2lkIHNldCMjU2V0dGVyIyNOYW1lKENsYXNzKiBhZ2VudCkgeyBtXyMjR2V0dGVyIyNOYW1l
ID0gYWdlbnQ7IH0gXAogCi0gICAgSW5zcGVjdG9yUGFnZUFnZW50KiBpbnNwZWN0b3JQYWdlQWdl
bnQoKSBjb25zdCB7IHJldHVybiBtX2luc3BlY3RvclBhZ2VBZ2VudDsgfQotICAgIHZvaWQgc2V0
SW5zcGVjdG9yUGFnZUFnZW50KEluc3BlY3RvclBhZ2VBZ2VudCogYWdlbnQpIHsgbV9pbnNwZWN0
b3JQYWdlQWdlbnQgPSBhZ2VudDsgfQotCi0gICAgSW5zcGVjdG9yQ2FudmFzQWdlbnQqIGluc3Bl
Y3RvckNhbnZhc0FnZW50KCkgY29uc3QgeyByZXR1cm4gbV9pbnNwZWN0b3JDYW52YXNBZ2VudDsg
fQotICAgIHZvaWQgc2V0SW5zcGVjdG9yQ2FudmFzQWdlbnQoSW5zcGVjdG9yQ2FudmFzQWdlbnQq
IGFnZW50KSB7IG1faW5zcGVjdG9yQ2FudmFzQWdlbnQgPSBhZ2VudDsgfQotCi0gICAgSW5zcGVj
dG9yQ1NTQWdlbnQqIGluc3BlY3RvckNTU0FnZW50KCkgY29uc3QgeyByZXR1cm4gbV9pbnNwZWN0
b3JDU1NBZ2VudDsgfQotICAgIHZvaWQgc2V0SW5zcGVjdG9yQ1NTQWdlbnQoSW5zcGVjdG9yQ1NT
QWdlbnQqIGFnZW50KSB7IG1faW5zcGVjdG9yQ1NTQWdlbnQgPSBhZ2VudDsgfQotCi0gICAgV2Vi
Q29uc29sZUFnZW50KiB3ZWJDb25zb2xlQWdlbnQoKSBjb25zdCB7IHJldHVybiBtX3dlYkNvbnNv
bGVBZ2VudDsgfQotICAgIHZvaWQgc2V0V2ViQ29uc29sZUFnZW50KFdlYkNvbnNvbGVBZ2VudCog
YWdlbnQpIHsgbV93ZWJDb25zb2xlQWdlbnQgPSBhZ2VudDsgfQotCi0gICAgSW5zcGVjdG9yRE9N
QWdlbnQqIGluc3BlY3RvckRPTUFnZW50KCkgY29uc3QgeyByZXR1cm4gbV9pbnNwZWN0b3JET01B
Z2VudDsgfQotICAgIHZvaWQgc2V0SW5zcGVjdG9yRE9NQWdlbnQoSW5zcGVjdG9yRE9NQWdlbnQq
IGFnZW50KSB7IG1faW5zcGVjdG9yRE9NQWdlbnQgPSBhZ2VudDsgfQotCi0gICAgSW5zcGVjdG9y
TmV0d29ya0FnZW50KiBpbnNwZWN0b3JOZXR3b3JrQWdlbnQoKSBjb25zdCB7IHJldHVybiBtX2lu
c3BlY3Rvck5ldHdvcmtBZ2VudDsgfQotICAgIHZvaWQgc2V0SW5zcGVjdG9yTmV0d29ya0FnZW50
KEluc3BlY3Rvck5ldHdvcmtBZ2VudCogYWdlbnQpIHsgbV9pbnNwZWN0b3JOZXR3b3JrQWdlbnQg
PSBhZ2VudDsgfQotCi0gICAgUGFnZVJ1bnRpbWVBZ2VudCogcGFnZVJ1bnRpbWVBZ2VudCgpIGNv
bnN0IHsgcmV0dXJuIG1fcGFnZVJ1bnRpbWVBZ2VudDsgfQotICAgIHZvaWQgc2V0UGFnZVJ1bnRp
bWVBZ2VudChQYWdlUnVudGltZUFnZW50KiBhZ2VudCkgeyBtX3BhZ2VSdW50aW1lQWdlbnQgPSBh
Z2VudDsgfQotCi0gICAgSW5zcGVjdG9yOjpJbnNwZWN0b3JTY3JpcHRQcm9maWxlckFnZW50KiBp
bnNwZWN0b3JTY3JpcHRQcm9maWxlckFnZW50KCkgY29uc3QgeyByZXR1cm4gbV9pbnNwZWN0b3JT
Y3JpcHRQcm9maWxlckFnZW50OyB9Ci0gICAgdm9pZCBzZXRJbnNwZWN0b3JTY3JpcHRQcm9maWxl
ckFnZW50KEluc3BlY3Rvcjo6SW5zcGVjdG9yU2NyaXB0UHJvZmlsZXJBZ2VudCogYWdlbnQpIHsg
bV9pbnNwZWN0b3JTY3JpcHRQcm9maWxlckFnZW50ID0gYWdlbnQ7IH0KLQotICAgIEluc3BlY3Rv
clRpbWVsaW5lQWdlbnQqIGluc3BlY3RvclRpbWVsaW5lQWdlbnQoKSBjb25zdCB7IHJldHVybiBt
X2luc3BlY3RvclRpbWVsaW5lQWdlbnQ7IH0KLSAgICB2b2lkIHNldEluc3BlY3RvclRpbWVsaW5l
QWdlbnQoSW5zcGVjdG9yVGltZWxpbmVBZ2VudCogYWdlbnQpIHsgbV9pbnNwZWN0b3JUaW1lbGlu
ZUFnZW50ID0gYWdlbnQ7IH0KLQotICAgIEluc3BlY3RvclRpbWVsaW5lQWdlbnQqIHRyYWNraW5n
SW5zcGVjdG9yVGltZWxpbmVBZ2VudCgpIGNvbnN0IHsgcmV0dXJuIG1fdHJhY2tpbmdJbnNwZWN0
b3JUaW1lbGluZUFnZW50OyB9Ci0gICAgdm9pZCBzZXRUcmFja2luZ0luc3BlY3RvclRpbWVsaW5l
QWdlbnQoSW5zcGVjdG9yVGltZWxpbmVBZ2VudCogYWdlbnQpIHsgbV90cmFja2luZ0luc3BlY3Rv
clRpbWVsaW5lQWdlbnQgPSBhZ2VudDsgfQotCi0gICAgSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50
KiBpbnNwZWN0b3JET01TdG9yYWdlQWdlbnQoKSBjb25zdCB7IHJldHVybiBtX2luc3BlY3RvckRP
TVN0b3JhZ2VBZ2VudDsgfQotICAgIHZvaWQgc2V0SW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50KElu
c3BlY3RvckRPTVN0b3JhZ2VBZ2VudCogYWdlbnQpIHsgbV9pbnNwZWN0b3JET01TdG9yYWdlQWdl
bnQgPSBhZ2VudDsgfQotCi0jaWYgRU5BQkxFKFJFU09VUkNFX1VTQUdFKQotICAgIEluc3BlY3Rv
ckNQVVByb2ZpbGVyQWdlbnQqIGluc3BlY3RvckNQVVByb2ZpbGVyQWdlbnQoKSBjb25zdCB7IHJl
dHVybiBtX2luc3BlY3RvckNQVVByb2ZpbGVyQWdlbnQ7IH0KLSAgICB2b2lkIHNldEluc3BlY3Rv
ckNQVVByb2ZpbGVyQWdlbnQoSW5zcGVjdG9yQ1BVUHJvZmlsZXJBZ2VudCogYWdlbnQpIHsgbV9p
bnNwZWN0b3JDUFVQcm9maWxlckFnZW50ID0gYWdlbnQ7IH0KLQotICAgIEluc3BlY3Rvck1lbW9y
eUFnZW50KiBpbnNwZWN0b3JNZW1vcnlBZ2VudCgpIGNvbnN0IHsgcmV0dXJuIG1faW5zcGVjdG9y
TWVtb3J5QWdlbnQ7IH0KLSAgICB2b2lkIHNldEluc3BlY3Rvck1lbW9yeUFnZW50KEluc3BlY3Rv
ck1lbW9yeUFnZW50KiBhZ2VudCkgeyBtX2luc3BlY3Rvck1lbW9yeUFnZW50ID0gYWdlbnQ7IH0K
LSNlbmRpZgotCi0gICAgSW5zcGVjdG9yRGF0YWJhc2VBZ2VudCogaW5zcGVjdG9yRGF0YWJhc2VB
Z2VudCgpIGNvbnN0IHsgcmV0dXJuIG1faW5zcGVjdG9yRGF0YWJhc2VBZ2VudDsgfQotICAgIHZv
aWQgc2V0SW5zcGVjdG9yRGF0YWJhc2VBZ2VudChJbnNwZWN0b3JEYXRhYmFzZUFnZW50KiBhZ2Vu
dCkgeyBtX2luc3BlY3RvckRhdGFiYXNlQWdlbnQgPSBhZ2VudDsgfQotCi0gICAgSW5zcGVjdG9y
QXBwbGljYXRpb25DYWNoZUFnZW50KiBpbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQoKSBj
b25zdCB7IHJldHVybiBtX2luc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudDsgfQotICAgIHZv
aWQgc2V0SW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50KEluc3BlY3RvckFwcGxpY2F0aW9u
Q2FjaGVBZ2VudCogYWdlbnQpIHsgbV9pbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQgPSBh
Z2VudDsgfQotCi0gICAgV2ViRGVidWdnZXJBZ2VudCogd2ViRGVidWdnZXJBZ2VudCgpIGNvbnN0
IHsgcmV0dXJuIG1fd2ViRGVidWdnZXJBZ2VudDsgfQotICAgIHZvaWQgc2V0V2ViRGVidWdnZXJB
Z2VudChXZWJEZWJ1Z2dlckFnZW50KiBhZ2VudCkgeyBtX3dlYkRlYnVnZ2VyQWdlbnQgPSBhZ2Vu
dDsgfQotCi0gICAgUGFnZURlYnVnZ2VyQWdlbnQqIHBhZ2VEZWJ1Z2dlckFnZW50KCkgY29uc3Qg
eyByZXR1cm4gbV9wYWdlRGVidWdnZXJBZ2VudDsgfQotICAgIHZvaWQgc2V0UGFnZURlYnVnZ2Vy
QWdlbnQoUGFnZURlYnVnZ2VyQWdlbnQqIGFnZW50KSB7IG1fcGFnZURlYnVnZ2VyQWdlbnQgPSBh
Z2VudDsgfQotCi0gICAgUGFnZUhlYXBBZ2VudCogcGFnZUhlYXBBZ2VudCgpIGNvbnN0IHsgcmV0
dXJuIG1fcGFnZUhlYXBBZ2VudDsgfQotICAgIHZvaWQgc2V0UGFnZUhlYXBBZ2VudChQYWdlSGVh
cEFnZW50KiBhZ2VudCkgeyBtX3BhZ2VIZWFwQWdlbnQgPSBhZ2VudDsgfQotCi0gICAgSW5zcGVj
dG9yRE9NRGVidWdnZXJBZ2VudCogaW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudCgpIGNvbnN0IHsg
cmV0dXJuIG1faW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDsgfQotICAgIHZvaWQgc2V0SW5zcGVj
dG9yRE9NRGVidWdnZXJBZ2VudChJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50KiBhZ2VudCkgeyBt
X2luc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQgPSBhZ2VudDsgfQotCi0gICAgUGFnZURPTURlYnVn
Z2VyQWdlbnQqIHBhZ2VET01EZWJ1Z2dlckFnZW50KCkgY29uc3QgeyByZXR1cm4gbV9wYWdlRE9N
RGVidWdnZXJBZ2VudDsgfQotICAgIHZvaWQgc2V0UGFnZURPTURlYnVnZ2VyQWdlbnQoUGFnZURP
TURlYnVnZ2VyQWdlbnQqIGFnZW50KSB7IG1fcGFnZURPTURlYnVnZ2VyQWdlbnQgPSBhZ2VudDsg
fQotCi0gICAgSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQqIGluc3BlY3RvckxheWVyVHJlZUFnZW50
KCkgY29uc3QgeyByZXR1cm4gbV9pbnNwZWN0b3JMYXllclRyZWVBZ2VudDsgfQotICAgIHZvaWQg
c2V0SW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQoSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQqIGFnZW50
KSB7IG1faW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQgPSBhZ2VudDsgfQotCi0gICAgSW5zcGVjdG9y
V29ya2VyQWdlbnQqIGluc3BlY3RvcldvcmtlckFnZW50KCkgY29uc3QgeyByZXR1cm4gbV9pbnNw
ZWN0b3JXb3JrZXJBZ2VudDsgfQotICAgIHZvaWQgc2V0SW5zcGVjdG9yV29ya2VyQWdlbnQoSW5z
cGVjdG9yV29ya2VyQWdlbnQqIGFnZW50KSB7IG1faW5zcGVjdG9yV29ya2VyQWdlbnQgPSBhZ2Vu
dDsgfQotCi0gICAgSW5zcGVjdG9yQW5pbWF0aW9uQWdlbnQqIHBlcnNpc3RlbnRJbnNwZWN0b3JB
bmltYXRpb25BZ2VudCgpIGNvbnN0IHsgcmV0dXJuIG1fcGVyc2lzdGVudEluc3BlY3RvckFuaW1h
dGlvbkFnZW50OyB9Ci0gICAgdm9pZCBzZXRQZXJzaXN0ZW50SW5zcGVjdG9yQW5pbWF0aW9uQWdl
bnQoSW5zcGVjdG9yQW5pbWF0aW9uQWdlbnQqIGFnZW50KSB7IG1fcGVyc2lzdGVudEluc3BlY3Rv
ckFuaW1hdGlvbkFnZW50ID0gYWdlbnQ7IH0KLQotICAgIEluc3BlY3RvckFuaW1hdGlvbkFnZW50
KiBlbmFibGVkSW5zcGVjdG9yQW5pbWF0aW9uQWdlbnQoKSBjb25zdCB7IHJldHVybiBtX2VuYWJs
ZWRJbnNwZWN0b3JBbmltYXRpb25BZ2VudDsgfQotICAgIHZvaWQgc2V0RW5hYmxlZEluc3BlY3Rv
ckFuaW1hdGlvbkFnZW50KEluc3BlY3RvckFuaW1hdGlvbkFnZW50KiBhZ2VudCkgeyBtX2VuYWJs
ZWRJbnNwZWN0b3JBbmltYXRpb25BZ2VudCA9IGFnZW50OyB9Ci0KLSAgICBJbnNwZWN0b3JBbmlt
YXRpb25BZ2VudCogdHJhY2tpbmdJbnNwZWN0b3JBbmltYXRpb25BZ2VudCgpIGNvbnN0IHsgcmV0
dXJuIG1fdHJhY2tpbmdJbnNwZWN0b3JBbmltYXRpb25BZ2VudDsgfQotICAgIHZvaWQgc2V0VHJh
Y2tpbmdJbnNwZWN0b3JBbmltYXRpb25BZ2VudChJbnNwZWN0b3JBbmltYXRpb25BZ2VudCogYWdl
bnQpIHsgbV90cmFja2luZ0luc3BlY3RvckFuaW1hdGlvbkFnZW50ID0gYWdlbnQ7IH0KK0ZPUl9F
QUNIX0lOU1BFQ1RPUl9BR0VOVChERUNMQVJFX0dFVFRFUl9TRVRURVJfRk9SX0lOU1BFQ1RPUl9B
R0VOVCkKKyN1bmRlZiBERUNMQVJFX0dFVFRFUl9TRVRURVJfRk9SX0lOU1BFQ1RPUl9BR0VOVAog
CiBwcml2YXRlOgogICAgIEluc3RydW1lbnRpbmdBZ2VudHMoSW5zcGVjdG9yOjpJbnNwZWN0b3JF
bnZpcm9ubWVudCYpOwogCiAgICAgSW5zcGVjdG9yOjpJbnNwZWN0b3JFbnZpcm9ubWVudCYgbV9l
bnZpcm9ubWVudDsKIAotICAgIEluc3BlY3Rvcjo6SW5zcGVjdG9yQWdlbnQqIG1faW5zcGVjdG9y
QWdlbnQgeyBudWxscHRyIH07Ci0gICAgSW5zcGVjdG9yUGFnZUFnZW50KiBtX2luc3BlY3RvclBh
Z2VBZ2VudCB7IG51bGxwdHIgfTsKLSAgICBJbnNwZWN0b3JDU1NBZ2VudCogbV9pbnNwZWN0b3JD
U1NBZ2VudCB7IG51bGxwdHIgfTsKLSAgICBJbnNwZWN0b3JMYXllclRyZWVBZ2VudCogbV9pbnNw
ZWN0b3JMYXllclRyZWVBZ2VudCB7IG51bGxwdHIgfTsKLSAgICBJbnNwZWN0b3JXb3JrZXJBZ2Vu
dCogbV9pbnNwZWN0b3JXb3JrZXJBZ2VudCB7IG51bGxwdHIgfTsKLSAgICBXZWJDb25zb2xlQWdl
bnQqIG1fd2ViQ29uc29sZUFnZW50IHsgbnVsbHB0ciB9OwotICAgIEluc3BlY3RvckRPTUFnZW50
KiBtX2luc3BlY3RvckRPTUFnZW50IHsgbnVsbHB0ciB9OwotICAgIEluc3BlY3Rvck5ldHdvcmtB
Z2VudCogbV9pbnNwZWN0b3JOZXR3b3JrQWdlbnQgeyBudWxscHRyIH07Ci0gICAgUGFnZVJ1bnRp
bWVBZ2VudCogbV9wYWdlUnVudGltZUFnZW50IHsgbnVsbHB0ciB9OwotICAgIEluc3BlY3Rvcjo6
SW5zcGVjdG9yU2NyaXB0UHJvZmlsZXJBZ2VudCogbV9pbnNwZWN0b3JTY3JpcHRQcm9maWxlckFn
ZW50IHsgbnVsbHB0ciB9OwotICAgIEluc3BlY3RvclRpbWVsaW5lQWdlbnQqIG1faW5zcGVjdG9y
VGltZWxpbmVBZ2VudCB7IG51bGxwdHIgfTsKLSAgICBJbnNwZWN0b3JUaW1lbGluZUFnZW50KiBt
X3RyYWNraW5nSW5zcGVjdG9yVGltZWxpbmVBZ2VudCB7IG51bGxwdHIgfTsKLSAgICBJbnNwZWN0
b3JET01TdG9yYWdlQWdlbnQqIG1faW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50IHsgbnVsbHB0ciB9
OwotI2lmIEVOQUJMRShSRVNPVVJDRV9VU0FHRSkKLSAgICBJbnNwZWN0b3JDUFVQcm9maWxlckFn
ZW50KiBtX2luc3BlY3RvckNQVVByb2ZpbGVyQWdlbnQgeyBudWxscHRyIH07Ci0gICAgSW5zcGVj
dG9yTWVtb3J5QWdlbnQqIG1faW5zcGVjdG9yTWVtb3J5QWdlbnQgeyBudWxscHRyIH07Ci0jZW5k
aWYKLSAgICBJbnNwZWN0b3JEYXRhYmFzZUFnZW50KiBtX2luc3BlY3RvckRhdGFiYXNlQWdlbnQg
eyBudWxscHRyIH07Ci0gICAgSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50KiBtX2luc3Bl
Y3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudCB7IG51bGxwdHIgfTsKLSAgICBXZWJEZWJ1Z2dlckFn
ZW50KiBtX3dlYkRlYnVnZ2VyQWdlbnQgeyBudWxscHRyIH07Ci0gICAgUGFnZURlYnVnZ2VyQWdl
bnQqIG1fcGFnZURlYnVnZ2VyQWdlbnQgeyBudWxscHRyIH07Ci0gICAgUGFnZUhlYXBBZ2VudCog
bV9wYWdlSGVhcEFnZW50IHsgbnVsbHB0ciB9OwotICAgIEluc3BlY3RvckRPTURlYnVnZ2VyQWdl
bnQqIG1faW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudCB7IG51bGxwdHIgfTsKLSAgICBQYWdlRE9N
RGVidWdnZXJBZ2VudCogbV9wYWdlRE9NRGVidWdnZXJBZ2VudCB7IG51bGxwdHIgfTsKLSAgICBJ
bnNwZWN0b3JDYW52YXNBZ2VudCogbV9pbnNwZWN0b3JDYW52YXNBZ2VudCB7IG51bGxwdHIgfTsK
LSAgICBJbnNwZWN0b3JBbmltYXRpb25BZ2VudCogbV9wZXJzaXN0ZW50SW5zcGVjdG9yQW5pbWF0
aW9uQWdlbnQgeyBudWxscHRyIH07Ci0gICAgSW5zcGVjdG9yQW5pbWF0aW9uQWdlbnQqIG1fZW5h
YmxlZEluc3BlY3RvckFuaW1hdGlvbkFnZW50IHsgbnVsbHB0ciB9OwotICAgIEluc3BlY3RvckFu
aW1hdGlvbkFnZW50KiBtX3RyYWNraW5nSW5zcGVjdG9yQW5pbWF0aW9uQWdlbnQgeyBudWxscHRy
IH07CisjZGVmaW5lIERFQ0xBUkVfTUVNQkVSX1ZBUklBQkxFX0ZPUl9JTlNQRUNUT1JfQUdFTlQo
Q2xhc3MsIE5hbWUsIEdldHRlciwgU2V0dGVyKSBcCisgICAgQ2xhc3MqIG1fIyNHZXR0ZXIjI05h
bWUgeyBudWxscHRyIH07IFwKKworRk9SX0VBQ0hfSU5TUEVDVE9SX0FHRU5UKERFQ0xBUkVfTUVN
QkVSX1ZBUklBQkxFX0ZPUl9JTlNQRUNUT1JfQUdFTlQpCisjdW5kZWYgREVDTEFSRV9NRU1CRVJf
VkFSSUFCTEVfRk9SX0lOU1BFQ1RPUl9BR0VOVAogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JB
bmltYXRpb25BZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3RvckFuaW1hdGlvbkFnZW50LmNwcAppbmRleCBlMTg1N2I4ZmY0NjI0ZDZmODMwNTU2ZjNlNjky
ODBiOGViMWQ1MTYxLi4wZmI5ZTkzN2YzMWIwZjIyNzY0MTNjNTYzZmQxODRlNThhOTUyMjQ2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckFuaW1h
dGlvbkFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3RvckFuaW1hdGlvbkFnZW50LmNwcApAQCAtMjMyLDggKzIzMiw4IEBAIEluc3BlY3RvckFuaW1h
dGlvbkFnZW50Ojp+SW5zcGVjdG9yQW5pbWF0aW9uQWdlbnQoKSA9IGRlZmF1bHQ7CiAKIHZvaWQg
SW5zcGVjdG9yQW5pbWF0aW9uQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChGcm9u
dGVuZFJvdXRlciosIEJhY2tlbmREaXNwYXRjaGVyKikKIHsKLSAgICBBU1NFUlQobV9pbnN0cnVt
ZW50aW5nQWdlbnRzLnBlcnNpc3RlbnRJbnNwZWN0b3JBbmltYXRpb25BZ2VudCgpICE9IHRoaXMp
OwotICAgIG1faW5zdHJ1bWVudGluZ0FnZW50cy5zZXRQZXJzaXN0ZW50SW5zcGVjdG9yQW5pbWF0
aW9uQWdlbnQodGhpcyk7CisgICAgQVNTRVJUKG1faW5zdHJ1bWVudGluZ0FnZW50cy5wZXJzaXN0
ZW50QW5pbWF0aW9uQWdlbnQoKSAhPSB0aGlzKTsKKyAgICBtX2luc3RydW1lbnRpbmdBZ2VudHMu
c2V0UGVyc2lzdGVudEFuaW1hdGlvbkFnZW50KHRoaXMpOwogfQogCiB2b2lkIEluc3BlY3RvckFu
aW1hdGlvbkFnZW50Ojp3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChEaXNjb25uZWN0UmVh
c29uKQpAQCAtMjQyLDE4ICsyNDIsMTggQEAgdm9pZCBJbnNwZWN0b3JBbmltYXRpb25BZ2VudDo6
d2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoRGlzY29ubmVjdFJlYXNvbikKICAgICBzdG9w
VHJhY2tpbmcoaWdub3JlZCk7CiAgICAgZGlzYWJsZShpZ25vcmVkKTsKIAotICAgIEFTU0VSVCht
X2luc3RydW1lbnRpbmdBZ2VudHMucGVyc2lzdGVudEluc3BlY3RvckFuaW1hdGlvbkFnZW50KCkg
PT0gdGhpcyk7Ci0gICAgbV9pbnN0cnVtZW50aW5nQWdlbnRzLnNldFBlcnNpc3RlbnRJbnNwZWN0
b3JBbmltYXRpb25BZ2VudChudWxscHRyKTsKKyAgICBBU1NFUlQobV9pbnN0cnVtZW50aW5nQWdl
bnRzLnBlcnNpc3RlbnRBbmltYXRpb25BZ2VudCgpID09IHRoaXMpOworICAgIG1faW5zdHJ1bWVu
dGluZ0FnZW50cy5zZXRQZXJzaXN0ZW50QW5pbWF0aW9uQWdlbnQobnVsbHB0cik7CiB9CiAKIHZv
aWQgSW5zcGVjdG9yQW5pbWF0aW9uQWdlbnQ6OmVuYWJsZShFcnJvclN0cmluZyYgZXJyb3JTdHJp
bmcpCiB7Ci0gICAgaWYgKG1faW5zdHJ1bWVudGluZ0FnZW50cy5lbmFibGVkSW5zcGVjdG9yQW5p
bWF0aW9uQWdlbnQoKSA9PSB0aGlzKSB7CisgICAgaWYgKG1faW5zdHJ1bWVudGluZ0FnZW50cy5l
bmFibGVkQW5pbWF0aW9uQWdlbnQoKSA9PSB0aGlzKSB7CiAgICAgICAgIGVycm9yU3RyaW5nID0g
IkFuaW1hdGlvbiBkb21haW4gYWxyZWFkeSBlbmFibGVkIl9zOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCi0gICAgbV9pbnN0cnVtZW50aW5nQWdlbnRzLnNldEVuYWJsZWRJbnNwZWN0b3JBbmlt
YXRpb25BZ2VudCh0aGlzKTsKKyAgICBtX2luc3RydW1lbnRpbmdBZ2VudHMuc2V0RW5hYmxlZEFu
aW1hdGlvbkFnZW50KHRoaXMpOwogCiAgICAgY29uc3QgYXV0byBleGlzdHNJbkN1cnJlbnRQYWdl
ID0gWyZdIChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KSB7
CiAgICAgICAgIGlmICghaXM8RG9jdW1lbnQ+KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpKQpAQCAt
Mjc0LDcgKzI3NCw3IEBAIHZvaWQgSW5zcGVjdG9yQW5pbWF0aW9uQWdlbnQ6OmVuYWJsZShFcnJv
clN0cmluZyYgZXJyb3JTdHJpbmcpCiAKIHZvaWQgSW5zcGVjdG9yQW5pbWF0aW9uQWdlbnQ6OmRp
c2FibGUoRXJyb3JTdHJpbmcmKQogewotICAgIG1faW5zdHJ1bWVudGluZ0FnZW50cy5zZXRFbmFi
bGVkSW5zcGVjdG9yQW5pbWF0aW9uQWdlbnQobnVsbHB0cik7CisgICAgbV9pbnN0cnVtZW50aW5n
QWdlbnRzLnNldEVuYWJsZWRBbmltYXRpb25BZ2VudChudWxscHRyKTsKIAogICAgIHJlc2V0KCk7
CiB9CkBAIC0yODUsNyArMjg1LDcgQEAgdm9pZCBJbnNwZWN0b3JBbmltYXRpb25BZ2VudDo6cmVx
dWVzdEVmZmVjdFRhcmdldChFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnMKICAgICBpZiAo
IWFuaW1hdGlvbikKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byogZG9tQWdlbnQgPSBtX2lu
c3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yRE9NQWdlbnQoKTsKKyAgICBhdXRvKiBkb21BZ2Vu
dCA9IG1faW5zdHJ1bWVudGluZ0FnZW50cy5wZXJzaXN0ZW50RE9NQWdlbnQoKTsKICAgICBpZiAo
IWRvbUFnZW50KSB7CiAgICAgICAgIGVycm9yU3RyaW5nID0gIkRPTSBkb21haW4gbXVzdCBiZSBl
bmFibGVkIl9zOwogICAgICAgICByZXR1cm47CkBAIC0zMzgsMTIgKzMzOCwxMiBAQCB2b2lkIElu
c3BlY3RvckFuaW1hdGlvbkFnZW50OjpyZXNvbHZlQW5pbWF0aW9uKEVycm9yU3RyaW5nJiBlcnJv
clN0cmluZywgY29uc3QgUwogCiB2b2lkIEluc3BlY3RvckFuaW1hdGlvbkFnZW50OjpzdGFydFRy
YWNraW5nKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZykKIHsKLSAgICBpZiAobV9pbnN0cnVtZW50
aW5nQWdlbnRzLnRyYWNraW5nSW5zcGVjdG9yQW5pbWF0aW9uQWdlbnQoKSA9PSB0aGlzKSB7Cisg
ICAgaWYgKG1faW5zdHJ1bWVudGluZ0FnZW50cy50cmFja2luZ0FuaW1hdGlvbkFnZW50KCkgPT0g
dGhpcykgewogICAgICAgICBlcnJvclN0cmluZyA9ICJBbmltYXRpb24gZG9tYWluIGFscmVhZHkg
dHJhY2tpbmciX3M7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBtX2luc3RydW1lbnRp
bmdBZ2VudHMuc2V0VHJhY2tpbmdJbnNwZWN0b3JBbmltYXRpb25BZ2VudCh0aGlzKTsKKyAgICBt
X2luc3RydW1lbnRpbmdBZ2VudHMuc2V0VHJhY2tpbmdBbmltYXRpb25BZ2VudCh0aGlzKTsKIAog
ICAgIEFTU0VSVChtX3RyYWNrZWREZWNsYXJhdGl2ZUFuaW1hdGlvbkRhdGEuaXNFbXB0eSgpKTsK
IApAQCAtMzUyLDEwICszNTIsMTAgQEAgdm9pZCBJbnNwZWN0b3JBbmltYXRpb25BZ2VudDo6c3Rh
cnRUcmFja2luZyhFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcpCiAKIHZvaWQgSW5zcGVjdG9yQW5p
bWF0aW9uQWdlbnQ6OnN0b3BUcmFja2luZyhFcnJvclN0cmluZyYpCiB7Ci0gICAgaWYgKG1faW5z
dHJ1bWVudGluZ0FnZW50cy50cmFja2luZ0luc3BlY3RvckFuaW1hdGlvbkFnZW50KCkgIT0gdGhp
cykKKyAgICBpZiAobV9pbnN0cnVtZW50aW5nQWdlbnRzLnRyYWNraW5nQW5pbWF0aW9uQWdlbnQo
KSAhPSB0aGlzKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX2luc3RydW1lbnRpbmdBZ2VudHMu
c2V0VHJhY2tpbmdJbnNwZWN0b3JBbmltYXRpb25BZ2VudChudWxscHRyKTsKKyAgICBtX2luc3Ry
dW1lbnRpbmdBZ2VudHMuc2V0VHJhY2tpbmdBbmltYXRpb25BZ2VudChudWxscHRyKTsKIAogICAg
IG1fdHJhY2tlZERlY2xhcmF0aXZlQW5pbWF0aW9uRGF0YS5jbGVhcigpOwogCkBAIC00MTgsNyAr
NDE4LDcgQEAgdm9pZCBJbnNwZWN0b3JBbmltYXRpb25BZ2VudDo6d2lsbEFwcGx5S2V5ZnJhbWVF
ZmZlY3QoRWxlbWVudCYgdGFyZ2V0LCBLZXlmcmFtZUUKICAgICAgICAgLnJlbGVhc2UoKTsKIAog
ICAgIGlmIChlbnN1cmVSZXN1bHQuaXNOZXdFbnRyeSkgewotICAgICAgICBpZiAoYXV0byogZG9t
QWdlbnQgPSBtX2luc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yRE9NQWdlbnQoKSkgeworICAg
ICAgICBpZiAoYXV0byogZG9tQWdlbnQgPSBtX2luc3RydW1lbnRpbmdBZ2VudHMucGVyc2lzdGVu
dERPTUFnZW50KCkpIHsKICAgICAgICAgICAgIGlmIChhdXRvIG5vZGVJZCA9IGRvbUFnZW50LT5w
dXNoTm9kZVRvRnJvbnRlbmQoJnRhcmdldCkpCiAgICAgICAgICAgICAgICAgZXZlbnQtPnNldE5v
ZGVJZChub2RlSWQpOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvYWdlbnRzL0luc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5j
cHAKaW5kZXggZWY1YWM2NDQ3NmQ4ODE3NzY5YTI1MjMyZjM0Njg5OTI3NTBkNTIwOS4uZTFiYTg1
NGNhZjBlYjNlMjdmYzZhODJkYWRkZjBhYWVjMGY4ODdhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQXBwbGljYXRp
b25DYWNoZUFnZW50LmNwcApAQCAtNjQsMTIgKzY0LDEyIEBAIHZvaWQgSW5zcGVjdG9yQXBwbGlj
YXRpb25DYWNoZUFnZW50Ojp3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6
OkRpCiAKIHZvaWQgSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50OjplbmFibGUoRXJyb3JT
dHJpbmcmIGVycm9yU3RyaW5nKQogewotICAgIGlmIChtX2luc3RydW1lbnRpbmdBZ2VudHMuaW5z
cGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50KCkgPT0gdGhpcykgeworICAgIGlmIChtX2luc3Ry
dW1lbnRpbmdBZ2VudHMuZW5hYmxlZEFwcGxpY2F0aW9uQ2FjaGVBZ2VudCgpID09IHRoaXMpIHsK
ICAgICAgICAgZXJyb3JTdHJpbmcgPSAiQXBwbGljYXRpb25DYWNoZSBkb21haW4gYWxyZWFkeSBl
bmFibGVkIl9zOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbV9pbnN0cnVtZW50aW5n
QWdlbnRzLnNldEluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudCh0aGlzKTsKKyAgICBtX2lu
c3RydW1lbnRpbmdBZ2VudHMuc2V0RW5hYmxlZEFwcGxpY2F0aW9uQ2FjaGVBZ2VudCh0aGlzKTsK
IAogICAgIC8vIFdlIG5lZWQgdG8gcGFzcyBpbml0aWFsIG5hdmlnYXRvci5vbk9ubGluZS4KICAg
ICBuZXR3b3JrU3RhdGVDaGFuZ2VkKCk7CkBAIC03NywxNyArNzcsMTcgQEAgdm9pZCBJbnNwZWN0
b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQ6OmVuYWJsZShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcp
CiAKIHZvaWQgSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50OjpkaXNhYmxlKEVycm9yU3Ry
aW5nJiBlcnJvclN0cmluZykKIHsKLSAgICBpZiAobV9pbnN0cnVtZW50aW5nQWdlbnRzLmluc3Bl
Y3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudCgpICE9IHRoaXMpIHsKKyAgICBpZiAobV9pbnN0cnVt
ZW50aW5nQWdlbnRzLmVuYWJsZWRBcHBsaWNhdGlvbkNhY2hlQWdlbnQoKSAhPSB0aGlzKSB7CiAg
ICAgICAgIGVycm9yU3RyaW5nID0gIkFwcGxpY2F0aW9uQ2FjaGUgZG9tYWluIGFscmVhZHkgZGlz
YWJsZWQiX3M7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBtX2luc3RydW1lbnRpbmdB
Z2VudHMuc2V0SW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50KG51bGxwdHIpOworICAgIG1f
aW5zdHJ1bWVudGluZ0FnZW50cy5zZXRFbmFibGVkQXBwbGljYXRpb25DYWNoZUFnZW50KG51bGxw
dHIpOwogfQogCiB2b2lkIEluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudDo6dXBkYXRlQXBw
bGljYXRpb25DYWNoZVN0YXR1cyhGcmFtZSogZnJhbWUpCiB7Ci0gICAgYXV0byogcGFnZUFnZW50
ID0gbV9pbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3RvclBhZ2VBZ2VudCgpOworICAgIGF1dG8q
IHBhZ2VBZ2VudCA9IG1faW5zdHJ1bWVudGluZ0FnZW50cy5lbmFibGVkUGFnZUFnZW50KCk7CiAg
ICAgaWYgKCFwYWdlQWdlbnQpCiAgICAgICAgIHJldHVybjsKIApAQCAtMTEyLDcgKzExMiw3IEBA
IHZvaWQgSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50OjpuZXR3b3JrU3RhdGVDaGFuZ2Vk
KCkKIAogdm9pZCBJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQ6OmdldEZyYW1lc1dpdGhN
YW5pZmVzdHMoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBSZWZQdHI8SlNPTjo6QXJyYXlPZjxJ
bnNwZWN0b3I6OlByb3RvY29sOjpBcHBsaWNhdGlvbkNhY2hlOjpGcmFtZVdpdGhNYW5pZmVzdD4+
JiByZXN1bHQpCiB7Ci0gICAgYXV0byogcGFnZUFnZW50ID0gbV9pbnN0cnVtZW50aW5nQWdlbnRz
Lmluc3BlY3RvclBhZ2VBZ2VudCgpOworICAgIGF1dG8qIHBhZ2VBZ2VudCA9IG1faW5zdHJ1bWVu
dGluZ0FnZW50cy5lbmFibGVkUGFnZUFnZW50KCk7CiAgICAgaWYgKCFwYWdlQWdlbnQpIHsKICAg
ICAgICAgZXJyb3JTdHJpbmcgPSAiUGFnZSBkb21haW4gbXVzdCBiZSBlbmFibGVkIl9zOwogICAg
ICAgICByZXR1cm47CkBAIC0xMzksNyArMTM5LDcgQEAgdm9pZCBJbnNwZWN0b3JBcHBsaWNhdGlv
bkNhY2hlQWdlbnQ6OmdldEZyYW1lc1dpdGhNYW5pZmVzdHMoRXJyb3JTdHJpbmcmIGVycm9yU3QK
IAogRG9jdW1lbnRMb2FkZXIqIEluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudDo6YXNzZXJ0
RnJhbWVXaXRoRG9jdW1lbnRMb2FkZXIoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBT
dHJpbmcmIGZyYW1lSWQpCiB7Ci0gICAgYXV0byogcGFnZUFnZW50ID0gbV9pbnN0cnVtZW50aW5n
QWdlbnRzLmluc3BlY3RvclBhZ2VBZ2VudCgpOworICAgIGF1dG8qIHBhZ2VBZ2VudCA9IG1faW5z
dHJ1bWVudGluZ0FnZW50cy5lbmFibGVkUGFnZUFnZW50KCk7CiAgICAgaWYgKCFwYWdlQWdlbnQp
IHsKICAgICAgICAgZXJyb3JTdHJpbmcgPSAiUGFnZSBkb21haW4gbXVzdCBiZSBlbmFibGVkIl9z
OwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ1BVUHJvZmlsZXJBZ2VudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNQVVByb2ZpbGVyQWdlbnQuY3BwCmluZGV4
IDMwNWQ5MjM4ODViZmZjNWRjOTEzZWJjZGQwNDVjODFiOTA1NmFkNzAuLmEwZTZmYzQ1MzE1MTZk
OTg5MzIxMTViYjRiOWNhMmIyYzIzMDU2OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ1BVUHJvZmlsZXJBZ2VudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDUFVQcm9maWxlckFnZW50LmNwcApA
QCAtNDgsNyArNDgsNyBAQCBJbnNwZWN0b3JDUFVQcm9maWxlckFnZW50Ojp+SW5zcGVjdG9yQ1BV
UHJvZmlsZXJBZ2VudCgpID0gZGVmYXVsdDsKIAogdm9pZCBJbnNwZWN0b3JDUFVQcm9maWxlckFn
ZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoRnJvbnRlbmRSb3V0ZXIqLCBCYWNrZW5k
RGlzcGF0Y2hlciopCiB7Ci0gICAgbV9pbnN0cnVtZW50aW5nQWdlbnRzLnNldEluc3BlY3RvckNQ
VVByb2ZpbGVyQWdlbnQodGhpcyk7CisgICAgbV9pbnN0cnVtZW50aW5nQWdlbnRzLnNldFBlcnNp
c3RlbnRDUFVQcm9maWxlckFnZW50KHRoaXMpOwogfQogCiB2b2lkIEluc3BlY3RvckNQVVByb2Zp
bGVyQWdlbnQ6OndpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKERpc2Nvbm5lY3RSZWFzb24p
CkBAIC01Niw3ICs1Niw3IEBAIHZvaWQgSW5zcGVjdG9yQ1BVUHJvZmlsZXJBZ2VudDo6d2lsbERl
c3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoRGlzY29ubmVjdFJlYXNvbikKICAgICBFcnJvclN0cmlu
ZyBpZ25vcmVkOwogICAgIHN0b3BUcmFja2luZyhpZ25vcmVkKTsKIAotICAgIG1faW5zdHJ1bWVu
dGluZ0FnZW50cy5zZXRJbnNwZWN0b3JDUFVQcm9maWxlckFnZW50KG51bGxwdHIpOworICAgIG1f
aW5zdHJ1bWVudGluZ0FnZW50cy5zZXRQZXJzaXN0ZW50Q1BVUHJvZmlsZXJBZ2VudChudWxscHRy
KTsKIH0KIAogdm9pZCBJbnNwZWN0b3JDUFVQcm9maWxlckFnZW50OjpzdGFydFRyYWNraW5nKEVy
cm9yU3RyaW5nJikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9yQ1NTQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9J
bnNwZWN0b3JDU1NBZ2VudC5jcHAKaW5kZXggYmRlYmE5YTYzZDc2ZmQ0YmFkMTdlZmEwMmI0NTJh
OTExYTgyMDhjNi4uZjRmYTc3MGUwM2I3MDcwNjRkMTIzMmZmODQ0MzkwNjM4YzE4NDE3YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDU1NBZ2Vu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDU1NB
Z2VudC5jcHAKQEAgLTMyOSwxMiArMzI5LDEyIEBAIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OnJl
c2V0KCkKIAogdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6ZW5hYmxlKEVycm9yU3RyaW5nJikKIHsK
LSAgICBpZiAobV9pbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3RvckNTU0FnZW50KCkgPT0gdGhp
cykKKyAgICBpZiAobV9pbnN0cnVtZW50aW5nQWdlbnRzLmVuYWJsZWRDU1NBZ2VudCgpID09IHRo
aXMpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1faW5zdHJ1bWVudGluZ0FnZW50cy5zZXRJbnNw
ZWN0b3JDU1NBZ2VudCh0aGlzKTsKKyAgICBtX2luc3RydW1lbnRpbmdBZ2VudHMuc2V0RW5hYmxl
ZENTU0FnZW50KHRoaXMpOwogCi0gICAgaWYgKGF1dG8qIGRvbUFnZW50ID0gbV9pbnN0cnVtZW50
aW5nQWdlbnRzLmluc3BlY3RvckRPTUFnZW50KCkpIHsKKyAgICBpZiAoYXV0byogZG9tQWdlbnQg
PSBtX2luc3RydW1lbnRpbmdBZ2VudHMucGVyc2lzdGVudERPTUFnZW50KCkpIHsKICAgICAgICAg
Zm9yIChhdXRvKiBkb2N1bWVudCA6IGRvbUFnZW50LT5kb2N1bWVudHMoKSkKICAgICAgICAgICAg
IGFjdGl2ZVN0eWxlU2hlZXRzVXBkYXRlZCgqZG9jdW1lbnQpOwogICAgIH0KQEAgLTM0Miw3ICsz
NDIsNyBAQCB2b2lkIEluc3BlY3RvckNTU0FnZW50OjplbmFibGUoRXJyb3JTdHJpbmcmKQogCiB2
b2lkIEluc3BlY3RvckNTU0FnZW50OjpkaXNhYmxlKEVycm9yU3RyaW5nJikKIHsKLSAgICBtX2lu
c3RydW1lbnRpbmdBZ2VudHMuc2V0SW5zcGVjdG9yQ1NTQWdlbnQobnVsbHB0cik7CisgICAgbV9p
bnN0cnVtZW50aW5nQWdlbnRzLnNldEVuYWJsZWRDU1NBZ2VudChudWxscHRyKTsKIAogICAgIHJl
c2V0KCk7CiB9CkBAIC00MDYsNyArNDA2LDcgQEAgYm9vbCBJbnNwZWN0b3JDU1NBZ2VudDo6Zm9y
Y2VQc2V1ZG9TdGF0ZShjb25zdCBFbGVtZW50JiBlbGVtZW50LCBDU1NTZWxlY3Rvcjo6UHMKICAg
ICBpZiAobV9ub2RlSWRUb0ZvcmNlZFBzZXVkb1N0YXRlLmlzRW1wdHkoKSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCi0gICAgYXV0byogZG9tQWdlbnQgPSBtX2luc3RydW1lbnRpbmdBZ2VudHMu
aW5zcGVjdG9yRE9NQWdlbnQoKTsKKyAgICBhdXRvKiBkb21BZ2VudCA9IG1faW5zdHJ1bWVudGlu
Z0FnZW50cy5wZXJzaXN0ZW50RE9NQWdlbnQoKTsKICAgICBpZiAoIWRvbUFnZW50KQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKQEAgLTU2OSw3ICs1NjksNyBAQCB2b2lkIEluc3BlY3RvckNTU0Fn
ZW50OjpnZXRBbGxTdHlsZVNoZWV0cyhFcnJvclN0cmluZyYsIFJlZlB0cjxKU09OOjpBcnJheU9m
PElucwogdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6Y29sbGVjdEFsbFN0eWxlU2hlZXRzKFZlY3Rv
cjxJbnNwZWN0b3JTdHlsZVNoZWV0Kj4mIHJlc3VsdCkKIHsKICAgICBWZWN0b3I8Q1NTU3R5bGVT
aGVldCo+IGNzc1N0eWxlU2hlZXRzOwotICAgIGlmIChhdXRvKiBkb21BZ2VudCA9IG1faW5zdHJ1
bWVudGluZ0FnZW50cy5pbnNwZWN0b3JET01BZ2VudCgpKSB7CisgICAgaWYgKGF1dG8qIGRvbUFn
ZW50ID0gbV9pbnN0cnVtZW50aW5nQWdlbnRzLnBlcnNpc3RlbnRET01BZ2VudCgpKSB7CiAgICAg
ICAgIGZvciAoYXV0byogZG9jdW1lbnQgOiBkb21BZ2VudC0+ZG9jdW1lbnRzKCkpCiAgICAgICAg
ICAgICBjb2xsZWN0QWxsRG9jdW1lbnRTdHlsZVNoZWV0cygqZG9jdW1lbnQsIGNzc1N0eWxlU2hl
ZXRzKTsKICAgICB9CkBAIC02MjQsNyArNjI0LDcgQEAgdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6
c2V0U3R5bGVTaGVldFRleHQoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcK
ICAgICBpZiAoIWluc3BlY3RvclN0eWxlU2hlZXQpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1
dG8qIGRvbUFnZW50ID0gbV9pbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3RvckRPTUFnZW50KCk7
CisgICAgYXV0byogZG9tQWdlbnQgPSBtX2luc3RydW1lbnRpbmdBZ2VudHMucGVyc2lzdGVudERP
TUFnZW50KCk7CiAgICAgaWYgKCFkb21BZ2VudCkgewogICAgICAgICBlcnJvclN0cmluZyA9ICJE
T00gZG9tYWluIG11c3QgYmUgZW5hYmxlZCJfczsKICAgICAgICAgcmV0dXJuOwpAQCAtNjQ0LDcg
KzY0NCw3IEBAIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OnNldFN0eWxlVGV4dChFcnJvclN0cmlu
ZyYgZXJyb3JTdHJpbmcsIGNvbnN0IEpTT046Ok9iamVjCiAgICAgaWYgKCFpbnNwZWN0b3JTdHls
ZVNoZWV0KQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvKiBkb21BZ2VudCA9IG1faW5zdHJ1
bWVudGluZ0FnZW50cy5pbnNwZWN0b3JET01BZ2VudCgpOworICAgIGF1dG8qIGRvbUFnZW50ID0g
bV9pbnN0cnVtZW50aW5nQWdlbnRzLnBlcnNpc3RlbnRET01BZ2VudCgpOwogICAgIGlmICghZG9t
QWdlbnQpIHsKICAgICAgICAgZXJyb3JTdHJpbmcgPSAiRE9NIGRvbWFpbiBtdXN0IGJlIGVuYWJs
ZWQiX3M7CiAgICAgICAgIHJldHVybjsKQEAgLTY2OCw3ICs2NjgsNyBAQCB2b2lkIEluc3BlY3Rv
ckNTU0FnZW50OjpzZXRSdWxlU2VsZWN0b3IoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25z
dCBKU09OOjpPYgogICAgIGlmICghaW5zcGVjdG9yU3R5bGVTaGVldCkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgYXV0byogZG9tQWdlbnQgPSBtX2luc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9y
RE9NQWdlbnQoKTsKKyAgICBhdXRvKiBkb21BZ2VudCA9IG1faW5zdHJ1bWVudGluZ0FnZW50cy5w
ZXJzaXN0ZW50RE9NQWdlbnQoKTsKICAgICBpZiAoIWRvbUFnZW50KSB7CiAgICAgICAgIGVycm9y
U3RyaW5nID0gIkRPTSBkb21haW4gbXVzdCBiZSBlbmFibGVkIl9zOwogICAgICAgICByZXR1cm47
CkBAIC02ODUsNyArNjg1LDcgQEAgdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6c2V0UnVsZVNlbGVj
dG9yKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgSlNPTjo6T2IKIAogdm9pZCBJbnNw
ZWN0b3JDU1NBZ2VudDo6Y3JlYXRlU3R5bGVTaGVldChFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcs
IGNvbnN0IFN0cmluZyYgZnJhbWVJZCwgU3RyaW5nKiBzdHlsZVNoZWV0SWQpCiB7Ci0gICAgYXV0
byogcGFnZUFnZW50ID0gbV9pbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3RvclBhZ2VBZ2VudCgp
OworICAgIGF1dG8qIHBhZ2VBZ2VudCA9IG1faW5zdHJ1bWVudGluZ0FnZW50cy5lbmFibGVkUGFn
ZUFnZW50KCk7CiAgICAgaWYgKCFwYWdlQWdlbnQpIHsKICAgICAgICAgZXJyb3JTdHJpbmcgPSAi
UGFnZSBkb21haW4gbXVzdCBiZSBlbmFibGVkIl9zOwogICAgICAgICByZXR1cm47CkBAIC03NTcs
NyArNzU3LDcgQEAgdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6YWRkUnVsZShFcnJvclN0cmluZyYg
ZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgc3R5bGVTaGUKICAgICBpZiAoIWluc3BlY3RvclN0
eWxlU2hlZXQpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8qIGRvbUFnZW50ID0gbV9pbnN0
cnVtZW50aW5nQWdlbnRzLmluc3BlY3RvckRPTUFnZW50KCk7CisgICAgYXV0byogZG9tQWdlbnQg
PSBtX2luc3RydW1lbnRpbmdBZ2VudHMucGVyc2lzdGVudERPTUFnZW50KCk7CiAgICAgaWYgKCFk
b21BZ2VudCkgewogICAgICAgICBlcnJvclN0cmluZyA9ICJET00gZG9tYWluIG11c3QgYmUgZW5h
YmxlZCJfczsKICAgICAgICAgcmV0dXJuOwpAQCAtODM5LDcgKzgzOSw3IEBAIHZvaWQgSW5zcGVj
dG9yQ1NTQWdlbnQ6OmdldFN1cHBvcnRlZFN5c3RlbUZvbnRGYW1pbHlOYW1lcyhFcnJvclN0cmlu
ZyYsIFJlZlB0cjxKCiAKIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmZvcmNlUHNldWRvU3RhdGUo
RXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBpbnQgbm9kZUlkLCBjb25zdCBKU09OOjpBcnJheSYg
Zm9yY2VkUHNldWRvQ2xhc3NlcykKIHsKLSAgICBhdXRvKiBkb21BZ2VudCA9IG1faW5zdHJ1bWVu
dGluZ0FnZW50cy5pbnNwZWN0b3JET01BZ2VudCgpOworICAgIGF1dG8qIGRvbUFnZW50ID0gbV9p
bnN0cnVtZW50aW5nQWdlbnRzLnBlcnNpc3RlbnRET01BZ2VudCgpOwogICAgIGlmICghZG9tQWdl
bnQpIHsKICAgICAgICAgZXJyb3JTdHJpbmcgPSAiRE9NIGRvbWFpbiBtdXN0IGJlIGVuYWJsZWQi
X3M7CiAgICAgICAgIHJldHVybjsKQEAgLTg3MSw3ICs4NzEsNyBAQCBJbnNwZWN0b3JTdHlsZVNo
ZWV0Rm9ySW5saW5lU3R5bGUmIEluc3BlY3RvckNTU0FnZW50Ojphc0luc3BlY3RvclN0eWxlU2hl
ZXQoU3R5bAogewogICAgIHJldHVybiBtX25vZGVUb0luc3BlY3RvclN0eWxlU2hlZXQuZW5zdXJl
KCZlbGVtZW50LCBbdGhpcywgJmVsZW1lbnRdIHsKICAgICAgICAgU3RyaW5nIG5ld1N0eWxlU2hl
ZXRJZCA9IFN0cmluZzo6bnVtYmVyKG1fbGFzdFN0eWxlU2hlZXRJZCsrKTsKLSAgICAgICAgYXV0
byBpbnNwZWN0b3JTdHlsZVNoZWV0ID0gSW5zcGVjdG9yU3R5bGVTaGVldEZvcklubGluZVN0eWxl
OjpjcmVhdGUobV9pbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3RvclBhZ2VBZ2VudCgpLCBuZXdT
dHlsZVNoZWV0SWQsIGVsZW1lbnQsIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6U3R5bGVTaGVl
dE9yaWdpbjo6QXV0aG9yLCB0aGlzKTsKKyAgICAgICAgYXV0byBpbnNwZWN0b3JTdHlsZVNoZWV0
ID0gSW5zcGVjdG9yU3R5bGVTaGVldEZvcklubGluZVN0eWxlOjpjcmVhdGUobV9pbnN0cnVtZW50
aW5nQWdlbnRzLmVuYWJsZWRQYWdlQWdlbnQoKSwgbmV3U3R5bGVTaGVldElkLCBlbGVtZW50LCBJ
bnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OlN0eWxlU2hlZXRPcmlnaW46OkF1dGhvciwgdGhpcyk7
CiAgICAgICAgIG1faWRUb0luc3BlY3RvclN0eWxlU2hlZXQuc2V0KG5ld1N0eWxlU2hlZXRJZCwg
aW5zcGVjdG9yU3R5bGVTaGVldC5jb3B5UmVmKCkpOwogICAgICAgICByZXR1cm4gaW5zcGVjdG9y
U3R5bGVTaGVldDsKICAgICB9KS5pdGVyYXRvci0+dmFsdWU7CkBAIC04NzksNyArODc5LDcgQEAg
SW5zcGVjdG9yU3R5bGVTaGVldEZvcklubGluZVN0eWxlJiBJbnNwZWN0b3JDU1NBZ2VudDo6YXNJ
bnNwZWN0b3JTdHlsZVNoZWV0KFN0eWwKIAogRWxlbWVudCogSW5zcGVjdG9yQ1NTQWdlbnQ6OmVs
ZW1lbnRGb3JJZChFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGludCBub2RlSWQpCiB7Ci0gICAg
YXV0byogZG9tQWdlbnQgPSBtX2luc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yRE9NQWdlbnQo
KTsKKyAgICBhdXRvKiBkb21BZ2VudCA9IG1faW5zdHJ1bWVudGluZ0FnZW50cy5wZXJzaXN0ZW50
RE9NQWdlbnQoKTsKICAgICBpZiAoIWRvbUFnZW50KSB7CiAgICAgICAgIGVycm9yU3RyaW5nID0g
IkRPTSBkb21haW4gbXVzdCBiZSBlbmFibGVkIl9zOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
QEAgLTkwMyw3ICs5MDMsNyBAQCBJbnNwZWN0b3JTdHlsZVNoZWV0KiBJbnNwZWN0b3JDU1NBZ2Vu
dDo6YmluZFN0eWxlU2hlZXQoQ1NTU3R5bGVTaGVldCogc3R5bGVTaGVldAogICAgIGlmICghaW5z
cGVjdG9yU3R5bGVTaGVldCkgewogICAgICAgICBTdHJpbmcgaWQgPSBTdHJpbmc6Om51bWJlciht
X2xhc3RTdHlsZVNoZWV0SWQrKyk7CiAgICAgICAgIERvY3VtZW50KiBkb2N1bWVudCA9IHN0eWxl
U2hlZXQtPm93bmVyRG9jdW1lbnQoKTsKLSAgICAgICAgaW5zcGVjdG9yU3R5bGVTaGVldCA9IElu
c3BlY3RvclN0eWxlU2hlZXQ6OmNyZWF0ZShtX2luc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9y
UGFnZUFnZW50KCksIGlkLCBzdHlsZVNoZWV0LCBkZXRlY3RPcmlnaW4oc3R5bGVTaGVldCwgZG9j
dW1lbnQpLCBJbnNwZWN0b3JET01BZ2VudDo6ZG9jdW1lbnRVUkxTdHJpbmcoZG9jdW1lbnQpLCB0
aGlzKTsKKyAgICAgICAgaW5zcGVjdG9yU3R5bGVTaGVldCA9IEluc3BlY3RvclN0eWxlU2hlZXQ6
OmNyZWF0ZShtX2luc3RydW1lbnRpbmdBZ2VudHMuZW5hYmxlZFBhZ2VBZ2VudCgpLCBpZCwgc3R5
bGVTaGVldCwgZGV0ZWN0T3JpZ2luKHN0eWxlU2hlZXQsIGRvY3VtZW50KSwgSW5zcGVjdG9yRE9N
QWdlbnQ6OmRvY3VtZW50VVJMU3RyaW5nKGRvY3VtZW50KSwgdGhpcyk7CiAgICAgICAgIG1faWRU
b0luc3BlY3RvclN0eWxlU2hlZXQuc2V0KGlkLCBpbnNwZWN0b3JTdHlsZVNoZWV0KTsKICAgICAg
ICAgbV9jc3NTdHlsZVNoZWV0VG9JbnNwZWN0b3JTdHlsZVNoZWV0LnNldChzdHlsZVNoZWV0LCBp
bnNwZWN0b3JTdHlsZVNoZWV0KTsKICAgICAgICAgaWYgKG1fY3JlYXRpbmdWaWFJbnNwZWN0b3JT
dHlsZVNoZWV0KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRz
L0luc3BlY3RvckNhbnZhc0FnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2Vu
dHMvSW5zcGVjdG9yQ2FudmFzQWdlbnQuY3BwCmluZGV4IDcyYjczN2Y5NDI3YjIxYzY1MDAwYTg0
YTA2ODZlMzIyODVjNGQ3YjcuLmM2MzA5ZmYxNWIzZGIxOGY0MjRhYzM1ZmEyMjdjZWU5ODZmY2Vl
N2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
Q2FudmFzQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9yQ2FudmFzQWdlbnQuY3BwCkBAIC0xMTMsMTAgKzExMywxMCBAQCB2b2lkIEluc3BlY3Rv
ckNhbnZhc0FnZW50OjpkaXNjYXJkQWdlbnQoKQogCiB2b2lkIEluc3BlY3RvckNhbnZhc0FnZW50
OjplbmFibGUoRXJyb3JTdHJpbmcmKQogewotICAgIGlmIChtX2luc3RydW1lbnRpbmdBZ2VudHMu
aW5zcGVjdG9yQ2FudmFzQWdlbnQoKSA9PSB0aGlzKQorICAgIGlmIChtX2luc3RydW1lbnRpbmdB
Z2VudHMuZW5hYmxlZENhbnZhc0FnZW50KCkgPT0gdGhpcykKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgbV9pbnN0cnVtZW50aW5nQWdlbnRzLnNldEluc3BlY3RvckNhbnZhc0FnZW50KHRoaXMpOwor
ICAgIG1faW5zdHJ1bWVudGluZ0FnZW50cy5zZXRFbmFibGVkQ2FudmFzQWdlbnQodGhpcyk7CiAK
ICAgICBjb25zdCBhdXRvIGV4aXN0c0luQ3VycmVudFBhZ2UgPSBbJl0gKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpIHsKICAgICAgICAgaWYgKCFpczxEb2N1
bWVudD4oc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkpCkBAIC0xNzQsNyArMTc0LDcgQEAgdm9pZCBJ
bnNwZWN0b3JDYW52YXNBZ2VudDo6ZW5hYmxlKEVycm9yU3RyaW5nJikKIAogdm9pZCBJbnNwZWN0
b3JDYW52YXNBZ2VudDo6ZGlzYWJsZShFcnJvclN0cmluZyYpCiB7Ci0gICAgbV9pbnN0cnVtZW50
aW5nQWdlbnRzLnNldEluc3BlY3RvckNhbnZhc0FnZW50KG51bGxwdHIpOworICAgIG1faW5zdHJ1
bWVudGluZ0FnZW50cy5zZXRFbmFibGVkQ2FudmFzQWdlbnQobnVsbHB0cik7CiAKICAgICByZXNl
dCgpOwogCkBAIC0xOTMsMTMgKzE5MywxMyBAQCB2b2lkIEluc3BlY3RvckNhbnZhc0FnZW50Ojpy
ZXF1ZXN0Tm9kZShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgYwogICAg
ICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaW50IGRvY3VtZW50Tm9kZUlkID0gbV9pbnN0cnVt
ZW50aW5nQWdlbnRzLmluc3BlY3RvckRPTUFnZW50KCktPmJvdW5kTm9kZUlkKCZub2RlLT5kb2N1
bWVudCgpKTsKKyAgICBpbnQgZG9jdW1lbnROb2RlSWQgPSBtX2luc3RydW1lbnRpbmdBZ2VudHMu
cGVyc2lzdGVudERPTUFnZW50KCktPmJvdW5kTm9kZUlkKCZub2RlLT5kb2N1bWVudCgpKTsKICAg
ICBpZiAoIWRvY3VtZW50Tm9kZUlkKSB7CiAgICAgICAgIGVycm9yU3RyaW5nID0gIkRvY3VtZW50
IG11c3QgaGF2ZSBiZWVuIHJlcXVlc3RlZCJfczsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAot
ICAgICpub2RlSWQgPSBtX2luc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yRE9NQWdlbnQoKS0+
cHVzaE5vZGVUb0Zyb250ZW5kKGVycm9yU3RyaW5nLCBkb2N1bWVudE5vZGVJZCwgbm9kZSk7Cisg
ICAgKm5vZGVJZCA9IG1faW5zdHJ1bWVudGluZ0FnZW50cy5wZXJzaXN0ZW50RE9NQWdlbnQoKS0+
cHVzaE5vZGVUb0Zyb250ZW5kKGVycm9yU3RyaW5nLCBkb2N1bWVudE5vZGVJZCwgbm9kZSk7CiB9
CiAKIHZvaWQgSW5zcGVjdG9yQ2FudmFzQWdlbnQ6OnJlcXVlc3RDb250ZW50KEVycm9yU3RyaW5n
JiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBjYW52YXNJZCwgU3RyaW5nKiBjb250ZW50KQpA
QCAtMjEzLDcgKzIxMyw3IEBAIHZvaWQgSW5zcGVjdG9yQ2FudmFzQWdlbnQ6OnJlcXVlc3RDb250
ZW50KEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nCiAKIHZvaWQgSW5zcGVj
dG9yQ2FudmFzQWdlbnQ6OnJlcXVlc3RDbGllbnROb2RlcyhFcnJvclN0cmluZyYgZXJyb3JTdHJp
bmcsIGNvbnN0IFN0cmluZyYgY2FudmFzSWQsIFJlZlB0cjxKU09OOjpBcnJheU9mPGludD4+JiBj
bGllbnROb2RlSWRzKQogewotICAgIGF1dG8qIGRvbUFnZW50ID0gbV9pbnN0cnVtZW50aW5nQWdl
bnRzLmluc3BlY3RvckRPTUFnZW50KCk7CisgICAgYXV0byogZG9tQWdlbnQgPSBtX2luc3RydW1l
bnRpbmdBZ2VudHMucGVyc2lzdGVudERPTUFnZW50KCk7CiAgICAgaWYgKCFkb21BZ2VudCkgewog
ICAgICAgICBlcnJvclN0cmluZyA9ICJET00gZG9tYWluIG11c3QgYmUgZW5hYmxlZCJfczsKICAg
ICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JET01BZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRz
L0luc3BlY3RvckRPTUFnZW50LmNwcAppbmRleCA3ZmQwMWVhMjkwNWY3MWQyOGVmZjAxNDhkZTgy
MGJkNzI5ZDM1ZDRhLi4xZWUyZTYwNzI3NTk2ZTRmZGJhY2IwZTY2ZTgyNjNmNDMwZGY0NWUxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTUFn
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRP
TUFnZW50LmNwcApAQCAtMzA2LDcgKzMwNiw3IEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmRp
ZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkZyb250ZW5kUm91dGVyKiwKICAg
ICBtX2hpc3RvcnkgPSBtYWtlVW5pcXVlPEluc3BlY3Rvckhpc3Rvcnk+KCk7CiAgICAgbV9kb21F
ZGl0b3IgPSBtYWtlVW5pcXVlPERPTUVkaXRvcj4oKm1faGlzdG9yeSk7CiAKLSAgICBtX2luc3Ry
dW1lbnRpbmdBZ2VudHMuc2V0SW5zcGVjdG9yRE9NQWdlbnQodGhpcyk7CisgICAgbV9pbnN0cnVt
ZW50aW5nQWdlbnRzLnNldFBlcnNpc3RlbnRET01BZ2VudCh0aGlzKTsKICAgICBtX2RvY3VtZW50
ID0gbV9pbnNwZWN0ZWRQYWdlLm1haW5GcmFtZSgpLmRvY3VtZW50KCk7CiAKICNpZiBFTkFCTEUo
VklERU8pCkBAIC0zMzAsNyArMzMwLDcgQEAgdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6d2lsbERl
c3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpEaXNjb25uZWN0UmVhc28KICAgICBz
ZXRTZWFyY2hpbmdGb3JOb2RlKGlnbm9yZWQsIGZhbHNlLCBudWxscHRyLCBmYWxzZSk7CiAgICAg
aGlkZUhpZ2hsaWdodChpZ25vcmVkKTsKIAotICAgIG1faW5zdHJ1bWVudGluZ0FnZW50cy5zZXRJ
bnNwZWN0b3JET01BZ2VudChudWxscHRyKTsKKyAgICBtX2luc3RydW1lbnRpbmdBZ2VudHMuc2V0
UGVyc2lzdGVudERPTUFnZW50KG51bGxwdHIpOwogICAgIG1fZG9jdW1lbnRSZXF1ZXN0ZWQgPSBm
YWxzZTsKICAgICByZXNldCgpOwogfQpAQCAtNDE4LDcgKzQxOCw3IEBAIHZvaWQgSW5zcGVjdG9y
RE9NQWdlbnQ6OnVuYmluZChOb2RlKiBub2RlLCBOb2RlVG9JZE1hcCogbm9kZXNNYXApCiAKICAg
ICBub2Rlc01hcC0+cmVtb3ZlKG5vZGUpOwogCi0gICAgaWYgKGF1dG8qIGNzc0FnZW50ID0gbV9p
bnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3RvckNTU0FnZW50KCkpCisgICAgaWYgKGF1dG8qIGNz
c0FnZW50ID0gbV9pbnN0cnVtZW50aW5nQWdlbnRzLmVuYWJsZWRDU1NBZ2VudCgpKQogICAgICAg
ICBjc3NBZ2VudC0+ZGlkUmVtb3ZlRE9NTm9kZSgqbm9kZSwgaWQpOwogCiAgICAgaWYgKG1fY2hp
bGRyZW5SZXF1ZXN0ZWQucmVtb3ZlKGlkKSkgewpAQCAtMTI1NSw3ICsxMjU1LDcgQEAgdm9pZCBJ
bnNwZWN0b3JET01BZ2VudDo6aGlnaGxpZ2h0U2VsZWN0b3IoRXJyb3JTdHJpbmcmIGVycm9yU3Ry
aW5nLCBjb25zdCBKU09OOjoKICAgICBSZWZQdHI8RG9jdW1lbnQ+IGRvY3VtZW50OwogCiAgICAg
aWYgKGZyYW1lSWQpIHsKLSAgICAgICAgYXV0byogcGFnZUFnZW50ID0gbV9pbnN0cnVtZW50aW5n
QWdlbnRzLmluc3BlY3RvclBhZ2VBZ2VudCgpOworICAgICAgICBhdXRvKiBwYWdlQWdlbnQgPSBt
X2luc3RydW1lbnRpbmdBZ2VudHMuZW5hYmxlZFBhZ2VBZ2VudCgpOwogICAgICAgICBpZiAoIXBh
Z2VBZ2VudCkgewogICAgICAgICAgICAgZXJyb3JTdHJpbmcgPSAiUGFnZSBkb21haW4gbXVzdCBi
ZSBlbmFibGVkIl9zOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTM5Myw3ICsxMzkzLDcgQEAg
dm9pZCBJbnNwZWN0b3JET01BZ2VudDo6aGlnaGxpZ2h0Tm9kZUxpc3QoRXJyb3JTdHJpbmcmIGVy
cm9yU3RyaW5nLCBjb25zdCBKU09OOjoKIAogdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6aGlnaGxp
Z2h0RnJhbWUoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIGZyYW1lSWQs
IGNvbnN0IEpTT046Ok9iamVjdCogY29sb3IsIGNvbnN0IEpTT046Ok9iamVjdCogb3V0bGluZUNv
bG9yKQogewotICAgIGF1dG8qIHBhZ2VBZ2VudCA9IG1faW5zdHJ1bWVudGluZ0FnZW50cy5pbnNw
ZWN0b3JQYWdlQWdlbnQoKTsKKyAgICBhdXRvKiBwYWdlQWdlbnQgPSBtX2luc3RydW1lbnRpbmdB
Z2VudHMuZW5hYmxlZFBhZ2VBZ2VudCgpOwogICAgIGlmICghcGFnZUFnZW50KSB7CiAgICAgICAg
IGVycm9yU3RyaW5nID0gIlBhZ2UgZG9tYWluIG11c3QgYmUgZW5hYmxlZCJfczsKICAgICAgICAg
cmV0dXJuOwpAQCAtMTY0MCw3ICsxNjQwLDcgQEAgUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRP
TTo6Tm9kZT4gSW5zcGVjdG9yRE9NQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yTm9kZShOb2RlKgogICAg
ICAgICAgICAgdmFsdWUtPnNldENoaWxkcmVuKFdURk1vdmUoY2hpbGRyZW4pKTsKICAgICB9CiAK
LSAgICBhdXRvKiBwYWdlQWdlbnQgPSBtX2luc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yUGFn
ZUFnZW50KCk7CisgICAgYXV0byogcGFnZUFnZW50ID0gbV9pbnN0cnVtZW50aW5nQWdlbnRzLmVu
YWJsZWRQYWdlQWdlbnQoKTsKICAgICBpZiAocGFnZUFnZW50KSB7CiAgICAgICAgIGlmIChhdXRv
KiBmcmFtZVZpZXcgPSBub2RlLT5kb2N1bWVudCgpLnZpZXcoKSkKICAgICAgICAgICAgIHZhbHVl
LT5zZXRGcmFtZUlkKHBhZ2VBZ2VudC0+ZnJhbWVJZCgmZnJhbWVWaWV3LT5mcmFtZSgpKSk7CkBA
IC0yMzU2LDcgKzIzNTYsNyBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpkaWRNb2RpZnlET01B
dHRyKEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IEF0b21TdHJpbmcmIG5hbQogICAgIGlmICghaWQp
CiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChhdXRvKiBjc3NBZ2VudCA9IG1faW5zdHJ1bWVu
dGluZ0FnZW50cy5pbnNwZWN0b3JDU1NBZ2VudCgpKQorICAgIGlmIChhdXRvKiBjc3NBZ2VudCA9
IG1faW5zdHJ1bWVudGluZ0FnZW50cy5lbmFibGVkQ1NTQWdlbnQoKSkKICAgICAgICAgY3NzQWdl
bnQtPmRpZE1vZGlmeURPTUF0dHIoZWxlbWVudCk7CiAKICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hl
ci0+YXR0cmlidXRlTW9kaWZpZWQoaWQsIG5hbWUsIHZhbHVlKTsKQEAgLTIzNjgsNyArMjM2OCw3
IEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmRpZFJlbW92ZURPTUF0dHIoRWxlbWVudCYgZWxl
bWVudCwgY29uc3QgQXRvbVN0cmluZyYgbmFtCiAgICAgaWYgKCFpZCkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgaWYgKGF1dG8qIGNzc0FnZW50ID0gbV9pbnN0cnVtZW50aW5nQWdlbnRzLmluc3Bl
Y3RvckNTU0FnZW50KCkpCisgICAgaWYgKGF1dG8qIGNzc0FnZW50ID0gbV9pbnN0cnVtZW50aW5n
QWdlbnRzLmVuYWJsZWRDU1NBZ2VudCgpKQogICAgICAgICBjc3NBZ2VudC0+ZGlkTW9kaWZ5RE9N
QXR0cihlbGVtZW50KTsKIAogICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT5hdHRyaWJ1dGVSZW1v
dmVkKGlkLCBuYW1lKTsKQEAgLTIzODIsNyArMjM4Miw3IEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdl
bnQ6OnN0eWxlQXR0cmlidXRlSW52YWxpZGF0ZWQoY29uc3QgVmVjdG9yPEVsZW1lbnQqPiYgZWxl
bWVuCiAgICAgICAgIGlmICghaWQpCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBp
ZiAoYXV0byogY3NzQWdlbnQgPSBtX2luc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yQ1NTQWdl
bnQoKSkKKyAgICAgICAgaWYgKGF1dG8qIGNzc0FnZW50ID0gbV9pbnN0cnVtZW50aW5nQWdlbnRz
LmVuYWJsZWRDU1NBZ2VudCgpKQogICAgICAgICAgICAgY3NzQWdlbnQtPmRpZE1vZGlmeURPTUF0
dHIoKmVsZW1lbnQpOwogCiAgICAgICAgIG5vZGVJZHMtPmFkZEl0ZW0oaWQpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01EZWJ1Z2dlckFn
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NRGVi
dWdnZXJBZ2VudC5jcHAKaW5kZXggODNhZTRlMDQ3NGYzODlkNDAxMTY1MzEyYjNlMmQ2Y2JlNWNk
NmU4OC4uMzUyYzEzMzM3NjQ2OWFiZWJhZGQxOTYxMjM2Mzg4OTZkMzBmYzQzMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01EZWJ1Z2dlckFn
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRP
TURlYnVnZ2VyQWdlbnQuY3BwCkBAIC02MywxNyArNjMsMTcgQEAgSW5zcGVjdG9yRE9NRGVidWdn
ZXJBZ2VudDo6fkluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQoKSA9IGRlZmF1bHQ7CiAKIGJvb2wg
SW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6ZW5hYmxlZCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJu
IG1faW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50KCkgPT0gdGhp
czsKKyAgICByZXR1cm4gbV9pbnN0cnVtZW50aW5nQWdlbnRzLmVuYWJsZWRET01EZWJ1Z2dlckFn
ZW50KCkgPT0gdGhpczsKIH0KIAogdm9pZCBJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50OjplbmFi
bGUoKQogewotICAgIG1faW5zdHJ1bWVudGluZ0FnZW50cy5zZXRJbnNwZWN0b3JET01EZWJ1Z2dl
ckFnZW50KHRoaXMpOworICAgIG1faW5zdHJ1bWVudGluZ0FnZW50cy5zZXRFbmFibGVkRE9NRGVi
dWdnZXJBZ2VudCh0aGlzKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50Ojpk
aXNhYmxlKCkKIHsKLSAgICBtX2luc3RydW1lbnRpbmdBZ2VudHMuc2V0SW5zcGVjdG9yRE9NRGVi
dWdnZXJBZ2VudChudWxscHRyKTsKKyAgICBtX2luc3RydW1lbnRpbmdBZ2VudHMuc2V0RW5hYmxl
ZERPTURlYnVnZ2VyQWdlbnQobnVsbHB0cik7CiAKICAgICBtX2xpc3RlbmVyQnJlYWtwb2ludHMu
Y2xlYXIoKTsKICAgICBtX3VybEJyZWFrcG9pbnRzLmNsZWFyKCk7CkBAIC0yMjUsNyArMjI1LDcg
QEAgdm9pZCBJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50Ojp3aWxsSGFuZGxlRXZlbnQoRXZlbnQm
IGV2ZW50LCBjb25zdCBSZWdpc3RlcmVkRXYKICAgICAgICAgaW5qZWN0ZWRTY3JpcHQuc2V0RXZl
bnRWYWx1ZSh0b0pTKHN0YXRlLCBkZXByZWNhdGVkR2xvYmFsT2JqZWN0Rm9yUHJvdG90eXBlKHN0
YXRlKSwgZXZlbnQpKTsKICAgICB9CiAKLSAgICBhdXRvKiBkb21BZ2VudCA9IG1faW5zdHJ1bWVu
dGluZ0FnZW50cy5pbnNwZWN0b3JET01BZ2VudCgpOworICAgIGF1dG8qIGRvbUFnZW50ID0gbV9p
bnN0cnVtZW50aW5nQWdlbnRzLnBlcnNpc3RlbnRET01BZ2VudCgpOwogCiAgICAgYm9vbCBzaG91
bGRQYXVzZSA9IG1fZGVidWdnZXJBZ2VudC0+cGF1c2VPbk5leHRTdGF0ZW1lbnRFbmFibGVkKCkg
fHwgbV9wYXVzZU9uQWxsTGlzdGVuZXJzRW5hYmxlZCB8fCBtX2xpc3RlbmVyQnJlYWtwb2ludHMu
Y29udGFpbnMoZXZlbnQudHlwZSgpKTsKICAgICBpZiAoIXNob3VsZFBhdXNlICYmIGRvbUFnZW50
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JE
T01TdG9yYWdlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JET01TdG9yYWdlQWdlbnQuY3BwCmluZGV4IDc3ZjBjY2NkMmYyYTUxN2NlMGI3Yjc3ZmIw
MTVlNGM0MGFmZTQ2ZGEuLmU1OTFlOTE2OWRmMzA0NTQ1NjIwYjU0MDMyYjYyZmEyYmFkZWNiNmUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9N
U3RvcmFnZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0lu
c3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5jcHAKQEAgLTc2LDIyICs3NiwyMiBAQCB2b2lkIEluc3Bl
Y3RvckRPTVN0b3JhZ2VBZ2VudDo6d2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVj
dG9yOjpEaXNjb25uZQogCiB2b2lkIEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudDo6ZW5hYmxlKEVy
cm9yU3RyaW5nJiBlcnJvclN0cmluZykKIHsKLSAgICBpZiAobV9pbnN0cnVtZW50aW5nQWdlbnRz
Lmluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudCgpID09IHRoaXMpIHsKKyAgICBpZiAobV9pbnN0cnVt
ZW50aW5nQWdlbnRzLmVuYWJsZWRET01TdG9yYWdlQWdlbnQoKSA9PSB0aGlzKSB7CiAgICAgICAg
IGVycm9yU3RyaW5nID0gIkRPTVN0b3JhZ2UgZG9tYWluIGFscmVhZHkgZW5hYmxlZCJfczsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1faW5zdHJ1bWVudGluZ0FnZW50cy5zZXRJbnNw
ZWN0b3JET01TdG9yYWdlQWdlbnQodGhpcyk7CisgICAgbV9pbnN0cnVtZW50aW5nQWdlbnRzLnNl
dEVuYWJsZWRET01TdG9yYWdlQWdlbnQodGhpcyk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yRE9NU3Rv
cmFnZUFnZW50OjpkaXNhYmxlKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZykKIHsKLSAgICBpZiAo
bV9pbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudCgpICE9IHRoaXMp
IHsKKyAgICBpZiAobV9pbnN0cnVtZW50aW5nQWdlbnRzLmVuYWJsZWRET01TdG9yYWdlQWdlbnQo
KSAhPSB0aGlzKSB7CiAgICAgICAgIGVycm9yU3RyaW5nID0gIkRPTVN0b3JhZ2UgZG9tYWluIGFs
cmVhZHkgZGlzYWJsZWQiX3M7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBtX2luc3Ry
dW1lbnRpbmdBZ2VudHMuc2V0SW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50KG51bGxwdHIpOworICAg
IG1faW5zdHJ1bWVudGluZ0FnZW50cy5zZXRFbmFibGVkRE9NU3RvcmFnZUFnZW50KG51bGxwdHIp
OwogfQogCiB2b2lkIEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudDo6Z2V0RE9NU3RvcmFnZUl0ZW1z
KEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgSlNPTjo6T2JqZWN0JiBzdG9yYWdlSWQs
IFJlZlB0cjxKU09OOjpBcnJheU9mPEpTT046OkFycmF5T2Y8U3RyaW5nPj4+JiBpdGVtcykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRGF0YWJh
c2VBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRh
dGFiYXNlQWdlbnQuY3BwCmluZGV4IGEwYmRjYmQwNWFmM2U0OTJlOTRhMzYzOWRkZTA5YWNjMzk0
MjI2YmQuLjRiOWE1NWRlNTU3YmU5NDY3MTZmNWUwMjExMTQ0MzcxMTgyZDZkNTIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRGF0YWJhc2VBZ2Vu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEYXRh
YmFzZUFnZW50LmNwcApAQCAtMjM2LDEyICsyMzYsMTIgQEAgdm9pZCBJbnNwZWN0b3JEYXRhYmFz
ZUFnZW50Ojp3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkRpc2Nvbm5l
Y3QKIAogdm9pZCBJbnNwZWN0b3JEYXRhYmFzZUFnZW50OjplbmFibGUoRXJyb3JTdHJpbmcmIGVy
cm9yU3RyaW5nKQogewotICAgIGlmIChtX2luc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yRGF0
YWJhc2VBZ2VudCgpID09IHRoaXMpIHsKKyAgICBpZiAobV9pbnN0cnVtZW50aW5nQWdlbnRzLmVu
YWJsZWREYXRhYmFzZUFnZW50KCkgPT0gdGhpcykgewogICAgICAgICBlcnJvclN0cmluZyA9ICJE
YXRhYmFzZSBkb21haW4gYWxyZWFkeSBlbmFibGVkIl9zOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCi0gICAgbV9pbnN0cnVtZW50aW5nQWdlbnRzLnNldEluc3BlY3RvckRhdGFiYXNlQWdlbnQo
dGhpcyk7CisgICAgbV9pbnN0cnVtZW50aW5nQWdlbnRzLnNldEVuYWJsZWREYXRhYmFzZUFnZW50
KHRoaXMpOwogCiAgICAgZm9yIChhdXRvJiBkYXRhYmFzZSA6IERhdGFiYXNlVHJhY2tlcjo6c2lu
Z2xldG9uKCkub3BlbkRhdGFiYXNlcygpKQogICAgICAgICBkaWRPcGVuRGF0YWJhc2UoZGF0YWJh
c2UuZ2V0KCkpOwpAQCAtMjQ5LDE5ICsyNDksMTkgQEAgdm9pZCBJbnNwZWN0b3JEYXRhYmFzZUFn
ZW50OjplbmFibGUoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nKQogCiB2b2lkIEluc3BlY3RvckRh
dGFiYXNlQWdlbnQ6OmRpc2FibGUoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nKQogewotICAgIGlm
IChtX2luc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yRGF0YWJhc2VBZ2VudCgpICE9IHRoaXMp
IHsKKyAgICBpZiAobV9pbnN0cnVtZW50aW5nQWdlbnRzLmVuYWJsZWREYXRhYmFzZUFnZW50KCkg
IT0gdGhpcykgewogICAgICAgICBlcnJvclN0cmluZyA9ICJEYXRhYmFzZSBkb21haW4gYWxyZWFk
eSBkaXNhYmxlZCJfczsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1faW5zdHJ1bWVu
dGluZ0FnZW50cy5zZXRJbnNwZWN0b3JEYXRhYmFzZUFnZW50KG51bGxwdHIpOworICAgIG1faW5z
dHJ1bWVudGluZ0FnZW50cy5zZXRFbmFibGVkRGF0YWJhc2VBZ2VudChudWxscHRyKTsKIAogICAg
IG1fcmVzb3VyY2VzLmNsZWFyKCk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yRGF0YWJhc2VBZ2VudDo6
Z2V0RGF0YWJhc2VUYWJsZU5hbWVzKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3Ry
aW5nJiBkYXRhYmFzZUlkLCBSZWZQdHI8SlNPTjo6QXJyYXlPZjxTdHJpbmc+PiYgbmFtZXMpCiB7
Ci0gICAgaWYgKG1faW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JEYXRhYmFzZUFnZW50KCkg
IT0gdGhpcykgeworICAgIGlmIChtX2luc3RydW1lbnRpbmdBZ2VudHMuZW5hYmxlZERhdGFiYXNl
QWdlbnQoKSAhPSB0aGlzKSB7CiAgICAgICAgIGVycm9yU3RyaW5nID0gIkRhdGFiYXNlIGRvbWFp
biBtdXN0IGJlIGVuYWJsZWQiX3M7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0yNzYsNyAr
Mjc2LDcgQEAgdm9pZCBJbnNwZWN0b3JEYXRhYmFzZUFnZW50OjpnZXREYXRhYmFzZVRhYmxlTmFt
ZXMoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb24KIAogdm9pZCBJbnNwZWN0b3JEYXRhYmFz
ZUFnZW50OjpleGVjdXRlU1FMKGNvbnN0IFN0cmluZyYgZGF0YWJhc2VJZCwgY29uc3QgU3RyaW5n
JiBxdWVyeSwgUmVmPEV4ZWN1dGVTUUxDYWxsYmFjaz4mJiByZXF1ZXN0Q2FsbGJhY2spCiB7Ci0g
ICAgaWYgKG1faW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JEYXRhYmFzZUFnZW50KCkgIT0g
dGhpcykgeworICAgIGlmIChtX2luc3RydW1lbnRpbmdBZ2VudHMuZW5hYmxlZERhdGFiYXNlQWdl
bnQoKSAhPSB0aGlzKSB7CiAgICAgICAgIHJlcXVlc3RDYWxsYmFjay0+c2VuZEZhaWx1cmUoIkRh
dGFiYXNlIGRvbWFpbiBtdXN0IGJlIGVuYWJsZWQiX3MpOwogICAgICAgICByZXR1cm47CiAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JM
YXllclRyZWVBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3RvckxheWVyVHJlZUFnZW50LmNwcAppbmRleCBjZWMzZGFjZWQ1ZTY3NGY2MjU1N2YzYWIwZDEx
ZTI1NTI1M2E0YTZiLi5iMjBhYmU4MWI5YjBkNjNhYzcwNjU5ZTg3YTkyYjgzMmQ3NzhlNGNjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckxheWVy
VHJlZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3RvckxheWVyVHJlZUFnZW50LmNwcApAQCAtNzYsMTIgKzc2LDEyIEBAIHZvaWQgSW5zcGVjdG9y
TGF5ZXJUcmVlQWdlbnQ6OnJlc2V0KCkKIAogdm9pZCBJbnNwZWN0b3JMYXllclRyZWVBZ2VudDo6
ZW5hYmxlKEVycm9yU3RyaW5nJikKIHsKLSAgICBtX2luc3RydW1lbnRpbmdBZ2VudHMuc2V0SW5z
cGVjdG9yTGF5ZXJUcmVlQWdlbnQodGhpcyk7CisgICAgbV9pbnN0cnVtZW50aW5nQWdlbnRzLnNl
dEVuYWJsZWRMYXllclRyZWVBZ2VudCh0aGlzKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JMYXllclRy
ZWVBZ2VudDo6ZGlzYWJsZShFcnJvclN0cmluZyYpCiB7Ci0gICAgbV9pbnN0cnVtZW50aW5nQWdl
bnRzLnNldEluc3BlY3RvckxheWVyVHJlZUFnZW50KG51bGxwdHIpOworICAgIG1faW5zdHJ1bWVu
dGluZ0FnZW50cy5zZXRFbmFibGVkTGF5ZXJUcmVlQWdlbnQobnVsbHB0cik7CiAKICAgICByZXNl
dCgpOwogfQpAQCAtMTEwLDcgKzExMCw3IEBAIHZvaWQgSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6
OmxheWVyc0Zvck5vZGUoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBpbnQgbm9kZUlkCiB7CiAg
ICAgbGF5ZXJzID0gSlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpMYXllclRyZWU6
OkxheWVyPjo6Y3JlYXRlKCk7CiAKLSAgICBhdXRvKiBub2RlID0gbV9pbnN0cnVtZW50aW5nQWdl
bnRzLmluc3BlY3RvckRPTUFnZW50KCktPm5vZGVGb3JJZChub2RlSWQpOworICAgIGF1dG8qIG5v
ZGUgPSBtX2luc3RydW1lbnRpbmdBZ2VudHMucGVyc2lzdGVudERPTUFnZW50KCktPm5vZGVGb3JJ
ZChub2RlSWQpOwogICAgIGlmICghbm9kZSkgewogICAgICAgICBlcnJvclN0cmluZyA9ICJNaXNz
aW5nIG5vZGUgZm9yIGdpdmVuIG5vZGVJZCJfczsKICAgICAgICAgcmV0dXJuOwpAQCAtMjE0LDcg
KzIxNCw3IEBAIGludCBJbnNwZWN0b3JMYXllclRyZWVBZ2VudDo6aWRGb3JOb2RlKEVycm9yU3Ry
aW5nJiBlcnJvclN0cmluZywgTm9kZSogbm9kZSkKICAgICBpZiAoIW5vZGUpCiAgICAgICAgIHJl
dHVybiAwOwogCi0gICAgSW5zcGVjdG9yRE9NQWdlbnQqIGRvbUFnZW50ID0gbV9pbnN0cnVtZW50
aW5nQWdlbnRzLmluc3BlY3RvckRPTUFnZW50KCk7CisgICAgSW5zcGVjdG9yRE9NQWdlbnQqIGRv
bUFnZW50ID0gbV9pbnN0cnVtZW50aW5nQWdlbnRzLnBlcnNpc3RlbnRET01BZ2VudCgpOwogICAg
IAogICAgIGludCBub2RlSWQgPSBkb21BZ2VudC0+Ym91bmROb2RlSWQobm9kZSk7CiAgICAgaWYg
KCFub2RlSWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0lu
c3BlY3Rvck1lbW9yeUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9yTWVtb3J5QWdlbnQuY3BwCmluZGV4IGQ0MzZlZDQ3NmQ4NGU2ZWI5ODBhYWZhOWFk
NWE1MDk3NTY4ODY3Y2UuLmQwZThhYTY4ODMzNjU5ZTY0YWZlNTUzNDdjYjU2Zjc3M2ViN2Q3YTUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTWVt
b3J5QWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVj
dG9yTWVtb3J5QWdlbnQuY3BwCkBAIC00OSwzMiArNDksMzUgQEAgSW5zcGVjdG9yTWVtb3J5QWdl
bnQ6On5JbnNwZWN0b3JNZW1vcnlBZ2VudCgpID0gZGVmYXVsdDsKIAogdm9pZCBJbnNwZWN0b3JN
ZW1vcnlBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEZyb250ZW5kUm91dGVyKiwg
QmFja2VuZERpc3BhdGNoZXIqKQogeworICAgIG1faW5zdHJ1bWVudGluZ0FnZW50cy5zZXRQZXJz
aXN0ZW50TWVtb3J5QWdlbnQodGhpcyk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yTWVtb3J5QWdlbnQ6
OndpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKERpc2Nvbm5lY3RSZWFzb24pCiB7CiAgICAg
RXJyb3JTdHJpbmcgaWdub3JlZDsKICAgICBkaXNhYmxlKGlnbm9yZWQpOworCisgICAgbV9pbnN0
cnVtZW50aW5nQWdlbnRzLnNldFBlcnNpc3RlbnRNZW1vcnlBZ2VudChudWxscHRyKTsKIH0KIAog
dm9pZCBJbnNwZWN0b3JNZW1vcnlBZ2VudDo6ZW5hYmxlKEVycm9yU3RyaW5nJiBlcnJvclN0cmlu
ZykKIHsKLSAgICBpZiAobV9pbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3Rvck1lbW9yeUFnZW50
KCkgPT0gdGhpcykgeworICAgIGlmIChtX2luc3RydW1lbnRpbmdBZ2VudHMuZW5hYmxlZE1lbW9y
eUFnZW50KCkgPT0gdGhpcykgewogICAgICAgICBlcnJvclN0cmluZyA9ICJNZW1vcnkgZG9tYWlu
IGFscmVhZHkgZW5hYmxlZCJfczsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1faW5z
dHJ1bWVudGluZ0FnZW50cy5zZXRJbnNwZWN0b3JNZW1vcnlBZ2VudCh0aGlzKTsKKyAgICBtX2lu
c3RydW1lbnRpbmdBZ2VudHMuc2V0RW5hYmxlZE1lbW9yeUFnZW50KHRoaXMpOwogfQogCiB2b2lk
IEluc3BlY3Rvck1lbW9yeUFnZW50OjpkaXNhYmxlKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZykK
IHsKLSAgICBpZiAobV9pbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3Rvck1lbW9yeUFnZW50KCkg
IT0gdGhpcykgeworICAgIGlmIChtX2luc3RydW1lbnRpbmdBZ2VudHMuZW5hYmxlZE1lbW9yeUFn
ZW50KCkgIT0gdGhpcykgewogICAgICAgICBlcnJvclN0cmluZyA9ICJNZW1vcnkgZG9tYWluIGFs
cmVhZHkgZGlzYWJsZWQiX3M7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBtX2luc3Ry
dW1lbnRpbmdBZ2VudHMuc2V0SW5zcGVjdG9yTWVtb3J5QWdlbnQobnVsbHB0cik7CisgICAgbV9p
bnN0cnVtZW50aW5nQWdlbnRzLnNldEVuYWJsZWRNZW1vcnlBZ2VudChudWxscHRyKTsKIAogICAg
IG1fdHJhY2tpbmcgPSBmYWxzZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwCmluZGV4IGFmY2RkMmE3ZmFm
ZmUwYmVjOTgyMDcyZDg5NGJjODVjNmUzMGM0NGMuLjE3ODdkNjliMzUwNWQwODI2YWJhOWRhMzRl
ZmVhMzVlYjFiNDEyOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2Vu
dHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAKQEAgLTczMSw3ICs3MzEsNyBAQCBS
ZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6TmV0d29yazo6SW5pdGlhdG9yPiBJbnNwZWN0b3JO
ZXR3b3JrQWdlbnQ6OmJ1aWxkSW5pdAogICAgICAgICBpbml0aWF0b3JPYmplY3QtPnNldExpbmVO
dW1iZXIoZG9jdW1lbnQtPnNjcmlwdGFibGVEb2N1bWVudFBhcnNlcigpLT50ZXh0UG9zaXRpb24o
KS5tX2xpbmUub25lQmFzZWRJbnQoKSk7CiAgICAgfQogCi0gICAgYXV0byBkb21BZ2VudCA9IG1f
aW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JET01BZ2VudCgpOworICAgIGF1dG8gZG9tQWdl
bnQgPSBtX2luc3RydW1lbnRpbmdBZ2VudHMucGVyc2lzdGVudERPTUFnZW50KCk7CiAgICAgaWYg
KGRvbUFnZW50ICYmIHJlc291cmNlUmVxdWVzdCkgewogICAgICAgICBpZiAoYXV0byBpbnNwZWN0
b3JJbml0aWF0b3JOb2RlSWRlbnRpZmllciA9IHJlc291cmNlUmVxdWVzdC0+aW5zcGVjdG9ySW5p
dGlhdG9yTm9kZUlkZW50aWZpZXIoKSkgewogICAgICAgICAgICAgaWYgKCFpbml0aWF0b3JPYmpl
Y3QpIHsKQEAgLTgwNSw3ICs4MDUsNyBAQCB2b2lkIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6ZW5h
YmxlKEVycm9yU3RyaW5nJikKIHZvaWQgSW5zcGVjdG9yTmV0d29ya0FnZW50OjplbmFibGUoKQog
ewogICAgIG1fZW5hYmxlZCA9IHRydWU7Ci0gICAgbV9pbnN0cnVtZW50aW5nQWdlbnRzLnNldElu
c3BlY3Rvck5ldHdvcmtBZ2VudCh0aGlzKTsKKyAgICBtX2luc3RydW1lbnRpbmdBZ2VudHMuc2V0
RW5hYmxlZE5ldHdvcmtBZ2VudCh0aGlzKTsKIAogICAgIHsKICAgICAgICAgTG9ja0hvbGRlciBs
b2NrKFdlYlNvY2tldDo6YWxsQWN0aXZlV2ViU29ja2V0c011dGV4KCkpOwpAQCAtODM3LDcgKzgz
Nyw3IEBAIHZvaWQgSW5zcGVjdG9yTmV0d29ya0FnZW50OjpkaXNhYmxlKEVycm9yU3RyaW5nJikK
ICAgICBtX2VuYWJsZWQgPSBmYWxzZTsKICAgICBtX2ludGVyY2VwdGlvbkVuYWJsZWQgPSBmYWxz
ZTsKICAgICBtX2ludGVyY2VwdHMuY2xlYXIoKTsKLSAgICBtX2luc3RydW1lbnRpbmdBZ2VudHMu
c2V0SW5zcGVjdG9yTmV0d29ya0FnZW50KG51bGxwdHIpOworICAgIG1faW5zdHJ1bWVudGluZ0Fn
ZW50cy5zZXRFbmFibGVkTmV0d29ya0FnZW50KG51bGxwdHIpOwogICAgIG1fcmVzb3VyY2VzRGF0
YS0+Y2xlYXIoKTsKICAgICBtX2V4dHJhUmVxdWVzdEhlYWRlcnMuY2xlYXIoKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQu
Y3BwCmluZGV4IDQzNTIyODk0ZTBmOTMwMGYwMThmNzI1YTQyYmJjNGM1OWM3NDc4NDQuLjgzMjdm
OTE4YmIwZDNiNzZiYzdkY2IwZTY2MzQzMjM0MDUyNjU3N2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKQEAgLTM0
NSwxMiArMzQ1LDEyIEBAIHZvaWQgSW5zcGVjdG9yUGFnZUFnZW50Ojp3aWxsRGVzdHJveUZyb250
ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkRpc2Nvbm5lY3RSZWFzCiAKIHZvaWQgSW5zcGVjdG9y
UGFnZUFnZW50OjplbmFibGUoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nKQogewotICAgIGlmICht
X2luc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yUGFnZUFnZW50KCkgPT0gdGhpcykgeworICAg
IGlmIChtX2luc3RydW1lbnRpbmdBZ2VudHMuZW5hYmxlZFBhZ2VBZ2VudCgpID09IHRoaXMpIHsK
ICAgICAgICAgZXJyb3JTdHJpbmcgPSAiUGFnZSBkb21haW4gYWxyZWFkeSBlbmFibGVkIl9zOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbV9pbnN0cnVtZW50aW5nQWdlbnRzLnNldElu
c3BlY3RvclBhZ2VBZ2VudCh0aGlzKTsKKyAgICBtX2luc3RydW1lbnRpbmdBZ2VudHMuc2V0RW5h
YmxlZFBhZ2VBZ2VudCh0aGlzKTsKIAogICAgIGF1dG8mIHN0b3B3YXRjaCA9IG1fZW52aXJvbm1l
bnQuZXhlY3V0aW9uU3RvcHdhdGNoKCk7CiAgICAgc3RvcHdhdGNoLnJlc2V0KCk7CkBAIC0zNjMs
NyArMzYzLDcgQEAgdm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OmVuYWJsZShFcnJvclN0cmluZyYg
ZXJyb3JTdHJpbmcpCiAKIHZvaWQgSW5zcGVjdG9yUGFnZUFnZW50OjpkaXNhYmxlKEVycm9yU3Ry
aW5nJikKIHsKLSAgICBtX2luc3RydW1lbnRpbmdBZ2VudHMuc2V0SW5zcGVjdG9yUGFnZUFnZW50
KG51bGxwdHIpOworICAgIG1faW5zdHJ1bWVudGluZ0FnZW50cy5zZXRFbmFibGVkUGFnZUFnZW50
KG51bGxwdHIpOwogCiAgICAgRXJyb3JTdHJpbmcgdW51c2VkOwogICAgIHNldFNob3dQYWludFJl
Y3RzKHVudXNlZCwgZmFsc2UpOwpAQCAtNzA1LDcgKzcwNSw3IEBAIHZvaWQgSW5zcGVjdG9yUGFn
ZUFnZW50OjpzZWFyY2hJblJlc291cmNlKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3Qg
U3RyaW5nCiAgICAgYm9vbCBjYXNlU2Vuc2l0aXZlID0gb3B0aW9uYWxDYXNlU2Vuc2l0aXZlID8g
Km9wdGlvbmFsQ2FzZVNlbnNpdGl2ZSA6IGZhbHNlOwogCiAgICAgaWYgKG9wdGlvbmFsUmVxdWVz
dElkKSB7Ci0gICAgICAgIGlmIChJbnNwZWN0b3JOZXR3b3JrQWdlbnQqIG5ldHdvcmtBZ2VudCA9
IG1faW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JOZXR3b3JrQWdlbnQoKSkgeworICAgICAg
ICBpZiAoYXV0byogbmV0d29ya0FnZW50ID0gbV9pbnN0cnVtZW50aW5nQWdlbnRzLmVuYWJsZWRO
ZXR3b3JrQWdlbnQoKSkgewogICAgICAgICAgICAgbmV0d29ya0FnZW50LT5zZWFyY2hJblJlcXVl
c3QoZXJyb3JTdHJpbmcsICpvcHRpb25hbFJlcXVlc3RJZCwgcXVlcnksIGNhc2VTZW5zaXRpdmUs
IGlzUmVnZXgsIHJlc3VsdHMpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC03
NzAsNyArNzcwLDcgQEAgdm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OnNlYXJjaEluUmVzb3VyY2Vz
KEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiB0ZXh0LCBjb24KICAgICAgICAgfQogICAgIH0K
IAotICAgIGlmIChJbnNwZWN0b3JOZXR3b3JrQWdlbnQqIG5ldHdvcmtBZ2VudCA9IG1faW5zdHJ1
bWVudGluZ0FnZW50cy5pbnNwZWN0b3JOZXR3b3JrQWdlbnQoKSkKKyAgICBpZiAoYXV0byogbmV0
d29ya0FnZW50ID0gbV9pbnN0cnVtZW50aW5nQWdlbnRzLmVuYWJsZWROZXR3b3JrQWdlbnQoKSkK
ICAgICAgICAgbmV0d29ya0FnZW50LT5zZWFyY2hPdGhlclJlcXVlc3RzKHJlZ2V4LCByZXN1bHQp
OwogfQogCkBAIC0xMDQyLDcgKzEwNDIsNyBAQCB2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6YXBw
bHlFbXVsYXRlZE1lZGlhKFN0cmluZyYgbWVkaWEpCiAKIHZvaWQgSW5zcGVjdG9yUGFnZUFnZW50
OjpzbmFwc2hvdE5vZGUoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBpbnQgbm9kZUlkLCBTdHJp
bmcqIG91dERhdGFVUkwpCiB7Ci0gICAgSW5zcGVjdG9yRE9NQWdlbnQqIGRvbUFnZW50ID0gbV9p
bnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3RvckRPTUFnZW50KCk7CisgICAgSW5zcGVjdG9yRE9N
QWdlbnQqIGRvbUFnZW50ID0gbV9pbnN0cnVtZW50aW5nQWdlbnRzLnBlcnNpc3RlbnRET01BZ2Vu
dCgpOwogICAgIEFTU0VSVChkb21BZ2VudCk7CiAgICAgTm9kZSogbm9kZSA9IGRvbUFnZW50LT5h
c3NlcnROb2RlKGVycm9yU3RyaW5nLCBub2RlSWQpOwogICAgIGlmICghbm9kZSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yVGltZWxpbmVBZ2Vu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclRpbWVsaW5l
QWdlbnQuY3BwCmluZGV4IGRkODA3ZjFmNzJiOWMxYjdjZTM1N2ZhNTczMmIzZGM1ZjZmY2E4ODYu
LjE0MGUxNTc4YzVmMDk2ZTQ0NGVkMTQ5MjA3NzE4ZWU3Zjg2NDU1MjYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JUaW1lbGluZUFn
ZW50LmNwcApAQCAtMTA4LDIyICsxMDgsMjIgQEAgdm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50
Ojp3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkRpc2Nvbm5lY3QKIAog
dm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50OjplbmFibGUoRXJyb3JTdHJpbmcmIGVycm9yU3Ry
aW5nKQogewotICAgIGlmIChtX2luc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yVGltZWxpbmVB
Z2VudCgpID09IHRoaXMpIHsKKyAgICBpZiAobV9pbnN0cnVtZW50aW5nQWdlbnRzLmVuYWJsZWRU
aW1lbGluZUFnZW50KCkgPT0gdGhpcykgewogICAgICAgICBlcnJvclN0cmluZyA9ICJUaW1lbGlu
ZSBkb21haW4gYWxyZWFkeSBlbmFibGVkIl9zOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0g
ICAgbV9pbnN0cnVtZW50aW5nQWdlbnRzLnNldEluc3BlY3RvclRpbWVsaW5lQWdlbnQodGhpcyk7
CisgICAgbV9pbnN0cnVtZW50aW5nQWdlbnRzLnNldEVuYWJsZWRUaW1lbGluZUFnZW50KHRoaXMp
OwogfQogCiB2b2lkIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OmRpc2FibGUoRXJyb3JTdHJpbmcm
IGVycm9yU3RyaW5nKQogewotICAgIGlmIChtX2luc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9y
VGltZWxpbmVBZ2VudCgpICE9IHRoaXMpIHsKKyAgICBpZiAobV9pbnN0cnVtZW50aW5nQWdlbnRz
LmVuYWJsZWRUaW1lbGluZUFnZW50KCkgIT0gdGhpcykgewogICAgICAgICBlcnJvclN0cmluZyA9
ICJUaW1lbGluZSBkb21haW4gYWxyZWFkeSBkaXNhYmxlZCJfczsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAotICAgIG1faW5zdHJ1bWVudGluZ0FnZW50cy5zZXRJbnNwZWN0b3JUaW1lbGluZUFn
ZW50KG51bGxwdHIpOworICAgIG1faW5zdHJ1bWVudGluZ0FnZW50cy5zZXRFbmFibGVkVGltZWxp
bmVBZ2VudChudWxscHRyKTsKIAogICAgIEVycm9yU3RyaW5nIGlnbm9yZWQ7CiAgICAgc3RvcChp
Z25vcmVkKTsKQEAgLTE4NSw3ICsxODUsNyBAQCB2b2lkIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6
OmludGVybmFsU3RhcnQoY29uc3QgaW50KiBtYXhDYWxsU3RhY2tEZXB0aCkKICAgICBlbHNlCiAg
ICAgICAgIG1fbWF4Q2FsbFN0YWNrRGVwdGggPSA1OwogCi0gICAgbV9pbnN0cnVtZW50aW5nQWdl
bnRzLnNldFRyYWNraW5nSW5zcGVjdG9yVGltZWxpbmVBZ2VudCh0aGlzKTsKKyAgICBtX2luc3Ry
dW1lbnRpbmdBZ2VudHMuc2V0VHJhY2tpbmdUaW1lbGluZUFnZW50KHRoaXMpOwogCiAgICAgbV9l
bnZpcm9ubWVudC5zY3JpcHREZWJ1Z1NlcnZlcigpLmFkZExpc3RlbmVyKHRoaXMpOwogCkBAIC0y
MzksNyArMjM5LDcgQEAgdm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50OjppbnRlcm5hbFN0b3Ao
KQogICAgIGlmICghbV90cmFja2luZykKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9pbnN0cnVt
ZW50aW5nQWdlbnRzLnNldFRyYWNraW5nSW5zcGVjdG9yVGltZWxpbmVBZ2VudChudWxscHRyKTsK
KyAgICBtX2luc3RydW1lbnRpbmdBZ2VudHMuc2V0VHJhY2tpbmdUaW1lbGluZUFnZW50KG51bGxw
dHIpOwogCiAgICAgbV9lbnZpcm9ubWVudC5zY3JpcHREZWJ1Z1NlcnZlcigpLnJlbW92ZUxpc3Rl
bmVyKHRoaXMsIHRydWUpOwogCkBAIC0yNzgsNyArMjc4LDcgQEAgdm9pZCBJbnNwZWN0b3JUaW1l
bGluZUFnZW50OjpzdGFydEZyb21Db25zb2xlKEpTQzo6SlNHbG9iYWxPYmplY3QqIGV4ZWMsIGNv
bnN0IFMKICAgICAgICAgICAgIFN0cmluZyByZWNvcmRUaXRsZTsKICAgICAgICAgICAgIHJlY29y
ZC5kYXRhLT5nZXRTdHJpbmcoInRpdGxlIl9zLCByZWNvcmRUaXRsZSk7CiAgICAgICAgICAgICBp
ZiAocmVjb3JkVGl0bGUgPT0gdGl0bGUpIHsKLSAgICAgICAgICAgICAgICBpZiAoV2ViQ29uc29s
ZUFnZW50KiBjb25zb2xlQWdlbnQgPSBtX2luc3RydW1lbnRpbmdBZ2VudHMud2ViQ29uc29sZUFn
ZW50KCkpIHsKKyAgICAgICAgICAgICAgICBpZiAoYXV0byogY29uc29sZUFnZW50ID0gbV9pbnN0
cnVtZW50aW5nQWdlbnRzLndlYkNvbnNvbGVBZ2VudCgpKSB7CiAgICAgICAgICAgICAgICAgICAg
IC8vIEZJWE1FOiBTZW5kIGFuIGVudW0gdG8gdGhlIGZyb250ZW5kIGZvciBsb2NhbGl6YXRpb24/
CiAgICAgICAgICAgICAgICAgICAgIFN0cmluZyB3YXJuaW5nID0gdGl0bGUuaXNFbXB0eSgpID8g
IlVubmFtZWQgUHJvZmlsZSBhbHJlYWR5IGV4aXN0cyJfcyA6IG1ha2VTdHJpbmcoIlByb2ZpbGUg
XCIiLCB0aXRsZSwgIlwiIGFscmVhZHkgZXhpc3RzIik7CiAgICAgICAgICAgICAgICAgICAgIGNv
bnNvbGVBZ2VudC0+YWRkTWVzc2FnZVRvQ29uc29sZShtYWtlVW5pcXVlPENvbnNvbGVNZXNzYWdl
PihNZXNzYWdlU291cmNlOjpDb25zb2xlQVBJLCBNZXNzYWdlVHlwZTo6UHJvZmlsZSwgTWVzc2Fn
ZUxldmVsOjpXYXJuaW5nLCB3YXJuaW5nKSk7CkBAIC0zMTQsNyArMzE0LDcgQEAgdm9pZCBJbnNw
ZWN0b3JUaW1lbGluZUFnZW50OjpzdG9wRnJvbUNvbnNvbGUoSlNDOjpKU0dsb2JhbE9iamVjdCos
IGNvbnN0IFN0cmluZyYKICAgICAgICAgfQogICAgIH0KIAotICAgIGlmIChXZWJDb25zb2xlQWdl
bnQqIGNvbnNvbGVBZ2VudCA9IG1faW5zdHJ1bWVudGluZ0FnZW50cy53ZWJDb25zb2xlQWdlbnQo
KSkgeworICAgIGlmIChhdXRvKiBjb25zb2xlQWdlbnQgPSBtX2luc3RydW1lbnRpbmdBZ2VudHMu
d2ViQ29uc29sZUFnZW50KCkpIHsKICAgICAgICAgLy8gRklYTUU6IFNlbmQgYW4gZW51bSB0byB0
aGUgZnJvbnRlbmQgZm9yIGxvY2FsaXphdGlvbj8KICAgICAgICAgU3RyaW5nIHdhcm5pbmcgPSB0
aXRsZS5pc0VtcHR5KCkgPyAiTm8gcHJvZmlsZXMgZXhpc3QiX3MgOiBtYWtlU3RyaW5nKCJQcm9m
aWxlIFwiIiwgdGl0bGUsICJcIiBkb2VzIG5vdCBleGlzdCIpOwogICAgICAgICBjb25zb2xlQWdl
bnQtPmFkZE1lc3NhZ2VUb0NvbnNvbGUobWFrZVVuaXF1ZTxDb25zb2xlTWVzc2FnZT4oTWVzc2Fn
ZVNvdXJjZTo6Q29uc29sZUFQSSwgTWVzc2FnZVR5cGU6OlByb2ZpbGVFbmQsIE1lc3NhZ2VMZXZl
bDo6V2FybmluZywgd2FybmluZykpOwpAQCAtNDc5LDcgKzQ3OSw3IEBAIHZvaWQgSW5zcGVjdG9y
VGltZWxpbmVBZ2VudDo6bWFpbkZyYW1lU3RhcnRlZExvYWRpbmcoKQogICAgIG1fYXV0b0NhcHR1
cmVQaGFzZSA9IEF1dG9DYXB0dXJlUGhhc2U6OkJlZm9yZUxvYWQ7CiAKICAgICAvLyBQcmUtZW1w
dGl2ZWx5IGRpc2FibGUgYnJlYWtwb2ludHMuIFRoZSBmcm9udGVuZCBtdXN0IHJlLWVuYWJsZSB0
aGVtLgotICAgIGlmIChhdXRvKiB3ZWJEZWJ1Z2dlckFnZW50ID0gbV9pbnN0cnVtZW50aW5nQWdl
bnRzLndlYkRlYnVnZ2VyQWdlbnQoKSkgeworICAgIGlmIChhdXRvKiB3ZWJEZWJ1Z2dlckFnZW50
ID0gbV9pbnN0cnVtZW50aW5nQWdlbnRzLmVuYWJsZWRXZWJEZWJ1Z2dlckFnZW50KCkpIHsKICAg
ICAgICAgRXJyb3JTdHJpbmcgaWdub3JlZDsKICAgICAgICAgd2ViRGVidWdnZXJBZ2VudC0+c2V0
QnJlYWtwb2ludHNBY3RpdmUoaWdub3JlZCwgZmFsc2UpOwogICAgIH0KQEAgLTUwNCw3ICs1MDQs
NyBAQCB2b2lkIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OnN0YXJ0UHJvZ3JhbW1hdGljQ2FwdHVy
ZSgpCiAgICAgQVNTRVJUKCFtX3RyYWNraW5nKTsKIAogICAgIC8vIERpc2FibGUgYnJlYWtwb2lu
dHMgZHVyaW5nIHByb2dyYW1tYXRpYyBjYXB0dXJlLgotICAgIGlmIChhdXRvKiB3ZWJEZWJ1Z2dl
ckFnZW50ID0gbV9pbnN0cnVtZW50aW5nQWdlbnRzLndlYkRlYnVnZ2VyQWdlbnQoKSkgeworICAg
IGlmIChhdXRvKiB3ZWJEZWJ1Z2dlckFnZW50ID0gbV9pbnN0cnVtZW50aW5nQWdlbnRzLmVuYWJs
ZWRXZWJEZWJ1Z2dlckFnZW50KCkpIHsKICAgICAgICAgbV9wcm9ncmFtbWF0aWNDYXB0dXJlUmVz
dG9yZUJyZWFrcG9pbnRBY3RpdmVWYWx1ZSA9IHdlYkRlYnVnZ2VyQWdlbnQtPmJyZWFrcG9pbnRz
QWN0aXZlKCk7CiAgICAgICAgIGlmIChtX3Byb2dyYW1tYXRpY0NhcHR1cmVSZXN0b3JlQnJlYWtw
b2ludEFjdGl2ZVZhbHVlKSB7CiAgICAgICAgICAgICBFcnJvclN0cmluZyBpZ25vcmVkOwpAQCAt
NTI5LDcgKzUyOSw3IEBAIHZvaWQgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6c3RvcFByb2dyYW1t
YXRpY0NhcHR1cmUoKQogCiAgICAgLy8gUmUtZW5hYmxlIGJyZWFrcG9pbnRzIGlmIHRoZXkgd2Vy
ZSBlbmFibGVkLgogICAgIGlmIChtX3Byb2dyYW1tYXRpY0NhcHR1cmVSZXN0b3JlQnJlYWtwb2lu
dEFjdGl2ZVZhbHVlKSB7Ci0gICAgICAgIGlmIChhdXRvKiB3ZWJEZWJ1Z2dlckFnZW50ID0gbV9p
bnN0cnVtZW50aW5nQWdlbnRzLndlYkRlYnVnZ2VyQWdlbnQoKSkgeworICAgICAgICBpZiAoYXV0
byogd2ViRGVidWdnZXJBZ2VudCA9IG1faW5zdHJ1bWVudGluZ0FnZW50cy5lbmFibGVkV2ViRGVi
dWdnZXJBZ2VudCgpKSB7CiAgICAgICAgICAgICBFcnJvclN0cmluZyBpZ25vcmVkOwogICAgICAg
ICAgICAgd2ViRGVidWdnZXJBZ2VudC0+c2V0QnJlYWtwb2ludHNBY3RpdmUoaWdub3JlZCwgdHJ1
ZSk7CiAgICAgICAgIH0KQEAgLTU2OCw3ICs1NjgsNyBAQCB2b2lkIEluc3BlY3RvclRpbWVsaW5l
QWdlbnQ6OnRvZ2dsZUluc3RydW1lbnRzKEluc3RydW1lbnRTdGF0ZSBzdGF0ZSkKIAogdm9pZCBJ
bnNwZWN0b3JUaW1lbGluZUFnZW50Ojp0b2dnbGVTY3JpcHRQcm9maWxlckluc3RydW1lbnQoSW5z
dHJ1bWVudFN0YXRlIHN0YXRlKQogewotICAgIGlmIChhdXRvKiBzY3JpcHRQcm9maWxlckFnZW50
ID0gbV9pbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3RvclNjcmlwdFByb2ZpbGVyQWdlbnQoKSkg
eworICAgIGlmIChhdXRvKiBzY3JpcHRQcm9maWxlckFnZW50ID0gbV9pbnN0cnVtZW50aW5nQWdl
bnRzLnBlcnNpc3RlbnRTY3JpcHRQcm9maWxlckFnZW50KCkpIHsKICAgICAgICAgRXJyb3JTdHJp
bmcgaWdub3JlZDsKICAgICAgICAgaWYgKHN0YXRlID09IEluc3RydW1lbnRTdGF0ZTo6U3RhcnQp
IHsKICAgICAgICAgICAgIGNvbnN0IGJvb2wgaW5jbHVkZVNhbXBsZXMgPSB0cnVlOwpAQCAtNTgw
LDcgKzU4MCw3IEBAIHZvaWQgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6dG9nZ2xlU2NyaXB0UHJv
ZmlsZXJJbnN0cnVtZW50KEluc3RydW1lbnRTdGF0ZSBzdGF0CiAKIHZvaWQgSW5zcGVjdG9yVGlt
ZWxpbmVBZ2VudDo6dG9nZ2xlSGVhcEluc3RydW1lbnQoSW5zdHJ1bWVudFN0YXRlIHN0YXRlKQog
ewotICAgIGlmIChhdXRvKiBoZWFwQWdlbnQgPSBtX2luc3RydW1lbnRpbmdBZ2VudHMucGFnZUhl
YXBBZ2VudCgpKSB7CisgICAgaWYgKGF1dG8qIGhlYXBBZ2VudCA9IG1faW5zdHJ1bWVudGluZ0Fn
ZW50cy5lbmFibGVkUGFnZUhlYXBBZ2VudCgpKSB7CiAgICAgICAgIEVycm9yU3RyaW5nIGlnbm9y
ZWQ7CiAgICAgICAgIGlmIChzdGF0ZSA9PSBJbnN0cnVtZW50U3RhdGU6OlN0YXJ0KSB7CiAgICAg
ICAgICAgICBpZiAobV9hdXRvQ2FwdHVyZVBoYXNlID09IEF1dG9DYXB0dXJlUGhhc2U6Ok5vbmUg
fHwgbV9hdXRvQ2FwdHVyZVBoYXNlID09IEF1dG9DYXB0dXJlUGhhc2U6OkZpcnN0TmF2aWdhdGlv
bikKQEAgLTU5Myw3ICs1OTMsNyBAQCB2b2lkIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OnRvZ2ds
ZUhlYXBJbnN0cnVtZW50KEluc3RydW1lbnRTdGF0ZSBzdGF0ZSkKIHZvaWQgSW5zcGVjdG9yVGlt
ZWxpbmVBZ2VudDo6dG9nZ2xlQ1BVSW5zdHJ1bWVudChJbnN0cnVtZW50U3RhdGUgc3RhdGUpCiB7
CiAjaWYgRU5BQkxFKFJFU09VUkNFX1VTQUdFKQotICAgIGlmIChJbnNwZWN0b3JDUFVQcm9maWxl
ckFnZW50KiBjcHVQcm9maWxlckFnZW50ID0gbV9pbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3Rv
ckNQVVByb2ZpbGVyQWdlbnQoKSkgeworICAgIGlmIChhdXRvKiBjcHVQcm9maWxlckFnZW50ID0g
bV9pbnN0cnVtZW50aW5nQWdlbnRzLnBlcnNpc3RlbnRDUFVQcm9maWxlckFnZW50KCkpIHsKICAg
ICAgICAgRXJyb3JTdHJpbmcgaWdub3JlZDsKICAgICAgICAgaWYgKHN0YXRlID09IEluc3RydW1l
bnRTdGF0ZTo6U3RhcnQpCiAgICAgICAgICAgICBjcHVQcm9maWxlckFnZW50LT5zdGFydFRyYWNr
aW5nKGlnbm9yZWQpOwpAQCAtNjA4LDcgKzYwOCw3IEBAIHZvaWQgSW5zcGVjdG9yVGltZWxpbmVB
Z2VudDo6dG9nZ2xlQ1BVSW5zdHJ1bWVudChJbnN0cnVtZW50U3RhdGUgc3RhdGUpCiB2b2lkIElu
c3BlY3RvclRpbWVsaW5lQWdlbnQ6OnRvZ2dsZU1lbW9yeUluc3RydW1lbnQoSW5zdHJ1bWVudFN0
YXRlIHN0YXRlKQogewogI2lmIEVOQUJMRShSRVNPVVJDRV9VU0FHRSkKLSAgICBpZiAoSW5zcGVj
dG9yTWVtb3J5QWdlbnQqIG1lbW9yeUFnZW50ID0gbV9pbnN0cnVtZW50aW5nQWdlbnRzLmluc3Bl
Y3Rvck1lbW9yeUFnZW50KCkpIHsKKyAgICBpZiAoYXV0byogbWVtb3J5QWdlbnQgPSBtX2luc3Ry
dW1lbnRpbmdBZ2VudHMucGVyc2lzdGVudE1lbW9yeUFnZW50KCkpIHsKICAgICAgICAgRXJyb3JT
dHJpbmcgaWdub3JlZDsKICAgICAgICAgaWYgKHN0YXRlID09IEluc3RydW1lbnRTdGF0ZTo6U3Rh
cnQpCiAgICAgICAgICAgICBtZW1vcnlBZ2VudC0+c3RhcnRUcmFja2luZyhpZ25vcmVkKTsKQEAg
LTYzMCw3ICs2MzAsNyBAQCB2b2lkIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OnRvZ2dsZVRpbWVs
aW5lSW5zdHJ1bWVudChJbnN0cnVtZW50U3RhdGUgc3RhdGUpCiAKIHZvaWQgSW5zcGVjdG9yVGlt
ZWxpbmVBZ2VudDo6dG9nZ2xlQW5pbWF0aW9uSW5zdHJ1bWVudChJbnN0cnVtZW50U3RhdGUgc3Rh
dGUpCiB7Ci0gICAgaWYgKGF1dG8qIGFuaW1hdGlvbkFnZW50ID0gbV9pbnN0cnVtZW50aW5nQWdl
bnRzLnBlcnNpc3RlbnRJbnNwZWN0b3JBbmltYXRpb25BZ2VudCgpKSB7CisgICAgaWYgKGF1dG8q
IGFuaW1hdGlvbkFnZW50ID0gbV9pbnN0cnVtZW50aW5nQWdlbnRzLnBlcnNpc3RlbnRBbmltYXRp
b25BZ2VudCgpKSB7CiAgICAgICAgIEVycm9yU3RyaW5nIGlnbm9yZWQ7CiAgICAgICAgIGlmIChz
dGF0ZSA9PSBJbnN0cnVtZW50U3RhdGU6OlN0YXJ0KQogICAgICAgICAgICAgYW5pbWF0aW9uQWdl
bnQtPnN0YXJ0VHJhY2tpbmcoaWdub3JlZCk7CkBAIC03NTcsNyArNzU3LDcgQEAgdm9pZCBJbnNw
ZWN0b3JUaW1lbGluZUFnZW50OjpzZXRGcmFtZUlkZW50aWZpZXIoSlNPTjo6T2JqZWN0KiByZWNv
cmQsIEZyYW1lKiBmcmEKICAgICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1cm47CiAKLSAgICBh
dXRvKiBwYWdlQWdlbnQgPSBtX2luc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yUGFnZUFnZW50
KCk7CisgICAgYXV0byogcGFnZUFnZW50ID0gbV9pbnN0cnVtZW50aW5nQWdlbnRzLmVuYWJsZWRQ
YWdlQWdlbnQoKTsKICAgICBpZiAoIXBhZ2VBZ2VudCkKICAgICAgICAgcmV0dXJuOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvcldvcmtlckFn
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yV29ya2Vy
QWdlbnQuY3BwCmluZGV4IGE3YTIwZjcyMzQ3NDNkNjUzODJiNWM5MzA3N2M5NWYyYmZhNzkzYmIu
LjkwOWM0NjZmODdlOWJmYThjNGMxNzI4YzQ2YWQ2ZTdlNTkwN2I0NmUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yV29ya2VyQWdlbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yV29ya2VyQWdlbnQu
Y3BwCkBAIC00NiwxMiArNDYsMTIgQEAgSW5zcGVjdG9yV29ya2VyQWdlbnQ6On5JbnNwZWN0b3JX
b3JrZXJBZ2VudCgpID0gZGVmYXVsdDsKIAogdm9pZCBJbnNwZWN0b3JXb3JrZXJBZ2VudDo6ZGlk
Q3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEZyb250ZW5kUm91dGVyKiwgQmFja2VuZERpc3BhdGNo
ZXIqKQogewotICAgIG1faW5zdHJ1bWVudGluZ0FnZW50cy5zZXRJbnNwZWN0b3JXb3JrZXJBZ2Vu
dCh0aGlzKTsKKyAgICBtX2luc3RydW1lbnRpbmdBZ2VudHMuc2V0UGVyc2lzdGVudFdvcmtlckFn
ZW50KHRoaXMpOwogfQogCiB2b2lkIEluc3BlY3RvcldvcmtlckFnZW50Ojp3aWxsRGVzdHJveUZy
b250ZW5kQW5kQmFja2VuZChEaXNjb25uZWN0UmVhc29uKQogewotICAgIG1faW5zdHJ1bWVudGlu
Z0FnZW50cy5zZXRJbnNwZWN0b3JXb3JrZXJBZ2VudChudWxscHRyKTsKKyAgICBtX2luc3RydW1l
bnRpbmdBZ2VudHMuc2V0UGVyc2lzdGVudFdvcmtlckFnZW50KG51bGxwdHIpOwogCiAgICAgRXJy
b3JTdHJpbmcgaWdub3JlZDsKICAgICBkaXNhYmxlKGlnbm9yZWQpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9XZWJEZWJ1Z2dlckFnZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvV2ViRGVidWdnZXJBZ2VudC5jcHAKaW5kZXggZGVj
YWQ2Y2NiYTkyZjQxOGM4ZTU5Y2E2NjkyMjUwNjg3Mjc0ZDBiMC4uYjkzYTgxZmJmNGY1MDY0NjZh
ZGIzZTEzYmJlODhjYzUzOTIzNWI3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2FnZW50cy9XZWJEZWJ1Z2dlckFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvYWdlbnRzL1dlYkRlYnVnZ2VyQWdlbnQuY3BwCkBAIC00NiwxOSArNDYsMTkgQEAgV2Vi
RGVidWdnZXJBZ2VudDo6fldlYkRlYnVnZ2VyQWdlbnQoKSA9IGRlZmF1bHQ7CiAKIGJvb2wgV2Vi
RGVidWdnZXJBZ2VudDo6ZW5hYmxlZCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1faW5zdHJ1bWVu
dGluZ0FnZW50cy53ZWJEZWJ1Z2dlckFnZW50KCkgPT0gdGhpcyAmJiBJbnNwZWN0b3JEZWJ1Z2dl
ckFnZW50OjplbmFibGVkKCk7CisgICAgcmV0dXJuIG1faW5zdHJ1bWVudGluZ0FnZW50cy5lbmFi
bGVkV2ViRGVidWdnZXJBZ2VudCgpID09IHRoaXMgJiYgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6
ZW5hYmxlZCgpOwogfQogCiB2b2lkIFdlYkRlYnVnZ2VyQWdlbnQ6OmVuYWJsZSgpCiB7Ci0gICAg
bV9pbnN0cnVtZW50aW5nQWdlbnRzLnNldFdlYkRlYnVnZ2VyQWdlbnQodGhpcyk7CisgICAgbV9p
bnN0cnVtZW50aW5nQWdlbnRzLnNldEVuYWJsZWRXZWJEZWJ1Z2dlckFnZW50KHRoaXMpOwogCiAg
ICAgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6ZW5hYmxlKCk7CiB9CiAKIHZvaWQgV2ViRGVidWdn
ZXJBZ2VudDo6ZGlzYWJsZShib29sIGlzQmVpbmdEZXN0cm95ZWQpCiB7Ci0gICAgbV9pbnN0cnVt
ZW50aW5nQWdlbnRzLnNldFdlYkRlYnVnZ2VyQWdlbnQobnVsbHB0cik7CisgICAgbV9pbnN0cnVt
ZW50aW5nQWdlbnRzLnNldEVuYWJsZWRXZWJEZWJ1Z2dlckFnZW50KG51bGxwdHIpOwogCiAgICAg
SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6ZGlzYWJsZShpc0JlaW5nRGVzdHJveWVkKTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvV2ViSGVhcEFnZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvV2ViSGVhcEFnZW50LmNwcAppbmRl
eCBhY2YzYzlmMTU5N2VkZTlmNzk2MDBkMmQyYTVmODE2OGUzODAyMzE3Li41YWE3NDUzZDA5NTYw
NzYyNzhlYjAzMGY4MDhkZGYwMTRkYWJmYjg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvYWdlbnRzL1dlYkhlYXBBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2FnZW50cy9XZWJIZWFwQWdlbnQuY3BwCkBAIC0xMDgsNyArMTA4LDcgQEAgdm9pZCBX
ZWJIZWFwQWdlbnQ6OmVuYWJsZShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcpCiAgICAgSW5zcGVj
dG9ySGVhcEFnZW50OjplbmFibGUoZXJyb3JTdHJpbmcpOwogCiAgICAgaWYgKGF1dG8qIGNvbnNv
bGVBZ2VudCA9IG1faW5zdHJ1bWVudGluZ0FnZW50cy53ZWJDb25zb2xlQWdlbnQoKSkKLSAgICAg
ICAgY29uc29sZUFnZW50LT5zZXRJbnNwZWN0b3JIZWFwQWdlbnQodGhpcyk7CisgICAgICAgIGNv
bnNvbGVBZ2VudC0+c2V0SGVhcEFnZW50KHRoaXMpOwogfQogCiB2b2lkIFdlYkhlYXBBZ2VudDo6
ZGlzYWJsZShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcpCkBAIC0xMTYsNyArMTE2LDcgQEAgdm9p
ZCBXZWJIZWFwQWdlbnQ6OmRpc2FibGUoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nKQogICAgIG1f
c2VuZEdhcmJhZ2VDb2xsZWN0aW9uRXZlbnRzVGFzay0+cmVzZXQoKTsKIAogICAgIGlmIChhdXRv
KiBjb25zb2xlQWdlbnQgPSBtX2luc3RydW1lbnRpbmdBZ2VudHMud2ViQ29uc29sZUFnZW50KCkp
Ci0gICAgICAgIGNvbnNvbGVBZ2VudC0+c2V0SW5zcGVjdG9ySGVhcEFnZW50KG51bGxwdHIpOwor
ICAgICAgICBjb25zb2xlQWdlbnQtPnNldEhlYXBBZ2VudChudWxscHRyKTsKIAogICAgIEluc3Bl
Y3RvckhlYXBBZ2VudDo6ZGlzYWJsZShlcnJvclN0cmluZyk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZUNvbnNvbGVBZ2VudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZUNvbnNvbGVBZ2VudC5jcHAK
aW5kZXggYzFiMGI3MzAwMmMxZDQ3Y2JmNWM5NDM4M2MxMzk2MDU1OWZmZjlkNy4uMTNmZDFkN2Rh
YmFhOTlkMGJiMGM0OWZmN2JiNWU1MmY1NGM2NjNkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2FnZW50cy9wYWdlL1BhZ2VDb25zb2xlQWdlbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlQ29uc29sZUFnZW50LmNwcApAQCAt
NTYsNyArNTYsNyBAQCBQYWdlQ29uc29sZUFnZW50Ojp+UGFnZUNvbnNvbGVBZ2VudCgpID0gZGVm
YXVsdDsKIAogdm9pZCBQYWdlQ29uc29sZUFnZW50OjpjbGVhck1lc3NhZ2VzKEVycm9yU3RyaW5n
JiBlcnJvclN0cmluZykKIHsKLSAgICBpZiAoYXV0byogZG9tQWdlbnQgPSBtX2luc3RydW1lbnRp
bmdBZ2VudHMuaW5zcGVjdG9yRE9NQWdlbnQoKSkKKyAgICBpZiAoYXV0byogZG9tQWdlbnQgPSBt
X2luc3RydW1lbnRpbmdBZ2VudHMucGVyc2lzdGVudERPTUFnZW50KCkpCiAgICAgICAgIGRvbUFn
ZW50LT5yZWxlYXNlRGFuZ2xpbmdOb2RlcygpOwogCiAgICAgV2ViQ29uc29sZUFnZW50OjpjbGVh
ck1lc3NhZ2VzKGVycm9yU3RyaW5nKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvcGFnZS9QYWdlRE9NRGVidWdnZXJBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZURPTURlYnVnZ2VyQWdlbnQuY3BwCmluZGV4IDQw
M2Q1YzVlY2NkMmJiZGU3ZDQxNWFlYTJiOTU0NGYyYWU0NGIzNmEuLjEzOWJiYzVlMzAyMTA2NjUy
NDc0NTU3MzkzNTVmOGNkZTc0YzIxOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvcGFnZS9QYWdlRE9NRGVidWdnZXJBZ2VudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2FnZW50cy9wYWdlL1BhZ2VET01EZWJ1Z2dlckFnZW50LmNwcApAQCAt
NzksMTkgKzc5LDE5IEBAIFBhZ2VET01EZWJ1Z2dlckFnZW50Ojp+UGFnZURPTURlYnVnZ2VyQWdl
bnQoKSA9IGRlZmF1bHQ7CiAKIGJvb2wgUGFnZURPTURlYnVnZ2VyQWdlbnQ6OmVuYWJsZWQoKSBj
b25zdAogewotICAgIHJldHVybiBtX2luc3RydW1lbnRpbmdBZ2VudHMucGFnZURPTURlYnVnZ2Vy
QWdlbnQoKSA9PSB0aGlzICYmIEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6OmVuYWJsZWQoKTsK
KyAgICByZXR1cm4gbV9pbnN0cnVtZW50aW5nQWdlbnRzLmVuYWJsZWRQYWdlRE9NRGVidWdnZXJB
Z2VudCgpID09IHRoaXMgJiYgSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6ZW5hYmxlZCgpOwog
fQogCiB2b2lkIFBhZ2VET01EZWJ1Z2dlckFnZW50OjplbmFibGUoKQogewotICAgIG1faW5zdHJ1
bWVudGluZ0FnZW50cy5zZXRQYWdlRE9NRGVidWdnZXJBZ2VudCh0aGlzKTsKKyAgICBtX2luc3Ry
dW1lbnRpbmdBZ2VudHMuc2V0RW5hYmxlZFBhZ2VET01EZWJ1Z2dlckFnZW50KHRoaXMpOwogCiAg
ICAgSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6ZW5hYmxlKCk7CiB9CiAKIHZvaWQgUGFnZURP
TURlYnVnZ2VyQWdlbnQ6OmRpc2FibGUoKQogewotICAgIG1faW5zdHJ1bWVudGluZ0FnZW50cy5z
ZXRQYWdlRE9NRGVidWdnZXJBZ2VudChudWxscHRyKTsKKyAgICBtX2luc3RydW1lbnRpbmdBZ2Vu
dHMuc2V0RW5hYmxlZFBhZ2VET01EZWJ1Z2dlckFnZW50KG51bGxwdHIpOwogCiAgICAgbV9kb21C
cmVha3BvaW50cy5jbGVhcigpOwogICAgIG1fcGF1c2VPbkFsbEFuaW1hdGlvbkZyYW1lc0VuYWJs
ZWQgPSBmYWxzZTsKQEAgLTEwMSw3ICsxMDEsNyBAQCB2b2lkIFBhZ2VET01EZWJ1Z2dlckFnZW50
OjpkaXNhYmxlKCkKIAogdm9pZCBQYWdlRE9NRGVidWdnZXJBZ2VudDo6c2V0RE9NQnJlYWtwb2lu
dChFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGludCBub2RlSWQsIGNvbnN0IFN0cmluZyYgdHlw
ZVN0cmluZykKIHsKLSAgICBhdXRvKiBkb21BZ2VudCA9IG1faW5zdHJ1bWVudGluZ0FnZW50cy5p
bnNwZWN0b3JET01BZ2VudCgpOworICAgIGF1dG8qIGRvbUFnZW50ID0gbV9pbnN0cnVtZW50aW5n
QWdlbnRzLnBlcnNpc3RlbnRET01BZ2VudCgpOwogICAgIGlmICghZG9tQWdlbnQpIHsKICAgICAg
ICAgZXJyb3JTdHJpbmcgPSAiRE9NIGRvbWFpbiBtdXN0IGJlIGVuYWJsZWQiX3M7CiAgICAgICAg
IHJldHVybjsKQEAgLTEyNSw3ICsxMjUsNyBAQCB2b2lkIFBhZ2VET01EZWJ1Z2dlckFnZW50Ojpz
ZXRET01CcmVha3BvaW50KEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgaW50IG5vZGVJZAogCiB2
b2lkIFBhZ2VET01EZWJ1Z2dlckFnZW50OjpyZW1vdmVET01CcmVha3BvaW50KEVycm9yU3RyaW5n
JiBlcnJvclN0cmluZywgaW50IG5vZGVJZCwgY29uc3QgU3RyaW5nJiB0eXBlU3RyaW5nKQogewot
ICAgIGF1dG8qIGRvbUFnZW50ID0gbV9pbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3RvckRPTUFn
ZW50KCk7CisgICAgYXV0byogZG9tQWdlbnQgPSBtX2luc3RydW1lbnRpbmdBZ2VudHMucGVyc2lz
dGVudERPTUFnZW50KCk7CiAgICAgaWYgKCFkb21BZ2VudCkgewogICAgICAgICBlcnJvclN0cmlu
ZyA9ICJET00gZG9tYWluIG11c3QgYmUgZW5hYmxlZCJfczsKICAgICAgICAgcmV0dXJuOwpAQCAt
MjAxLDcgKzIwMSw3IEBAIHZvaWQgUGFnZURPTURlYnVnZ2VyQWdlbnQ6OndpbGxSZW1vdmVET01O
b2RlKE5vZGUmIG5vZGUpCiAgICAgICAgIGlmIChub2RlLmNvbnRhaW5zKG5vZGVXaXRoQnJlYWtw
b2ludCkgJiYgKGJyZWFrcG9pbnRUeXBlcyAmIG1hdGNoQml0KSkgewogICAgICAgICAgICAgYXV0
byBldmVudERhdGEgPSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOwogICAgICAgICAgICAgZGVzY3Jp
cHRpb25Gb3JET01FdmVudCgqbm9kZVdpdGhCcmVha3BvaW50LCBOb2RlUmVtb3ZlZCwgZmFsc2Us
IGV2ZW50RGF0YS5nZXQoKSk7Ci0gICAgICAgICAgICBpZiAoYXV0byogZG9tQWdlbnQgPSBtX2lu
c3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yRE9NQWdlbnQoKSkKKyAgICAgICAgICAgIGlmIChh
dXRvKiBkb21BZ2VudCA9IG1faW5zdHJ1bWVudGluZ0FnZW50cy5wZXJzaXN0ZW50RE9NQWdlbnQo
KSkKICAgICAgICAgICAgICAgICBldmVudERhdGEtPnNldEludGVnZXIoInRhcmdldE5vZGVJZCJf
cywgZG9tQWdlbnQtPnB1c2hOb2RlVG9Gcm9udGVuZCgmbm9kZSkpOwogICAgICAgICAgICAgbV9k
ZWJ1Z2dlckFnZW50LT5icmVha1Byb2dyYW0oSW5zcGVjdG9yOjpEZWJ1Z2dlckZyb250ZW5kRGlz
cGF0Y2hlcjo6UmVhc29uOjpET00sIFdURk1vdmUoZXZlbnREYXRhKSk7CiAgICAgICAgICAgICBy
ZXR1cm47CkBAIC0yODQsNyArMjg0LDcgQEAgdm9pZCBQYWdlRE9NRGVidWdnZXJBZ2VudDo6ZGVz
Y3JpcHRpb25Gb3JET01FdmVudChOb2RlJiB0YXJnZXQsIGludCBicmVha3BvaW50VHkKICAgICBB
U1NFUlQobV9kZWJ1Z2dlckFnZW50LT5icmVha3BvaW50c0FjdGl2ZSgpKTsKICAgICBBU1NFUlQo
aGFzQnJlYWtwb2ludCgmdGFyZ2V0LCBicmVha3BvaW50VHlwZSkpOwogCi0gICAgYXV0byogZG9t
QWdlbnQgPSBtX2luc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yRE9NQWdlbnQoKTsKKyAgICBh
dXRvKiBkb21BZ2VudCA9IG1faW5zdHJ1bWVudGluZ0FnZW50cy5wZXJzaXN0ZW50RE9NQWdlbnQo
KTsKIAogICAgIE5vZGUqIGJyZWFrcG9pbnRPd25lciA9ICZ0YXJnZXQ7CiAgICAgaWYgKCgxIDw8
IGJyZWFrcG9pbnRUeXBlKSAmIGluaGVyaXRhYmxlRE9NQnJlYWtwb2ludFR5cGVzTWFzaykgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9wYWdlL1BhZ2VEZWJ1
Z2dlckFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdl
RGVidWdnZXJBZ2VudC5jcHAKaW5kZXggY2MwYjA1MjZmMTlmODA2Y2U2MjE1MjFkMDc3MWNjNWYz
MGQ0Mzg0MC4uNTBjYzk4YjNmYTMwZTNkYTFmNmU1ZWRkMjkxYzljYzY2MzE2NmU3MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9wYWdlL1BhZ2VEZWJ1Z2dlckFn
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZURl
YnVnZ2VyQWdlbnQuY3BwCkBAIC02NSw3ICs2NSw3IEBAIFBhZ2VEZWJ1Z2dlckFnZW50Ojp+UGFn
ZURlYnVnZ2VyQWdlbnQoKSA9IGRlZmF1bHQ7CiAKIGJvb2wgUGFnZURlYnVnZ2VyQWdlbnQ6OmVu
YWJsZWQoKSBjb25zdAogewotICAgIHJldHVybiBtX2luc3RydW1lbnRpbmdBZ2VudHMucGFnZURl
YnVnZ2VyQWdlbnQoKSA9PSB0aGlzICYmIFdlYkRlYnVnZ2VyQWdlbnQ6OmVuYWJsZWQoKTsKKyAg
ICByZXR1cm4gbV9pbnN0cnVtZW50aW5nQWdlbnRzLmVuYWJsZWRQYWdlRGVidWdnZXJBZ2VudCgp
ID09IHRoaXMgJiYgV2ViRGVidWdnZXJBZ2VudDo6ZW5hYmxlZCgpOwogfQogCiB2b2lkIFBhZ2VE
ZWJ1Z2dlckFnZW50OjpldmFsdWF0ZU9uQ2FsbEZyYW1lKEVycm9yU3RyaW5nJiBlcnJvclN0cmlu
ZywgY29uc3QgU3RyaW5nJiBjYWxsRnJhbWVJZCwgY29uc3QgU3RyaW5nJiBleHByZXNzaW9uLCBj
b25zdCBTdHJpbmcqIG9iamVjdEdyb3VwLCBjb25zdCBib29sKiBpbmNsdWRlQ29tbWFuZExpbmVB
UEksIGNvbnN0IGJvb2wqIGRvTm90UGF1c2VPbkV4Y2VwdGlvbnNBbmRNdXRlQ29uc29sZSwgY29u
c3QgYm9vbCogcmV0dXJuQnlWYWx1ZSwgY29uc3QgYm9vbCogZ2VuZXJhdGVQcmV2aWV3LCBjb25z
dCBib29sKiBzYXZlUmVzdWx0LCBjb25zdCBib29sKiBlbXVsYXRlVXNlckdlc3R1cmUsIFJlZlB0
cjxQcm90b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiYgcmVzdWx0LCBPcHRpb25hbDxib29s
PiYgd2FzVGhyb3duLCBPcHRpb25hbDxpbnQ+JiBzYXZlZFJlc3VsdEluZGV4KQpAQCAtNzgsMTQg
Kzc4LDE0IEBAIHZvaWQgUGFnZURlYnVnZ2VyQWdlbnQ6OmV2YWx1YXRlT25DYWxsRnJhbWUoRXJy
b3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpCiAKIHZvaWQgUGFnZURlYnVnZ2VyQWdl
bnQ6OmVuYWJsZSgpCiB7Ci0gICAgbV9pbnN0cnVtZW50aW5nQWdlbnRzLnNldFBhZ2VEZWJ1Z2dl
ckFnZW50KHRoaXMpOworICAgIG1faW5zdHJ1bWVudGluZ0FnZW50cy5zZXRFbmFibGVkUGFnZURl
YnVnZ2VyQWdlbnQodGhpcyk7CiAKICAgICBXZWJEZWJ1Z2dlckFnZW50OjplbmFibGUoKTsKIH0K
IAogdm9pZCBQYWdlRGVidWdnZXJBZ2VudDo6ZGlzYWJsZShib29sIGlzQmVpbmdEZXN0cm95ZWQp
CiB7Ci0gICAgbV9pbnN0cnVtZW50aW5nQWdlbnRzLnNldFBhZ2VEZWJ1Z2dlckFnZW50KG51bGxw
dHIpOworICAgIG1faW5zdHJ1bWVudGluZ0FnZW50cy5zZXRFbmFibGVkUGFnZURlYnVnZ2VyQWdl
bnQobnVsbHB0cik7CiAKICAgICBXZWJEZWJ1Z2dlckFnZW50OjpkaXNhYmxlKGlzQmVpbmdEZXN0
cm95ZWQpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9w
YWdlL1BhZ2VIZWFwQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9w
YWdlL1BhZ2VIZWFwQWdlbnQuY3BwCmluZGV4IGY2MmY2ZWIwNWNlOWZiMzY0ZDBjZWY0ODQxOWM4
ZDM2M2I4NGQ1MjQuLjQ5MjE4ZWYxMjgzZWJkNGRkNzU0MjExMzY5YjM0OWE0ODI1MjJkOTggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlSGVhcEFn
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZUhl
YXBBZ2VudC5jcHAKQEAgLTQyLDEyICs0MiwxMiBAQCBQYWdlSGVhcEFnZW50Ojp+UGFnZUhlYXBB
Z2VudCgpID0gZGVmYXVsdDsKIHZvaWQgUGFnZUhlYXBBZ2VudDo6ZW5hYmxlKEVycm9yU3RyaW5n
JiBlcnJvclN0cmluZykKIHsKICAgICBXZWJIZWFwQWdlbnQ6OmVuYWJsZShlcnJvclN0cmluZyk7
Ci0gICAgbV9pbnN0cnVtZW50aW5nQWdlbnRzLnNldFBhZ2VIZWFwQWdlbnQodGhpcyk7CisgICAg
bV9pbnN0cnVtZW50aW5nQWdlbnRzLnNldEVuYWJsZWRQYWdlSGVhcEFnZW50KHRoaXMpOwogfQog
CiB2b2lkIFBhZ2VIZWFwQWdlbnQ6OmRpc2FibGUoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nKQog
ewotICAgIG1faW5zdHJ1bWVudGluZ0FnZW50cy5zZXRQYWdlSGVhcEFnZW50KG51bGxwdHIpOwor
ICAgIG1faW5zdHJ1bWVudGluZ0FnZW50cy5zZXRFbmFibGVkUGFnZUhlYXBBZ2VudChudWxscHRy
KTsKICAgICBXZWJIZWFwQWdlbnQ6OmRpc2FibGUoZXJyb3JTdHJpbmcpOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZU5ldHdvcmtBZ2Vu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZU5ldHdvcmtB
Z2VudC5jcHAKaW5kZXggNzE0ZjAzNjA0ZDc0MTMwYzIyNjRkNDZmYzRiM2E3ODJkNDI3N2NkYy4u
YzRkYjYwMGMzZTQyMDhlMWRmN2IxMGUwOWZhNjJkMzg5MjdkMTMwMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9wYWdlL1BhZ2VOZXR3b3JrQWdlbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlTmV0d29ya0FnZW50
LmNwcApAQCAtNTEsNyArNTEsNyBAQCBQYWdlTmV0d29ya0FnZW50Ojp+UGFnZU5ldHdvcmtBZ2Vu
dCgpID0gZGVmYXVsdDsKIFN0cmluZyBQYWdlTmV0d29ya0FnZW50Ojpsb2FkZXJJZGVudGlmaWVy
KERvY3VtZW50TG9hZGVyKiBsb2FkZXIpCiB7CiAgICAgaWYgKGxvYWRlcikgewotICAgICAgICBp
ZiAoYXV0byogcGFnZUFnZW50ID0gbV9pbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3RvclBhZ2VB
Z2VudCgpKQorICAgICAgICBpZiAoYXV0byogcGFnZUFnZW50ID0gbV9pbnN0cnVtZW50aW5nQWdl
bnRzLmVuYWJsZWRQYWdlQWdlbnQoKSkKICAgICAgICAgICAgIHJldHVybiBwYWdlQWdlbnQtPmxv
YWRlcklkKGxvYWRlcik7CiAgICAgfQogICAgIHJldHVybiB7IH07CkBAIC02MCw3ICs2MCw3IEBA
IFN0cmluZyBQYWdlTmV0d29ya0FnZW50Ojpsb2FkZXJJZGVudGlmaWVyKERvY3VtZW50TG9hZGVy
KiBsb2FkZXIpCiBTdHJpbmcgUGFnZU5ldHdvcmtBZ2VudDo6ZnJhbWVJZGVudGlmaWVyKERvY3Vt
ZW50TG9hZGVyKiBsb2FkZXIpCiB7CiAgICAgaWYgKGxvYWRlcikgewotICAgICAgICBpZiAoYXV0
byogcGFnZUFnZW50ID0gbV9pbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3RvclBhZ2VBZ2VudCgp
KQorICAgICAgICBpZiAoYXV0byogcGFnZUFnZW50ID0gbV9pbnN0cnVtZW50aW5nQWdlbnRzLmVu
YWJsZWRQYWdlQWdlbnQoKSkKICAgICAgICAgICAgIHJldHVybiBwYWdlQWdlbnQtPmZyYW1lSWQo
bG9hZGVyLT5mcmFtZSgpKTsKICAgICB9CiAgICAgcmV0dXJuIHsgfTsKQEAgLTEwMiw3ICsxMDIs
NyBAQCB2b2lkIFBhZ2VOZXR3b3JrQWdlbnQ6OnNldFJlc291cmNlQ2FjaGluZ0Rpc2FibGVkKGJv
b2wgZGlzYWJsZWQpCiAKIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIFBhZ2VOZXR3b3JrQWdlbnQ6
OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBT
dHJpbmcmIGZyYW1lSWQpCiB7Ci0gICAgYXV0byogcGFnZUFnZW50ID0gbV9pbnN0cnVtZW50aW5n
QWdlbnRzLmluc3BlY3RvclBhZ2VBZ2VudCgpOworICAgIGF1dG8qIHBhZ2VBZ2VudCA9IG1faW5z
dHJ1bWVudGluZ0FnZW50cy5lbmFibGVkUGFnZUFnZW50KCk7CiAgICAgaWYgKCFwYWdlQWdlbnQp
IHsKICAgICAgICAgZXJyb3JTdHJpbmcgPSAiUGFnZSBkb21haW4gbXVzdCBiZSBlbmFibGVkIl9z
OwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlUnVudGltZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlUnVudGltZUFnZW50LmNwcAppbmRleCA2MzMzNjA1
MWJiMDA1MGQ2YTU1ZWI1NTQzYjAzNDllYjk2NGJiYjdhLi5lOGFiNWY0Yzg5YWRlNGZjODVjMDQy
YjQzNDMzYjcyNjU2M2FiZGQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
YWdlbnRzL3BhZ2UvUGFnZVJ1bnRpbWVBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2FnZW50cy9wYWdlL1BhZ2VSdW50aW1lQWdlbnQuY3BwCkBAIC03MCw3ICs3MCw3IEBA
IFBhZ2VSdW50aW1lQWdlbnQ6On5QYWdlUnVudGltZUFnZW50KCkgPSBkZWZhdWx0OwogCiB2b2lk
IFBhZ2VSdW50aW1lQWdlbnQ6OmVuYWJsZShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcpCiB7Ci0g
ICAgaWYgKG1faW5zdHJ1bWVudGluZ0FnZW50cy5wYWdlUnVudGltZUFnZW50KCkgPT0gdGhpcykK
KyAgICBpZiAobV9pbnN0cnVtZW50aW5nQWdlbnRzLmVuYWJsZWRQYWdlUnVudGltZUFnZW50KCkg
PT0gdGhpcykKICAgICAgICAgcmV0dXJuOwogCiAgICAgSW5zcGVjdG9yUnVudGltZUFnZW50Ojpl
bmFibGUoZXJyb3JTdHJpbmcpOwpAQCAtODEsMTIgKzgxLDEyIEBAIHZvaWQgUGFnZVJ1bnRpbWVB
Z2VudDo6ZW5hYmxlKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZykKICAgICAvLyBjYW4gZm9yY2Ug
Y3JlYXRpb24gb2Ygc2NyaXB0IHN0YXRlIHdoaWNoIGNvdWxkIHJlc3VsdCBpbiBkdXBsaWNhdGUg
bm90aWZpY2F0aW9ucy4KICAgICByZXBvcnRFeGVjdXRpb25Db250ZXh0Q3JlYXRpb24oKTsKIAot
ICAgIG1faW5zdHJ1bWVudGluZ0FnZW50cy5zZXRQYWdlUnVudGltZUFnZW50KHRoaXMpOworICAg
IG1faW5zdHJ1bWVudGluZ0FnZW50cy5zZXRFbmFibGVkUGFnZVJ1bnRpbWVBZ2VudCh0aGlzKTsK
IH0KIAogdm9pZCBQYWdlUnVudGltZUFnZW50OjpkaXNhYmxlKEVycm9yU3RyaW5nJiBlcnJvclN0
cmluZykKIHsKLSAgICBtX2luc3RydW1lbnRpbmdBZ2VudHMuc2V0UGFnZVJ1bnRpbWVBZ2VudChu
dWxscHRyKTsKKyAgICBtX2luc3RydW1lbnRpbmdBZ2VudHMuc2V0RW5hYmxlZFBhZ2VSdW50aW1l
QWdlbnQobnVsbHB0cik7CiAKICAgICBJbnNwZWN0b3JSdW50aW1lQWdlbnQ6OmRpc2FibGUoZXJy
b3JTdHJpbmcpOwogfQpAQCAtOTksNyArOTksNyBAQCB2b2lkIFBhZ2VSdW50aW1lQWdlbnQ6OmZy
YW1lTmF2aWdhdGVkKEZyYW1lJiBmcmFtZSkKIAogdm9pZCBQYWdlUnVudGltZUFnZW50OjpkaWRD
bGVhcldpbmRvd09iamVjdEluV29ybGQoRnJhbWUmIGZyYW1lLCBET01XcmFwcGVyV29ybGQmIHdv
cmxkKQogewotICAgIGF1dG8qIHBhZ2VBZ2VudCA9IG1faW5zdHJ1bWVudGluZ0FnZW50cy5pbnNw
ZWN0b3JQYWdlQWdlbnQoKTsKKyAgICBhdXRvKiBwYWdlQWdlbnQgPSBtX2luc3RydW1lbnRpbmdB
Z2VudHMuZW5hYmxlZFBhZ2VBZ2VudCgpOwogICAgIGlmICghcGFnZUFnZW50KQogICAgICAgICBy
ZXR1cm47CiAKQEAgLTEzNCw3ICsxMzQsNyBAQCB2b2lkIFBhZ2VSdW50aW1lQWdlbnQ6OnVubXV0
ZUNvbnNvbGUoKQogCiB2b2lkIFBhZ2VSdW50aW1lQWdlbnQ6OnJlcG9ydEV4ZWN1dGlvbkNvbnRl
eHRDcmVhdGlvbigpCiB7Ci0gICAgYXV0byogcGFnZUFnZW50ID0gbV9pbnN0cnVtZW50aW5nQWdl
bnRzLmluc3BlY3RvclBhZ2VBZ2VudCgpOworICAgIGF1dG8qIHBhZ2VBZ2VudCA9IG1faW5zdHJ1
bWVudGluZ0FnZW50cy5lbmFibGVkUGFnZUFnZW50KCk7CiAgICAgaWYgKCFwYWdlQWdlbnQpCiAg
ICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5z
cGVjdG9yL0FnZW50cy9JbnNwZWN0b3JCcm93c2VyQWdlbnQuY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvSW5zcGVjdG9yL0FnZW50cy9JbnNwZWN0b3JCcm93c2VyQWdlbnQuY3BwCmluZGV4
IDA0MGY5NTFhYTk2ODBjMTYwZjcyYmJkZWNkODkwNDU5Yjg1ZmVjNDguLmMxZmZhNmNmNjE0NjY2
ZTRjOGI1ZWM1YjQzY2M2NGY4MDcwZTY1OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0luc3BlY3Rvci9BZ2VudHMvSW5zcGVjdG9yQnJvd3NlckFnZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvQWdlbnRzL0luc3BlY3RvckJyb3dzZXJB
Z2VudC5jcHAKQEAgLTUxLDcgKzUxLDcgQEAgSW5zcGVjdG9yQnJvd3NlckFnZW50Ojp+SW5zcGVj
dG9yQnJvd3NlckFnZW50KCkgPSBkZWZhdWx0OwogCiBib29sIEluc3BlY3RvckJyb3dzZXJBZ2Vu
dDo6ZW5hYmxlZCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1faW5zcGVjdGVkUGFnZS5pbnNwZWN0
b3JDb250cm9sbGVyKCkuZW5hYmxlZEluc3BlY3RvckJyb3dzZXJBZ2VudCgpID09IHRoaXM7Cisg
ICAgcmV0dXJuIG1faW5zcGVjdGVkUGFnZS5pbnNwZWN0b3JDb250cm9sbGVyKCkuZW5hYmxlZEJy
b3dzZXJBZ2VudCgpID09IHRoaXM7CiB9CiAKIHZvaWQgSW5zcGVjdG9yQnJvd3NlckFnZW50Ojpk
aWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpGcm9udGVuZFJvdXRlciosIElu
c3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXIqKQpAQCAtNzEsNyArNzEsNyBAQCB2b2lkIEluc3Bl
Y3RvckJyb3dzZXJBZ2VudDo6ZW5hYmxlKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZykKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1faW5zcGVjdGVkUGFnZS5pbnNwZWN0b3JDb250cm9s
bGVyKCkuc2V0RW5hYmxlZEluc3BlY3RvckJyb3dzZXJBZ2VudCh0aGlzKTsKKyAgICBtX2luc3Bl
Y3RlZFBhZ2UuaW5zcGVjdG9yQ29udHJvbGxlcigpLnNldEVuYWJsZWRCcm93c2VyQWdlbnQodGhp
cyk7CiAKICAgICBhdXRvKiBpbnNwZWN0b3IgPSBtX2luc3BlY3RlZFBhZ2UuaW5zcGVjdG9yKCk7
CiAgICAgQVNTRVJUKGluc3BlY3Rvcik7CkBAIC04NSw3ICs4NSw3IEBAIHZvaWQgSW5zcGVjdG9y
QnJvd3NlckFnZW50OjpkaXNhYmxlKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZykKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIAotICAgIG1faW5zcGVjdGVkUGFnZS5pbnNwZWN0b3JDb250cm9sbGVy
KCkuc2V0RW5hYmxlZEluc3BlY3RvckJyb3dzZXJBZ2VudChudWxscHRyKTsKKyAgICBtX2luc3Bl
Y3RlZFBhZ2UuaW5zcGVjdG9yQ29udHJvbGxlcigpLnNldEVuYWJsZWRCcm93c2VyQWdlbnQobnVs
bHB0cik7CiAKICAgICBpZiAoYXV0byogaW5zcGVjdG9yID0gbV9pbnNwZWN0ZWRQYWdlLmluc3Bl
Y3RvcigpKQogICAgICAgICBtX2luc3BlY3RlZFBhZ2UuaW5zcGVjdG9yQ2xpZW50KCkuYnJvd3Nl
ckRvbWFpbkRpc2FibGVkKG1faW5zcGVjdGVkUGFnZSwgKmluc3BlY3Rvcik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yUHJveHkuY3Bw
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclByb3h5LmNw
cAppbmRleCBiNGEyNGNlZTA1NDgwZmY1MzZmZmNlNTUxMzEzM2VhODY2OWY5NTA3Li4xOWUwOTQ3
ODY1M2RmM2RjOWE3MmRmMzQ3NTY2M2M5YWUxMzIwY2NkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yUHJveHkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JQcm94eS5jcHAKQEAgLTY1
NSwxMyArNjU1LDEzIEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OnNldERpYWdub3N0aWNMb2dn
aW5nQXZhaWxhYmxlKGJvb2wgYXZhaWxhYmxlKQogCiB2b2lkIFdlYkluc3BlY3RvclByb3h5Ojpi
cm93c2VyRXh0ZW5zaW9uc0VuYWJsZWQoSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4mJiBleHRlbnNp
b25JRFRvTmFtZSkKIHsKLSAgICBpZiAoYXV0byogYnJvd3NlckFnZW50ID0gbV9pbnNwZWN0ZWRQ
YWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCkuZW5hYmxlZEluc3BlY3RvckJyb3dzZXJBZ2VudCgp
KQorICAgIGlmIChhdXRvKiBicm93c2VyQWdlbnQgPSBtX2luc3BlY3RlZFBhZ2UtPmluc3BlY3Rv
ckNvbnRyb2xsZXIoKS5lbmFibGVkQnJvd3NlckFnZW50KCkpCiAgICAgICAgIGJyb3dzZXJBZ2Vu
dC0+ZXh0ZW5zaW9uc0VuYWJsZWQoV1RGTW92ZShleHRlbnNpb25JRFRvTmFtZSkpOwogfQogCiB2
b2lkIFdlYkluc3BlY3RvclByb3h5Ojpicm93c2VyRXh0ZW5zaW9uc0Rpc2FibGVkKEhhc2hTZXQ8
U3RyaW5nPiYmIGV4dGVuc2lvbklEcykKIHsKLSAgICBpZiAoYXV0byogYnJvd3NlckFnZW50ID0g
bV9pbnNwZWN0ZWRQYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCkuZW5hYmxlZEluc3BlY3RvckJy
b3dzZXJBZ2VudCgpKQorICAgIGlmIChhdXRvKiBicm93c2VyQWdlbnQgPSBtX2luc3BlY3RlZFBh
Z2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS5lbmFibGVkQnJvd3NlckFnZW50KCkpCiAgICAgICAg
IGJyb3dzZXJBZ2VudC0+ZXh0ZW5zaW9uc0Rpc2FibGVkKFdURk1vdmUoZXh0ZW5zaW9uSURzKSk7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9XZWJQ
YWdlSW5zcGVjdG9yQ29udHJvbGxlci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVj
dG9yL1dlYlBhZ2VJbnNwZWN0b3JDb250cm9sbGVyLmgKaW5kZXggOWNlNWVmMzZiNjUyZmQ1NmE4
NDNjMWQxMmE0YzNjM2NmNjM5MjgyYy4uYzJkZjNjZWI0YjY5ZjMyMDYwZGNiZDkwZDA0ZGM2Y2I1
OTAwZGUwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL1dl
YlBhZ2VJbnNwZWN0b3JDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
SW5zcGVjdG9yL1dlYlBhZ2VJbnNwZWN0b3JDb250cm9sbGVyLmgKQEAgLTc2LDggKzc2LDggQEAg
cHVibGljOgogICAgIHZvaWQgd2lsbERlc3Ryb3lQcm92aXNpb25hbFBhZ2UoY29uc3QgUHJvdmlz
aW9uYWxQYWdlUHJveHkmKTsKICAgICB2b2lkIGRpZENvbW1pdFByb3Zpc2lvbmFsUGFnZShXZWJD
b3JlOjpQYWdlSWRlbnRpZmllciBvbGRXZWJQYWdlSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVy
IG5ld1dlYlBhZ2VJRCk7CiAKLSAgICBJbnNwZWN0b3JCcm93c2VyQWdlbnQqIGVuYWJsZWRJbnNw
ZWN0b3JCcm93c2VyQWdlbnQoKSBjb25zdCB7IHJldHVybiBtX2VuYWJsZWRJbnNwZWN0b3JCcm93
c2VyQWdlbnQ7IH0KLSAgICB2b2lkIHNldEVuYWJsZWRJbnNwZWN0b3JCcm93c2VyQWdlbnQoSW5z
cGVjdG9yQnJvd3NlckFnZW50KiBhZ2VudCkgeyBtX2VuYWJsZWRJbnNwZWN0b3JCcm93c2VyQWdl
bnQgPSBhZ2VudDsgfQorICAgIEluc3BlY3RvckJyb3dzZXJBZ2VudCogZW5hYmxlZEJyb3dzZXJB
Z2VudCgpIGNvbnN0IHsgcmV0dXJuIG1fZW5hYmxlZEJyb3dzZXJBZ2VudDsgfQorICAgIHZvaWQg
c2V0RW5hYmxlZEJyb3dzZXJBZ2VudChJbnNwZWN0b3JCcm93c2VyQWdlbnQqIGFnZW50KSB7IG1f
ZW5hYmxlZEJyb3dzZXJBZ2VudCA9IGFnZW50OyB9CiAKIHByaXZhdGU6CiAgICAgV2ViUGFnZUFn
ZW50Q29udGV4dCB3ZWJQYWdlQWdlbnRDb250ZXh0KCk7CkBAIC05NCw3ICs5NCw3IEBAIHByaXZh
dGU6CiAgICAgSW5zcGVjdG9yOjpJbnNwZWN0b3JUYXJnZXRBZ2VudCogbV90YXJnZXRBZ2VudDsK
ICAgICBIYXNoTWFwPFN0cmluZywgc3RkOjp1bmlxdWVfcHRyPEluc3BlY3RvclRhcmdldFByb3h5
Pj4gbV90YXJnZXRzOwogCi0gICAgSW5zcGVjdG9yQnJvd3NlckFnZW50KiBtX2VuYWJsZWRJbnNw
ZWN0b3JCcm93c2VyQWdlbnQ7CisgICAgSW5zcGVjdG9yQnJvd3NlckFnZW50KiBtX2VuYWJsZWRC
cm93c2VyQWdlbnQ7CiAKICAgICBib29sIG1fZGlkQ3JlYXRlTGF6eUFnZW50cyB7IGZhbHNlIH07
CiB9Owo=
</data>

          </attachment>
      

    </bug>

</bugzilla>