<?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>183524</bug_id>
          
          <creation_ts>2018-03-09 14:12:52 -0800</creation_ts>
          <short_desc>Web Inspector: there should only be one way for async backend commands to send failure</short_desc>
          <delta_ts>2018-03-12 17:22:39 -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="Blaze Burg">bburg</reporter>
          <assigned_to name="Blaze Burg">bburg</assigned_to>
          <cc>aestes</cc>
    
    <cc>bburg</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>hi</cc>
    
    <cc>inspector-bugzilla-changes</cc>
    
    <cc>joepeck</cc>
    
    <cc>keith_miller</cc>
    
    <cc>lforschler</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1405308</commentid>
    <comment_count>0</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2018-03-09 14:12:52 -0800</bug_when>
    <thetext>Currently code does callback-&gt;sendFailure, and some code just sets the ErrorString, which doesn&apos;t really do anything. Don&apos;t include an ErrorString out-param for async backend commands.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1405340</commentid>
    <comment_count>1</comment_count>
      <attachid>335471</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2018-03-09 15:07:54 -0800</bug_when>
    <thetext>Created attachment 335471
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1405346</commentid>
    <comment_count>2</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-03-09 15:12:26 -0800</bug_when>
    <thetext>This patch modifies the inspector protocol generator. Please ensure that you have rebaselined any generator test results (i.e., by running `Tools/Scripts/run-inspector-generator-tests --reset-results`)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1405347</commentid>
    <comment_count>3</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-03-09 15:12:40 -0800</bug_when>
    <thetext>Attachment 335471 did not pass style-queue:


ERROR: Source/WebCore/inspector/agents/InspectorIndexedDBAgent.cpp:567:  out_document is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/inspector/agents/InspectorIndexedDBAgent.cpp:567:  out_idbFactory is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/inspector/agents/InspectorIndexedDBAgent.h:66:  in_securityOrigin is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/inspector/agents/InspectorIndexedDBAgent.h:66:  in_databaseName is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/inspector/agents/InspectorIndexedDBAgent.h:66:  in_objectStoreName is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Total errors found: 5 in 16 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1405363</commentid>
    <comment_count>4</comment_count>
      <attachid>335471</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2018-03-09 15:32:38 -0800</bug_when>
    <thetext>Comment on attachment 335471
Patch

Nice!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1405399</commentid>
    <comment_count>5</comment_count>
      <attachid>335471</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-03-09 16:43:09 -0800</bug_when>
    <thetext>Comment on attachment 335471
Patch

Clearing flags on attachment: 335471

Committed r229493: &lt;https://trac.webkit.org/changeset/229493&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1405400</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-03-09 16:43:11 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1405993</commentid>
    <comment_count>7</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-03-12 17:22:39 -0700</bug_when>
    <thetext>&lt;rdar://problem/38397805&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>335471</attachid>
            <date>2018-03-09 15:07:54 -0800</date>
            <delta_ts>2018-03-09 16:43:09 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-183524-20180309150754.patch</filename>
            <type>text/plain</type>
            <size>88596</size>
            <attacher name="Blaze Burg">bburg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI5NDM5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBh
M2VhOTNjZDFmZTVmZTUzOTAzOTU1YzFlY2RmNjMwNDdlMjgyZTgwLi5mMGNhYmQ3ZTQ5MGM5MDVi
NjhmNDdjNzlkMGQ1NTJlOWE1OGYyYjgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMCBAQAorMjAxOC0wMy0wOSAgQnJpYW4gQnVyZyAgPGJidXJnQGFwcGxlLmNvbT4KKwor
ICAgICAgICBXZWIgSW5zcGVjdG9yOiB0aGVyZSBzaG91bGQgb25seSBiZSBvbmUgd2F5IGZvciBh
c3luYyBiYWNrZW5kIGNvbW1hbmRzIHRvIHNlbmQgZmFpbHVyZQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgzNTI0CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSWYgdGhpcyBpcyBhbiBhc3luYyBjb21tYW5k
LCBlcnJvcnMgc2hvdWxkIGJlIHJlcG9ydGVkIHdpdGggQmFja2VuZERpc3BhdGNoZXI6OkNhbGxi
YWNrQmFzZTo6c2VuZEZhaWx1cmUuCisgICAgICAgIFRvIGF2b2lkIG1peHVwcywgZG9uJ3QgaW5j
bHVkZSB0aGUgRXJyb3JTdHJpbmcgb3V0LXBhcmFtZXRlciBpbiBnZW5lcmF0ZWQgYXN5bmMgY29t
bWFuZCBzaWduYXR1cmVzLgorICAgICAgICBUaGlzIGNoYW5nZSBvbmx5IGFmZmVjdHMgaW50ZXJm
YWNlcyBnZW5lcmF0ZWQgZm9yIEMrKyBiYWNrZW5kIGRpc3BhdGNoZXJzLgorCisgICAgICAgICog
aW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0ZV9jcHBfYmFja2VuZF9kaXNwYXRjaGVy
X2hlYWRlci5weToKKyAgICAgICAgKENwcEJhY2tlbmREaXNwYXRjaGVySGVhZGVyR2VuZXJhdG9y
Ll9nZW5lcmF0ZV9hc3luY19oYW5kbGVyX2RlY2xhcmF0aW9uX2Zvcl9jb21tYW5kKToKKyAgICAg
ICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX2NwcF9iYWNrZW5kX2Rpc3Bh
dGNoZXJfaW1wbGVtZW50YXRpb24ucHk6CisgICAgICAgIChDcHBCYWNrZW5kRGlzcGF0Y2hlcklt
cGxlbWVudGF0aW9uR2VuZXJhdG9yLl9nZW5lcmF0ZV9kaXNwYXRjaGVyX2ltcGxlbWVudGF0aW9u
X2Zvcl9jb21tYW5kKToKKyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmlj
L2V4cGVjdGVkL2NvbW1hbmRzLXdpdGgtYXN5bmMtYXR0cmlidXRlLmpzb24tcmVzdWx0OgorCiAy
MDE4LTAzLTA4ICBLZWl0aCBNaWxsZXIgIDxrZWl0aF9taWxsZXJAYXBwbGUuY29tPgogCiAgICAg
ICAgIFVucmV2aWV3ZWQsIGFub3RoZXIgYXR0ZW1wdCBhdCBmaXhpbmcgdGhlIFdpbmRvd3MgYnVp
bGQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKaW5kZXggNTI2MWNjNjg4NDVlOTU2YTg5ZWE1OTNkNDFhYmZkYTJhNmRhOTJl
My4uOWQ4MTkxZGFiZTViMDQ4YTQ0MDkzY2I2N2RkMTE5ZDcyMTlkMGE2MyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDMzIEBACisyMDE4LTAzLTA5ICBCcmlhbiBCdXJnICA8YmJ1cmdAYXBwbGUuY29t
PgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IHRoZXJlIHNob3VsZCBvbmx5IGJlIG9uZSB3YXkg
Zm9yIGFzeW5jIGJhY2tlbmQgY29tbWFuZHMgdG8gc2VuZCBmYWlsdXJlCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODM1MjQKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW1vdmUgc29tZSB1c2VsZXNzIEVy
cm9yU3RyaW5nIGFyZ3VtZW50cy4gRml4IHNvbWUgYnVncyB3aGVyZSB3ZQorICAgICAgICBtYXkg
bmV2ZXIgY2FsbCB0aGUgY2FsbGJhY2sgaW4gYW4gZWFybHkgZXhpdCBzaXR1YXRpb24uCisKKyAg
ICAgICAgQ292ZXJlZCBieSBleGlzdGluZyBJbnNwZWN0b3IgYW5kIHByb3RvY29sIGdlbmVyYXRv
ciB0ZXN0cy4KKworICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRGF0YWJhc2VB
Z2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JEYXRhYmFzZUFnZW50OjpleGVj
dXRlU1FMKToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRhdGFiYXNlQWdl
bnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckluZGV4ZWREQkFnZW50
Lmg6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpnZXREb2N1bWVudEFuZElEQkZhY3RvcnlGcm9tRnJhbWVP
clNlbmRGYWlsdXJlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckluZGV4ZWREQkFnZW50
OjpyZXF1ZXN0RGF0YWJhc2VOYW1lcyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbmRl
eGVkREJBZ2VudDo6cmVxdWVzdERhdGFiYXNlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ckluZGV4ZWREQkFnZW50OjpyZXF1ZXN0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JJbmRleGVkREJBZ2VudDo6Y2xlYXJPYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjph
c3NlcnREb2N1bWVudCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjphc3NlcnRJREJGYWN0
b3J5KTogRGVsZXRlZC4KKyAgICAgICAgTW9kZXJuaXplIHRoaXMgY29kZSBhIGxpdHRsZSBiaXQg
dG8gc2hhcmUgdGhlIGRvY3VtZW50L2lkYkZhY3RvcnkgZXh0cmFjdGlvbiBjb2RlLgorCisgICAg
ICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yTmV0d29ya0FnZW50Ojpsb2FkUmVzb3VyY2UpOgorICAgICAg
ICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50Lmg6CisKIDIwMTgtMDMt
MDggIE1lZ2FuIEdhcmRuZXIgIDxtZWdhbl9nYXJkbmVyQGFwcGxlLmNvbT4KIAogICAgICAgICBF
bnN1cmUgZGVmYXVsdCBhcHBlYXJhbmNlIGZvciBzZWxlY3Rpb24gZm9ybSBjb250cm9sCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CmluZGV4IDNjZmNjYWJhOTM1OTZlMTY5MWFhMzVhMjIzMDUwMTI4Njc5NWRjYjMuLjMyYjU3ODE2
ZjE1N2I2M2FlM2Q2MzJjYzU1ZTY0ZmM3MGFmN2Y3NDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTQg
QEAKKzIwMTgtMDMtMDkgIEJyaWFuIEJ1cmcgIDxiYnVyZ0BhcHBsZS5jb20+CisKKyAgICAgICAg
V2ViIEluc3BlY3RvcjogdGhlcmUgc2hvdWxkIG9ubHkgYmUgb25lIHdheSBmb3IgYXN5bmMgYmFj
a2VuZCBjb21tYW5kcyB0byBzZW5kIGZhaWx1cmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MzUyNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFJlbW92ZSB1c2VsZXNzIEVycm9yU3RyaW5nIGFyZ3VtZW50
IGZyb20gYXN5bmMgY29tbWFuZHMuCisKKyAgICAgICAgRm9yIEF1dG9tYXRpb24gcHJvdG9jb2ws
IGludHJvZHVjZSBzeW5jIGFuZCBhc3luYyBtYWNyb3MgZm9yIGZpbGxpbmcKKyAgICAgICAgaW4g
YW5kIHNlbmRpbmcgYSBmYWlsdXJlIHJlc3BvbnNlLiBOb3cgdGhhdCBhc3luYyBjb21tYW5kcyBk
b24ndCBoYXZlCisgICAgICAgIGFuIEVycm9yU3RyaW5nIGFuZCBzeW5jIGNvbW1hbmRzIGRvbid0
IGhhdmUgYSBjYWxsYmFjaywgdHJ5aW5nIHRvIHNlbmQKKyAgICAgICAgYW4gZXJyb3Igd2l0aCB0
aGUgd3JvbmcgbWFjcm8gaXMgYSBjb21waWxlLXRpbWUgZXJyb3IuCisKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYkF1dG9tYXRpb25TZXNzaW9uOjpnZXRCcm93c2luZ0NvbnRleHRzKToKKyAgICAgICAg
KFdlYktpdDo6V2ViQXV0b21hdGlvblNlc3Npb246OmdldEJyb3dzaW5nQ29udGV4dCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYkF1dG9tYXRpb25TZXNzaW9uOjpjcmVhdGVCcm93c2luZ0NvbnRleHQp
OgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6Y2xvc2VCcm93c2luZ0Nv
bnRleHQpOgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6c3dpdGNoVG9C
cm93c2luZ0NvbnRleHQpOgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6
c2V0V2luZG93RnJhbWVPZkJyb3dzaW5nQ29udGV4dCk6CisgICAgICAgIChXZWJLaXQ6OldlYkF1
dG9tYXRpb25TZXNzaW9uOjp3YWl0Rm9yTmF2aWdhdGlvblRvQ29tcGxldGUpOgorICAgICAgICAo
V2ViS2l0OjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6bmF2aWdhdGVCcm93c2luZ0NvbnRleHQpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6Z29CYWNrSW5Ccm93c2luZ0Nv
bnRleHQpOgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6Z29Gb3J3YXJk
SW5Ccm93c2luZ0NvbnRleHQpOgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRvbWF0aW9uU2Vzc2lv
bjo6cmVsb2FkQnJvd3NpbmdDb250ZXh0KToKKyAgICAgICAgKFdlYktpdDo6V2ViQXV0b21hdGlv
blNlc3Npb246OmV2YWx1YXRlSmF2YVNjcmlwdEZ1bmN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6
V2ViQXV0b21hdGlvblNlc3Npb246OnJlc29sdmVDaGlsZEZyYW1lSGFuZGxlKToKKyAgICAgICAg
KFdlYktpdDo6V2ViQXV0b21hdGlvblNlc3Npb246OnJlc29sdmVQYXJlbnRGcmFtZUhhbmRsZSk6
CisgICAgICAgIChXZWJLaXQ6OldlYkF1dG9tYXRpb25TZXNzaW9uOjpjb21wdXRlRWxlbWVudExh
eW91dCk6CisgICAgICAgIChXZWJLaXQ6OldlYkF1dG9tYXRpb25TZXNzaW9uOjpzZWxlY3RPcHRp
b25FbGVtZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViQXV0b21hdGlvblNlc3Npb246OmlzU2hv
d2luZ0phdmFTY3JpcHREaWFsb2cpOgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRvbWF0aW9uU2Vz
c2lvbjo6ZGlzbWlzc0N1cnJlbnRKYXZhU2NyaXB0RGlhbG9nKToKKyAgICAgICAgKFdlYktpdDo6
V2ViQXV0b21hdGlvblNlc3Npb246OmFjY2VwdEN1cnJlbnRKYXZhU2NyaXB0RGlhbG9nKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViQXV0b21hdGlvblNlc3Npb246Om1lc3NhZ2VPZkN1cnJlbnRKYXZh
U2NyaXB0RGlhbG9nKToKKyAgICAgICAgKFdlYktpdDo6V2ViQXV0b21hdGlvblNlc3Npb246OnNl
dFVzZXJJbnB1dEZvckN1cnJlbnRKYXZhU2NyaXB0UHJvbXB0KToKKyAgICAgICAgKFdlYktpdDo6
V2ViQXV0b21hdGlvblNlc3Npb246OnNldEZpbGVzVG9TZWxlY3RGb3JGaWxlVXBsb2FkKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViQXV0b21hdGlvblNlc3Npb246OmdldEFsbENvb2tpZXMpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6ZGVsZXRlU2luZ2xlQ29va2llKToK
KyAgICAgICAgKFdlYktpdDo6V2ViQXV0b21hdGlvblNlc3Npb246OmFkZFNpbmdsZUNvb2tpZSk6
CisgICAgICAgIChXZWJLaXQ6OldlYkF1dG9tYXRpb25TZXNzaW9uOjpkZWxldGVBbGxDb29raWVz
KToKKyAgICAgICAgKFdlYktpdDo6V2ViQXV0b21hdGlvblNlc3Npb246OnNldFNlc3Npb25QZXJt
aXNzaW9ucyk6CisgICAgICAgIChXZWJLaXQ6OldlYkF1dG9tYXRpb25TZXNzaW9uOjpwZXJmb3Jt
TW91c2VJbnRlcmFjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYkF1dG9tYXRpb25TZXNzaW9u
OjpwZXJmb3JtS2V5Ym9hcmRJbnRlcmFjdGlvbnMpOgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRv
bWF0aW9uU2Vzc2lvbjo6dGFrZVNjcmVlbnNob3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRv
bWF0aW9uU2Vzc2lvbjo6ZGlkVGFrZVNjcmVlbnNob3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
dXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmg6CisgICAgICAgICogVUlQcm9jZXNzL0F1
dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25NYWNyb3MuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvQXV0b21hdGlvbi9tYWMvV2ViQXV0b21hdGlvblNlc3Npb25NYWMubW06CisgICAgICAgIChX
ZWJLaXQ6OldlYkF1dG9tYXRpb25TZXNzaW9uOjppbnNwZWN0QnJvd3NpbmdDb250ZXh0KToKKwog
MjAxOC0wMy0wOCAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAg
ICAgICBbRXh0cmEgem9vbSBtb2RlXSBTdXBwb3J0IHJlc2lnbmluZyBmaXJzdCByZXNwb25kZXIg
c3RhdHVzIHdoZW4gZm9jdXNpbmcgYSBmb3JtIGNvbnRyb2wKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX2NwcF9iYWNr
ZW5kX2Rpc3BhdGNoZXJfaGVhZGVyLnB5IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVfY3BwX2JhY2tlbmRfZGlzcGF0Y2hlcl9oZWFkZXIu
cHkKaW5kZXggMDdkYzg2ZGY4YWM1ZjVjYWQxMWEzOWQwMTU5NTJhMzM1YjgzNGM2MS4uMDc2OWM4
YTI3YTk3M2RjNWZlM2IxNzgwYzRkMzdkYWE4NGQ0ZWI3NCAxMDA3NTUKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVfY3BwX2JhY2tl
bmRfZGlzcGF0Y2hlcl9oZWFkZXIucHkKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVfY3BwX2JhY2tlbmRfZGlzcGF0Y2hlcl9oZWFk
ZXIucHkKQEAgLTE2MCw3ICsxNjAsNyBAQCBjbGFzcyBDcHBCYWNrZW5kRGlzcGF0Y2hlckhlYWRl
ckdlbmVyYXRvcihDcHBHZW5lcmF0b3IpOgogICAgIGRlZiBfZ2VuZXJhdGVfYXN5bmNfaGFuZGxl
cl9kZWNsYXJhdGlvbl9mb3JfY29tbWFuZChzZWxmLCBjb21tYW5kKToKICAgICAgICAgY2FsbGJh
Y2tOYW1lID0gIiVzQ2FsbGJhY2siICUgdWNmaXJzdChjb21tYW5kLmNvbW1hbmRfbmFtZSkKIAot
ICAgICAgICBpbl9wYXJhbWV0ZXJzID0gWydFcnJvclN0cmluZyYnXQorICAgICAgICBpbl9wYXJh
bWV0ZXJzID0gW10KICAgICAgICAgZm9yIF9wYXJhbWV0ZXIgaW4gY29tbWFuZC5jYWxsX3BhcmFt
ZXRlcnM6CiAgICAgICAgICAgICBwYXJhbWV0ZXJfbmFtZSA9ICdpbl8nICsgX3BhcmFtZXRlci5w
YXJhbWV0ZXJfbmFtZQogICAgICAgICAgICAgaWYgX3BhcmFtZXRlci5pc19vcHRpb25hbDoKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2Vu
L2dlbmVyYXRlX2NwcF9iYWNrZW5kX2Rpc3BhdGNoZXJfaW1wbGVtZW50YXRpb24ucHkgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0ZV9jcHBf
YmFja2VuZF9kaXNwYXRjaGVyX2ltcGxlbWVudGF0aW9uLnB5CmluZGV4IGJlNmY0NWFlYThkNmM0
NDRlNGZkNjgzNTQ2NzFmZjk0YTkxMmM4YWYuLmFhY2EzOTI2NzI3MDdiMmQ3MDdiMWNlZGY5ZjFh
NDZjNzAyYTg4MmQgMTAwNzU1Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
c2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX2NwcF9iYWNrZW5kX2Rpc3BhdGNoZXJfaW1wbGVtZW50
YXRpb24ucHkKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2Nv
ZGVnZW4vZ2VuZXJhdGVfY3BwX2JhY2tlbmRfZGlzcGF0Y2hlcl9pbXBsZW1lbnRhdGlvbi5weQpA
QCAtMTg2LDcgKzE4Niw5IEBAIGNsYXNzIENwcEJhY2tlbmREaXNwYXRjaGVySW1wbGVtZW50YXRp
b25HZW5lcmF0b3IoQ3BwR2VuZXJhdG9yKToKICAgICAgICAgb3V0X3BhcmFtZXRlcl9kZWNsYXJh
dGlvbnMgPSBbXQogICAgICAgICBvdXRfcGFyYW1ldGVyX2Fzc2lnbm1lbnRzID0gW10KICAgICAg
ICAgYWx0ZXJuYXRlX2Rpc3BhdGNoZXJfbWV0aG9kX3BhcmFtZXRlcnMgPSBbJ3JlcXVlc3RJZCdd
Ci0gICAgICAgIG1ldGhvZF9wYXJhbWV0ZXJzID0gWydlcnJvciddCisgICAgICAgIG1ldGhvZF9w
YXJhbWV0ZXJzID0gW10KKyAgICAgICAgaWYgbm90IGNvbW1hbmQuaXNfYXN5bmM6CisgICAgICAg
ICAgICBtZXRob2RfcGFyYW1ldGVycy5hcHBlbmQoJ2Vycm9yJykKIAogICAgICAgICBmb3IgcGFy
YW1ldGVyIGluIGNvbW1hbmQuY2FsbF9wYXJhbWV0ZXJzOgogICAgICAgICAgICAgcGFyYW1ldGVy
X25hbWUgPSAnaW5fJyArIHBhcmFtZXRlci5wYXJhbWV0ZXJfbmFtZQpAQCAtMjk5LDMxICszMDEs
MzEgQEAgY2xhc3MgQ3BwQmFja2VuZERpc3BhdGNoZXJJbXBsZW1lbnRhdGlvbkdlbmVyYXRvcihD
cHBHZW5lcmF0b3IpOgogICAgICAgICAgICAgbGluZXMuYXBwZW5kKCcjZW5kaWYnKQogICAgICAg
ICAgICAgbGluZXMuYXBwZW5kKCcnKQogCi0gICAgICAgIGxpbmVzLmFwcGVuZCgnICAgIEVycm9y
U3RyaW5nIGVycm9yOycpCi0gICAgICAgIGxpbmVzLmFwcGVuZCgnICAgIFJlZjxKU09OOjpPYmpl
Y3Q+IHJlc3VsdCA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7JykKICAgICAgICAgaWYgY29tbWFu
ZC5pc19hc3luYzoKICAgICAgICAgICAgIGxpbmVzLmFwcGVuZCgnICAgIFJlZjwlKGRvbWFpbk5h
bWUpc0JhY2tlbmREaXNwYXRjaGVySGFuZGxlcjo6JShjYWxsYmFja05hbWUpcz4gY2FsbGJhY2sg
PSBhZG9wdFJlZigqbmV3ICUoZG9tYWluTmFtZSlzQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyOjol
KGNhbGxiYWNrTmFtZSlzKG1fYmFja2VuZERpc3BhdGNoZXIuY29weVJlZigpLCByZXF1ZXN0SWQp
KTsnICUgY29tbWFuZF9hcmdzKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgbGluZXMuYXBw
ZW5kKCcgICAgRXJyb3JTdHJpbmcgZXJyb3I7JykKKyAgICAgICAgICAgIGxpbmVzLmFwcGVuZCgn
ICAgIFJlZjxKU09OOjpPYmplY3Q+IHJlc3VsdCA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7JykK
KwogICAgICAgICBpZiBsZW4oY29tbWFuZC5yZXR1cm5fcGFyYW1ldGVycykgPiAwOgogICAgICAg
ICAgICAgbGluZXMuZXh0ZW5kKG91dF9wYXJhbWV0ZXJfZGVjbGFyYXRpb25zKQogICAgICAgICBs
aW5lcy5hcHBlbmQoJyAgICBtX2FnZW50LT4lKGNvbW1hbmROYW1lKXMoJShpbnZvY2F0aW9uUGFy
YW1ldGVycylzKTsnICUgY29tbWFuZF9hcmdzKQogICAgICAgICBsaW5lcy5hcHBlbmQoJycpCi0g
ICAgICAgIGlmIGNvbW1hbmQuaXNfYXN5bmM6Ci0gICAgICAgICAgICBsaW5lcy5hcHBlbmQoJyAg
ICBpZiAoZXJyb3IubGVuZ3RoKCkpIHsnKQotICAgICAgICAgICAgbGluZXMuZXh0ZW5kKG91dF9w
YXJhbWV0ZXJfYXNzaWdubWVudHMpCi0gICAgICAgICAgICBsaW5lcy5hcHBlbmQoJyAgICB9JykK
LSAgICAgICAgZWxpZiBsZW4oY29tbWFuZC5yZXR1cm5fcGFyYW1ldGVycykgPiAxOgotICAgICAg
ICAgICAgbGluZXMuYXBwZW5kKCcgICAgaWYgKCFlcnJvci5sZW5ndGgoKSkgeycpCi0gICAgICAg
ICAgICBsaW5lcy5leHRlbmQob3V0X3BhcmFtZXRlcl9hc3NpZ25tZW50cykKLSAgICAgICAgICAg
IGxpbmVzLmFwcGVuZCgnICAgIH0nKQotICAgICAgICBlbGlmIGxlbihjb21tYW5kLnJldHVybl9w
YXJhbWV0ZXJzKSA9PSAxOgotICAgICAgICAgICAgbGluZXMuYXBwZW5kKCcgICAgaWYgKCFlcnJv
ci5sZW5ndGgoKSknKQotICAgICAgICAgICAgbGluZXMuZXh0ZW5kKG91dF9wYXJhbWV0ZXJfYXNz
aWdubWVudHMpCi0gICAgICAgICAgICBsaW5lcy5hcHBlbmQoJycpCiAKICAgICAgICAgaWYgbm90
IGNvbW1hbmQuaXNfYXN5bmM6CisgICAgICAgICAgICBpZiBsZW4oY29tbWFuZC5yZXR1cm5fcGFy
YW1ldGVycykgPiAxOgorICAgICAgICAgICAgICAgIGxpbmVzLmFwcGVuZCgnICAgIGlmICghZXJy
b3IubGVuZ3RoKCkpIHsnKQorICAgICAgICAgICAgICAgIGxpbmVzLmV4dGVuZChvdXRfcGFyYW1l
dGVyX2Fzc2lnbm1lbnRzKQorICAgICAgICAgICAgICAgIGxpbmVzLmFwcGVuZCgnICAgIH0nKQor
ICAgICAgICAgICAgZWxpZiBsZW4oY29tbWFuZC5yZXR1cm5fcGFyYW1ldGVycykgPT0gMToKKyAg
ICAgICAgICAgICAgICBsaW5lcy5hcHBlbmQoJyAgICBpZiAoIWVycm9yLmxlbmd0aCgpKScpCisg
ICAgICAgICAgICAgICAgbGluZXMuZXh0ZW5kKG91dF9wYXJhbWV0ZXJfYXNzaWdubWVudHMpCisg
ICAgICAgICAgICAgICAgbGluZXMuYXBwZW5kKCcnKQorCiAgICAgICAgICAgICBsaW5lcy5hcHBl
bmQoJyAgICBpZiAoIWVycm9yLmxlbmd0aCgpKScpCiAgICAgICAgICAgICBsaW5lcy5hcHBlbmQo
JyAgICAgICAgbV9iYWNrZW5kRGlzcGF0Y2hlci0+c2VuZFJlc3BvbnNlKHJlcXVlc3RJZCwgV1RG
TW92ZShyZXN1bHQpLCBmYWxzZSk7JykKICAgICAgICAgICAgIGxpbmVzLmFwcGVuZCgnICAgIGVs
c2UnKQogICAgICAgICAgICAgbGluZXMuYXBwZW5kKCcgICAgICAgIG1fYmFja2VuZERpc3BhdGNo
ZXItPnJlcG9ydFByb3RvY29sRXJyb3IoQmFja2VuZERpc3BhdGNoZXI6OlNlcnZlckVycm9yLCBX
VEZNb3ZlKGVycm9yKSk7JykKKwogICAgICAgICBsaW5lcy5hcHBlbmQoJ30nKQogICAgICAgICBy
ZXR1cm4gIlxuIi5qb2luKGxpbmVzKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvY29tbWFuZHMtd2l0aC1h
c3luYy1hdHRyaWJ1dGUuanNvbi1yZXN1bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC9jb21tYW5kcy13aXRoLWFzeW5jLWF0
dHJpYnV0ZS5qc29uLXJlc3VsdAppbmRleCA0MGYzOTA4ZWRhZmIxOGJmYzdlOGZjMmVlOWFiZjEw
OGJlYzFlOWJjLi44MjRiNjA2ZTk0ZDdhNjI5MGFhNTA1NmYzNzdlYWJlNGQ3ODkxMzhlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2Vu
ZXJpYy9leHBlY3RlZC9jb21tYW5kcy13aXRoLWFzeW5jLWF0dHJpYnV0ZS5qc29uLXJlc3VsdAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJp
Yy9leHBlY3RlZC9jb21tYW5kcy13aXRoLWFzeW5jLWF0dHJpYnV0ZS5qc29uLXJlc3VsdApAQCAt
MTYzLDE0ICsxNjMsMTQgQEAgcHVibGljOgogICAgICAgICBFeGVjdXRlU1FMQXN5bmNPcHRpb25h
bFJldHVyblZhbHVlc0NhbGxiYWNrKFJlZjxCYWNrZW5kRGlzcGF0Y2hlcj4mJiwgaW50IGlkKTsK
ICAgICAgICAgdm9pZCBzZW5kU3VjY2VzcyhSZWZQdHI8SlNPTjo6QXJyYXlPZjxTdHJpbmc+PiYm
IGNvbHVtbk5hbWVzLCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4mIG5vdGVzLCBzdGQ6Om9wdGlvbmFs
PGRvdWJsZT4mIHRpbWVzdGFtcCwgc3RkOjpvcHRpb25hbDxKU09OOjpPYmplY3Q+JiB2YWx1ZXMs
IHN0ZDo6b3B0aW9uYWw8SlNPTjo6VmFsdWU+JiBwYXlsb2FkLCBzdGQ6Om9wdGlvbmFsPGludD4m
IGRhdGFiYXNlSWQsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6RXJyb3I+
JiYgc3FsRXJyb3IsIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiYgc2NyZWVuQ29sb3IsIFJlZlB0cjxJ
bnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6Q29sb3JMaXN0PiYmIGFsdGVybmF0ZUNvbG9y
cywgc3RkOjpvcHRpb25hbDxTdHJpbmc+JiBwcmludENvbG9yKTsKICAgICB9OwotICAgIHZpcnR1
YWwgdm9pZCBleGVjdXRlU1FMQXN5bmNPcHRpb25hbFJldHVyblZhbHVlcyhFcnJvclN0cmluZyYs
IGludCBpbl9kYXRhYmFzZUlkLCBjb25zdCBTdHJpbmcmIGluX3F1ZXJ5LCBSZWY8RXhlY3V0ZVNR
TEFzeW5jT3B0aW9uYWxSZXR1cm5WYWx1ZXNDYWxsYmFjaz4mJiBjYWxsYmFjaykgPSAwOworICAg
IHZpcnR1YWwgdm9pZCBleGVjdXRlU1FMQXN5bmNPcHRpb25hbFJldHVyblZhbHVlcyhpbnQgaW5f
ZGF0YWJhc2VJZCwgY29uc3QgU3RyaW5nJiBpbl9xdWVyeSwgUmVmPEV4ZWN1dGVTUUxBc3luY09w
dGlvbmFsUmV0dXJuVmFsdWVzQ2FsbGJhY2s+JiYgY2FsbGJhY2spID0gMDsKICAgICB2aXJ0dWFs
IHZvaWQgZXhlY3V0ZVNRTFN5bmMoRXJyb3JTdHJpbmcmLCBpbnQgaW5fZGF0YWJhc2VJZCwgY29u
c3QgU3RyaW5nJiBpbl9xdWVyeSwgUmVmUHRyPEpTT046OkFycmF5T2Y8U3RyaW5nPj4mIG91dF9j
b2x1bW5OYW1lcywgU3RyaW5nKiBvdXRfbm90ZXMsIGRvdWJsZSogb3V0X3RpbWVzdGFtcCwgSlNP
Tjo6T2JqZWN0KiBvdXRfdmFsdWVzLCBKU09OOjpWYWx1ZSogb3V0X3BheWxvYWQsIGludCogb3V0
X2RhdGFiYXNlSWQsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6RXJyb3I+
JiBvdXRfc3FsRXJyb3IsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6Q29s
b3JMaXN0PiYgb3V0X2FsdGVybmF0ZUNvbG9ycywgSW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJh
c2U6OlByaW1hcnlDb2xvcnMqIG91dF9zY3JlZW5Db2xvciwgRGF0YWJhc2VCYWNrZW5kRGlzcGF0
Y2hlckhhbmRsZXI6OlByaW50Q29sb3IqIG91dF9wcmludENvbG9yKSA9IDA7CiAgICAgY2xhc3Mg
RXhlY3V0ZVNRTEFzeW5jQ2FsbGJhY2sgOiBwdWJsaWMgQmFja2VuZERpc3BhdGNoZXI6OkNhbGxi
YWNrQmFzZSB7CiAgICAgcHVibGljOgogICAgICAgICBFeGVjdXRlU1FMQXN5bmNDYWxsYmFjayhS
ZWY8QmFja2VuZERpc3BhdGNoZXI+JiYsIGludCBpZCk7CiAgICAgICAgIHZvaWQgc2VuZFN1Y2Nl
c3MoUmVmUHRyPEpTT046OkFycmF5T2Y8U3RyaW5nPj4mJiBjb2x1bW5OYW1lcywgY29uc3QgU3Ry
aW5nJiBub3RlcywgZG91YmxlIHRpbWVzdGFtcCwgSlNPTjo6T2JqZWN0IHZhbHVlcywgSlNPTjo6
VmFsdWUgcGF5bG9hZCwgaW50IGRhdGFiYXNlSWQsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29s
OjpEYXRhYmFzZTo6RXJyb3I+JiYgc3FsRXJyb3IsIGNvbnN0IFN0cmluZyYgc2NyZWVuQ29sb3Is
IFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6Q29sb3JMaXN0PiYmIGFsdGVy
bmF0ZUNvbG9ycywgY29uc3QgU3RyaW5nJiBwcmludENvbG9yKTsKICAgICB9OwotICAgIHZpcnR1
YWwgdm9pZCBleGVjdXRlU1FMQXN5bmMoRXJyb3JTdHJpbmcmLCBpbnQgaW5fZGF0YWJhc2VJZCwg
Y29uc3QgU3RyaW5nJiBpbl9xdWVyeSwgUmVmPEV4ZWN1dGVTUUxBc3luY0NhbGxiYWNrPiYmIGNh
bGxiYWNrKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGV4ZWN1dGVTUUxBc3luYyhpbnQgaW5fZGF0
YWJhc2VJZCwgY29uc3QgU3RyaW5nJiBpbl9xdWVyeSwgUmVmPEV4ZWN1dGVTUUxBc3luY0NhbGxi
YWNrPiYmIGNhbGxiYWNrKSA9IDA7CiBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB+RGF0YWJhc2VC
YWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIoKTsKIH07CkBAIC0zNzgsMTYgKzM3OCw5IEBAIHZvaWQg
RGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcjo6ZXhlY3V0ZVNRTEFzeW5jT3B0aW9uYWxSZXR1cm5W
YWx1ZXMobG9uZyByZXF1ZXN0CiAgICAgfQogI2VuZGlmCiAKLSAgICBFcnJvclN0cmluZyBlcnJv
cjsKLSAgICBSZWY8SlNPTjo6T2JqZWN0PiByZXN1bHQgPSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgp
OwogICAgIFJlZjxEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlcjo6RXhlY3V0ZVNRTEFz
eW5jT3B0aW9uYWxSZXR1cm5WYWx1ZXNDYWxsYmFjaz4gY2FsbGJhY2sgPSBhZG9wdFJlZigqbmV3
IERhdGFiYXNlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyOjpFeGVjdXRlU1FMQXN5bmNPcHRpb25h
bFJldHVyblZhbHVlc0NhbGxiYWNrKG1fYmFja2VuZERpc3BhdGNoZXIuY29weVJlZigpLCByZXF1
ZXN0SWQpKTsKLSAgICBtX2FnZW50LT5leGVjdXRlU1FMQXN5bmNPcHRpb25hbFJldHVyblZhbHVl
cyhlcnJvciwgaW5fZGF0YWJhc2VJZCwgaW5fcXVlcnksIGNhbGxiYWNrLmNvcHlSZWYoKSk7Cisg
ICAgbV9hZ2VudC0+ZXhlY3V0ZVNRTEFzeW5jT3B0aW9uYWxSZXR1cm5WYWx1ZXMoaW5fZGF0YWJh
c2VJZCwgaW5fcXVlcnksIGNhbGxiYWNrLmNvcHlSZWYoKSk7CiAKLSAgICBpZiAoZXJyb3IubGVu
Z3RoKCkpIHsKLSAgICAgICAgY2FsbGJhY2stPmRpc2FibGUoKTsKLSAgICAgICAgbV9iYWNrZW5k
RGlzcGF0Y2hlci0+cmVwb3J0UHJvdG9jb2xFcnJvcihCYWNrZW5kRGlzcGF0Y2hlcjo6U2VydmVy
RXJyb3IsIGVycm9yKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KIH0KIAogdm9pZCBEYXRhYmFz
ZUJhY2tlbmREaXNwYXRjaGVyOjpleGVjdXRlU1FMU3luYyhsb25nIHJlcXVlc3RJZCwgUmVmUHRy
PEpTT046Ok9iamVjdD4mJiBwYXJhbWV0ZXJzKQpAQCAtNDcyLDE2ICs0NjUsOSBAQCB2b2lkIERh
dGFiYXNlQmFja2VuZERpc3BhdGNoZXI6OmV4ZWN1dGVTUUxBc3luYyhsb25nIHJlcXVlc3RJZCwg
UmVmUHRyPEpTT046Ok9iagogICAgIH0KICNlbmRpZgogCi0gICAgRXJyb3JTdHJpbmcgZXJyb3I7
Ci0gICAgUmVmPEpTT046Ok9iamVjdD4gcmVzdWx0ID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUoKTsK
ICAgICBSZWY8RGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6OkV4ZWN1dGVTUUxBc3lu
Y0NhbGxiYWNrPiBjYWxsYmFjayA9IGFkb3B0UmVmKCpuZXcgRGF0YWJhc2VCYWNrZW5kRGlzcGF0
Y2hlckhhbmRsZXI6OkV4ZWN1dGVTUUxBc3luY0NhbGxiYWNrKG1fYmFja2VuZERpc3BhdGNoZXIu
Y29weVJlZigpLCByZXF1ZXN0SWQpKTsKLSAgICBtX2FnZW50LT5leGVjdXRlU1FMQXN5bmMoZXJy
b3IsIGluX2RhdGFiYXNlSWQsIGluX3F1ZXJ5LCBjYWxsYmFjay5jb3B5UmVmKCkpOworICAgIG1f
YWdlbnQtPmV4ZWN1dGVTUUxBc3luYyhpbl9kYXRhYmFzZUlkLCBpbl9xdWVyeSwgY2FsbGJhY2su
Y29weVJlZigpKTsKIAotICAgIGlmIChlcnJvci5sZW5ndGgoKSkgewotICAgICAgICBjYWxsYmFj
ay0+ZGlzYWJsZSgpOwotICAgICAgICBtX2JhY2tlbmREaXNwYXRjaGVyLT5yZXBvcnRQcm90b2Nv
bEVycm9yKEJhY2tlbmREaXNwYXRjaGVyOjpTZXJ2ZXJFcnJvciwgZXJyb3IpOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQogfQogCiB9IC8vIG5hbWVzcGFjZSBJbnNwZWN0b3IKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRhdGFiYXNlQWdl
bnQuY3BwCmluZGV4IGVlZGUzOTllODEzMjk2MjJjZmM5ZmIwOWU5MWMxNmFmZjI4Y2ZhNjcuLjcw
ZGRmYzE4NDg3ZTc0ZTM1ZTZlMTRmMGJiMDRjMTM2Y2FmMDUwMjcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEYXRhYmFzZUFnZW50
LmNwcApAQCAtMjcxLDcgKzI3MSw3IEBAIHZvaWQgSW5zcGVjdG9yRGF0YWJhc2VBZ2VudDo6Z2V0
RGF0YWJhc2VUYWJsZU5hbWVzKEVycm9yU3RyaW5nJiBlcnJvciwgY29uc3QgU3RyCiAgICAgfQog
fQogCi12b2lkIEluc3BlY3RvckRhdGFiYXNlQWdlbnQ6OmV4ZWN1dGVTUUwoRXJyb3JTdHJpbmcm
LCBjb25zdCBTdHJpbmcmIGRhdGFiYXNlSWQsIGNvbnN0IFN0cmluZyYgcXVlcnksIFJlZjxFeGVj
dXRlU1FMQ2FsbGJhY2s+JiYgcmVxdWVzdENhbGxiYWNrKQordm9pZCBJbnNwZWN0b3JEYXRhYmFz
ZUFnZW50OjpleGVjdXRlU1FMKGNvbnN0IFN0cmluZyYgZGF0YWJhc2VJZCwgY29uc3QgU3RyaW5n
JiBxdWVyeSwgUmVmPEV4ZWN1dGVTUUxDYWxsYmFjaz4mJiByZXF1ZXN0Q2FsbGJhY2spCiB7CiAg
ICAgaWYgKCFtX2VuYWJsZWQpIHsKICAgICAgICAgcmVxdWVzdENhbGxiYWNrLT5zZW5kRmFpbHVy
ZSgiRGF0YWJhc2UgYWdlbnQgaXMgbm90IGVuYWJsZWQiKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5oIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEYXRhYmFzZUFnZW50LmgKaW5kZXgg
NmNhODE1OTFiZmQzODA3YWVlNmRhOTk2ZmIzNmM5MTBiYjJhY2ZiMi4uYTBhYWFkZWIzM2QzNjcz
YWM1NWQ0OTMwMzRhYmYyNWNkYTYyYTZkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEYXRhYmFzZUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEYXRhYmFzZUFnZW50LmgKQEAgLTU4LDcgKzU4
LDcgQEAgcHVibGljOgogICAgIHZvaWQgZW5hYmxlKEVycm9yU3RyaW5nJikgb3ZlcnJpZGU7CiAg
ICAgdm9pZCBkaXNhYmxlKEVycm9yU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBnZXREYXRh
YmFzZVRhYmxlTmFtZXMoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGRhdGFiYXNlSWQsIFJl
ZlB0cjxKU09OOjpBcnJheU9mPFN0cmluZz4+JiBuYW1lcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBl
eGVjdXRlU1FMKEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBkYXRhYmFzZUlkLCBjb25zdCBT
dHJpbmcmIHF1ZXJ5LCBSZWY8RXhlY3V0ZVNRTENhbGxiYWNrPiYmKSBvdmVycmlkZTsKKyAgICB2
b2lkIGV4ZWN1dGVTUUwoY29uc3QgU3RyaW5nJiBkYXRhYmFzZUlkLCBjb25zdCBTdHJpbmcmIHF1
ZXJ5LCBSZWY8RXhlY3V0ZVNRTENhbGxiYWNrPiYmKSBvdmVycmlkZTsKIAogICAgIC8vIENhbGxl
ZCBmcm9tIHRoZSBpbmplY3RlZCBzY3JpcHQuCiAgICAgU3RyaW5nIGRhdGFiYXNlSWQoRGF0YWJh
c2UmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVj
dG9ySW5kZXhlZERCQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9J
bnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHAKaW5kZXggNGQ0YmIyMzA4OTcwN2Q4MDY2ZTI2MzJk
M2MyZGI4NTZhOWE3MjlhMC4uZjc0Zjk0MTE3NDcxMTRjYjY3NjQwYTQzZWI3ZGM5NWQwMTc4OTIx
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JJ
bmRleGVkREJBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9J
bnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHAKQEAgLTg0LDYgKzg0LDEwIEBAIHR5cGVkZWYgSW5z
cGVjdG9yOjpJbmRleGVkREJCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6OlJlcXVlc3REYXRhYmFz
ZUNhbGxiYWNrIFJlCiB0eXBlZGVmIEluc3BlY3Rvcjo6SW5kZXhlZERCQmFja2VuZERpc3BhdGNo
ZXJIYW5kbGVyOjpSZXF1ZXN0RGF0YUNhbGxiYWNrIFJlcXVlc3REYXRhQ2FsbGJhY2s7CiB0eXBl
ZGVmIEluc3BlY3Rvcjo6SW5kZXhlZERCQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyOjpDbGVhck9i
amVjdFN0b3JlQ2FsbGJhY2sgQ2xlYXJPYmplY3RTdG9yZUNhbGxiYWNrOwogCit0eXBlZGVmIFN0
cmluZyBFcnJvclN0cmluZzsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+Cit1c2luZyBFcnJvclN0
cmluZ09yID0gRXhwZWN0ZWQ8VCwgRXJyb3JTdHJpbmc+OwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKQEAgLTUzOCw0NSArNTQyLDU4IEBAIHZvaWQgSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQ6OmRp
c2FibGUoRXJyb3JTdHJpbmcmKQogewogfQogCi1zdGF0aWMgRG9jdW1lbnQqIGFzc2VydERvY3Vt
ZW50KEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgRnJhbWUqIGZyYW1lKQorc3RhdGljIEVycm9y
U3RyaW5nT3I8RG9jdW1lbnQqPiBkb2N1bWVudEZyb21GcmFtZShGcmFtZSogZnJhbWUpCiB7CiAg
ICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gZnJhbWUgPyBmcmFtZS0+ZG9jdW1lbnQoKSA6IG51bGxw
dHI7CiAgICAgaWYgKCFkb2N1bWVudCkKLSAgICAgICAgZXJyb3JTdHJpbmcgPSBBU0NJSUxpdGVy
YWwoIk5vIGRvY3VtZW50IGZvciBnaXZlbiBmcmFtZSBmb3VuZCIpOworICAgICAgICByZXR1cm4g
bWFrZVVuZXhwZWN0ZWQoQVNDSUlMaXRlcmFsKCJObyBkb2N1bWVudCBmb3IgZ2l2ZW4gZnJhbWUg
Zm91bmQiKSk7CisgICAgCiAgICAgcmV0dXJuIGRvY3VtZW50OwogfQogCi1zdGF0aWMgSURCRmFj
dG9yeSogYXNzZXJ0SURCRmFjdG9yeShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIERvY3VtZW50
KiBkb2N1bWVudCkKK3N0YXRpYyBFcnJvclN0cmluZ09yPElEQkZhY3RvcnkqPiBJREJGYWN0b3J5
RnJvbURvY3VtZW50KERvY3VtZW50KiBkb2N1bWVudCkKIHsKICAgICBET01XaW5kb3cqIGRvbVdp
bmRvdyA9IGRvY3VtZW50LT5kb21XaW5kb3coKTsKLSAgICBpZiAoIWRvbVdpbmRvdykgewotICAg
ICAgICBlcnJvclN0cmluZyA9IEFTQ0lJTGl0ZXJhbCgiTm8gSW5kZXhlZERCIGZhY3RvcnkgZm9y
IGdpdmVuIGZyYW1lIGZvdW5kIik7Ci0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIH0KKyAg
ICBpZiAoIWRvbVdpbmRvdykKKyAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKEFTQ0lJTGl0
ZXJhbCgiTm8gSW5kZXhlZERCIGZhY3RvcnkgZm9yIGdpdmVuIGZyYW1lIGZvdW5kIikpOwogCiAg
ICAgSURCRmFjdG9yeSogaWRiRmFjdG9yeSA9IERPTVdpbmRvd0luZGV4ZWREYXRhYmFzZTo6aW5k
ZXhlZERCKCpkb21XaW5kb3cpOwogICAgIGlmICghaWRiRmFjdG9yeSkKLSAgICAgICAgZXJyb3JT
dHJpbmcgPSBBU0NJSUxpdGVyYWwoIk5vIEluZGV4ZWREQiBmYWN0b3J5IGZvciBnaXZlbiBmcmFt
ZSBmb3VuZCIpOwotCisgICAgICAgIG1ha2VVbmV4cGVjdGVkKEFTQ0lJTGl0ZXJhbCgiTm8gSW5k
ZXhlZERCIGZhY3RvcnkgZm9yIGdpdmVuIGZyYW1lIGZvdW5kIikpOworICAgIAogICAgIHJldHVy
biBpZGJGYWN0b3J5OwogfQogCi12b2lkIEluc3BlY3RvckluZGV4ZWREQkFnZW50OjpyZXF1ZXN0
RGF0YWJhc2VOYW1lcyhFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgc2Vj
dXJpdHlPcmlnaW4sIFJlZjxSZXF1ZXN0RGF0YWJhc2VOYW1lc0NhbGxiYWNrPiYmIHJlcXVlc3RD
YWxsYmFjaykKK3N0YXRpYyBib29sIGdldERvY3VtZW50QW5kSURCRmFjdG9yeUZyb21GcmFtZU9y
U2VuZEZhaWx1cmUoRnJhbWUqIGZyYW1lLCBEb2N1bWVudComIG91dF9kb2N1bWVudCwgSURCRmFj
dG9yeSomIG91dF9pZGJGYWN0b3J5LCBCYWNrZW5kRGlzcGF0Y2hlcjo6Q2FsbGJhY2tCYXNlJiBj
YWxsYmFjaykKK3sKKyAgICBFcnJvclN0cmluZ09yPERvY3VtZW50Kj4gZG9jdW1lbnQgPSBkb2N1
bWVudEZyb21GcmFtZShmcmFtZSk7CisgICAgaWYgKCFkb2N1bWVudC5oYXNfdmFsdWUoKSkgewor
ICAgICAgICBjYWxsYmFjay5zZW5kRmFpbHVyZShkb2N1bWVudC5lcnJvcigpKTsKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIEVycm9yU3RyaW5nT3I8SURCRmFjdG9yeSo+IGlk
YkZhY3RvcnkgPSBJREJGYWN0b3J5RnJvbURvY3VtZW50KGRvY3VtZW50LnZhbHVlKCkpOworICAg
IGlmICghaWRiRmFjdG9yeS5oYXNfdmFsdWUoKSkgeworICAgICAgICBjYWxsYmFjay5zZW5kRmFp
bHVyZShpZGJGYWN0b3J5LmVycm9yKCkpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQor
ICAgIAorICAgIG91dF9kb2N1bWVudCA9IGRvY3VtZW50LnZhbHVlKCk7CisgICAgb3V0X2lkYkZh
Y3RvcnkgPSBpZGJGYWN0b3J5LnZhbHVlKCk7CisgICAgcmV0dXJuIHRydWU7Cit9CisgICAgCit2
b2lkIEluc3BlY3RvckluZGV4ZWREQkFnZW50OjpyZXF1ZXN0RGF0YWJhc2VOYW1lcyhjb25zdCBT
dHJpbmcmIHNlY3VyaXR5T3JpZ2luLCBSZWY8UmVxdWVzdERhdGFiYXNlTmFtZXNDYWxsYmFjaz4m
JiBjYWxsYmFjaykKIHsKICAgICBGcmFtZSogZnJhbWUgPSBtX3BhZ2VBZ2VudC0+ZmluZEZyYW1l
V2l0aFNlY3VyaXR5T3JpZ2luKHNlY3VyaXR5T3JpZ2luKTsKLSAgICBEb2N1bWVudCogZG9jdW1l
bnQgPSBhc3NlcnREb2N1bWVudChlcnJvclN0cmluZywgZnJhbWUpOwotICAgIGlmICghZG9jdW1l
bnQpCisgICAgRG9jdW1lbnQqIGRvY3VtZW50OworICAgIElEQkZhY3RvcnkqIGlkYkZhY3Rvcnk7
CisgICAgaWYgKCFnZXREb2N1bWVudEFuZElEQkZhY3RvcnlGcm9tRnJhbWVPclNlbmRGYWlsdXJl
KGZyYW1lLCBkb2N1bWVudCwgaWRiRmFjdG9yeSwgY2FsbGJhY2spKQogICAgICAgICByZXR1cm47
CiAKICAgICBhdXRvJiBvcGVuaW5nT3JpZ2luID0gZG9jdW1lbnQtPnNlY3VyaXR5T3JpZ2luKCk7
Ci0KICAgICBhdXRvJiB0b3BPcmlnaW4gPSBkb2N1bWVudC0+dG9wT3JpZ2luKCk7Ci0KLSAgICBJ
REJGYWN0b3J5KiBpZGJGYWN0b3J5ID0gYXNzZXJ0SURCRmFjdG9yeShlcnJvclN0cmluZywgZG9j
dW1lbnQpOwotICAgIGlmICghaWRiRmFjdG9yeSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWRi
RmFjdG9yeS0+Z2V0QWxsRGF0YWJhc2VOYW1lcyh0b3BPcmlnaW4sIG9wZW5pbmdPcmlnaW4sIFtj
YWxsYmFjayA9IFdURk1vdmUocmVxdWVzdENhbGxiYWNrKV0oYXV0byYgZGF0YWJhc2VOYW1lcykg
eworICAgIGlkYkZhY3RvcnktPmdldEFsbERhdGFiYXNlTmFtZXModG9wT3JpZ2luLCBvcGVuaW5n
T3JpZ2luLCBbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oYXV0byYgZGF0YWJhc2VOYW1l
cykgewogICAgICAgICBpZiAoIWNhbGxiYWNrLT5pc0FjdGl2ZSgpKQogICAgICAgICAgICAgcmV0
dXJuOwogCkBAIC01ODgsNDEgKzYwNSwzNCBAQCB2b2lkIEluc3BlY3RvckluZGV4ZWREQkFnZW50
OjpyZXF1ZXN0RGF0YWJhc2VOYW1lcyhFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbgogICAg
IH0pOwogfQogCi12b2lkIEluc3BlY3RvckluZGV4ZWREQkFnZW50OjpyZXF1ZXN0RGF0YWJhc2Uo
RXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIHNlY3VyaXR5T3JpZ2luLCBj
b25zdCBTdHJpbmcmIGRhdGFiYXNlTmFtZSwgUmVmPFJlcXVlc3REYXRhYmFzZUNhbGxiYWNrPiYm
IHJlcXVlc3RDYWxsYmFjaykKK3ZvaWQgSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQ6OnJlcXVlc3RE
YXRhYmFzZShjb25zdCBTdHJpbmcmIHNlY3VyaXR5T3JpZ2luLCBjb25zdCBTdHJpbmcmIGRhdGFi
YXNlTmFtZSwgUmVmPFJlcXVlc3REYXRhYmFzZUNhbGxiYWNrPiYmIGNhbGxiYWNrKQogewogICAg
IEZyYW1lKiBmcmFtZSA9IG1fcGFnZUFnZW50LT5maW5kRnJhbWVXaXRoU2VjdXJpdHlPcmlnaW4o
c2VjdXJpdHlPcmlnaW4pOwotICAgIERvY3VtZW50KiBkb2N1bWVudCA9IGFzc2VydERvY3VtZW50
KGVycm9yU3RyaW5nLCBmcmFtZSk7Ci0gICAgaWYgKCFkb2N1bWVudCkKKyAgICBEb2N1bWVudCog
ZG9jdW1lbnQ7CisgICAgSURCRmFjdG9yeSogaWRiRmFjdG9yeTsKKyAgICBpZiAoIWdldERvY3Vt
ZW50QW5kSURCRmFjdG9yeUZyb21GcmFtZU9yU2VuZEZhaWx1cmUoZnJhbWUsIGRvY3VtZW50LCBp
ZGJGYWN0b3J5LCBjYWxsYmFjaykpCiAgICAgICAgIHJldHVybjsKIAotICAgIElEQkZhY3Rvcnkq
IGlkYkZhY3RvcnkgPSBhc3NlcnRJREJGYWN0b3J5KGVycm9yU3RyaW5nLCBkb2N1bWVudCk7Ci0g
ICAgaWYgKCFpZGJGYWN0b3J5KQotICAgICAgICByZXR1cm47Ci0KLSAgICBSZWY8RGF0YWJhc2VM
b2FkZXI+IGRhdGFiYXNlTG9hZGVyID0gRGF0YWJhc2VMb2FkZXI6OmNyZWF0ZShkb2N1bWVudCwg
V1RGTW92ZShyZXF1ZXN0Q2FsbGJhY2spKTsKKyAgICBSZWY8RGF0YWJhc2VMb2FkZXI+IGRhdGFi
YXNlTG9hZGVyID0gRGF0YWJhc2VMb2FkZXI6OmNyZWF0ZShkb2N1bWVudCwgV1RGTW92ZShjYWxs
YmFjaykpOwogICAgIGRhdGFiYXNlTG9hZGVyLT5zdGFydChpZGJGYWN0b3J5LCAmZG9jdW1lbnQt
PnNlY3VyaXR5T3JpZ2luKCksIGRhdGFiYXNlTmFtZSk7CiB9CiAKLXZvaWQgSW5zcGVjdG9ySW5k
ZXhlZERCQWdlbnQ6OnJlcXVlc3REYXRhKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3Qg
U3RyaW5nJiBzZWN1cml0eU9yaWdpbiwgY29uc3QgU3RyaW5nJiBkYXRhYmFzZU5hbWUsIGNvbnN0
IFN0cmluZyYgb2JqZWN0U3RvcmVOYW1lLCBjb25zdCBTdHJpbmcmIGluZGV4TmFtZSwgaW50IHNr
aXBDb3VudCwgaW50IHBhZ2VTaXplLCBjb25zdCBKU09OOjpPYmplY3QqIGtleVJhbmdlLCBSZWY8
UmVxdWVzdERhdGFDYWxsYmFjaz4mJiByZXF1ZXN0Q2FsbGJhY2spCit2b2lkIEluc3BlY3Rvcklu
ZGV4ZWREQkFnZW50OjpyZXF1ZXN0RGF0YShjb25zdCBTdHJpbmcmIHNlY3VyaXR5T3JpZ2luLCBj
b25zdCBTdHJpbmcmIGRhdGFiYXNlTmFtZSwgY29uc3QgU3RyaW5nJiBvYmplY3RTdG9yZU5hbWUs
IGNvbnN0IFN0cmluZyYgaW5kZXhOYW1lLCBpbnQgc2tpcENvdW50LCBpbnQgcGFnZVNpemUsIGNv
bnN0IEpTT046Ok9iamVjdCoga2V5UmFuZ2UsIFJlZjxSZXF1ZXN0RGF0YUNhbGxiYWNrPiYmIGNh
bGxiYWNrKQogewogICAgIEZyYW1lKiBmcmFtZSA9IG1fcGFnZUFnZW50LT5maW5kRnJhbWVXaXRo
U2VjdXJpdHlPcmlnaW4oc2VjdXJpdHlPcmlnaW4pOwotICAgIERvY3VtZW50KiBkb2N1bWVudCA9
IGFzc2VydERvY3VtZW50KGVycm9yU3RyaW5nLCBmcmFtZSk7Ci0gICAgaWYgKCFkb2N1bWVudCkK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgSURCRmFjdG9yeSogaWRiRmFjdG9yeSA9IGFzc2VydElE
QkZhY3RvcnkoZXJyb3JTdHJpbmcsIGRvY3VtZW50KTsKLSAgICBpZiAoIWlkYkZhY3RvcnkpCisg
ICAgRG9jdW1lbnQqIGRvY3VtZW50OworICAgIElEQkZhY3RvcnkqIGlkYkZhY3Rvcnk7CisgICAg
aWYgKCFnZXREb2N1bWVudEFuZElEQkZhY3RvcnlGcm9tRnJhbWVPclNlbmRGYWlsdXJlKGZyYW1l
LCBkb2N1bWVudCwgaWRiRmFjdG9yeSwgY2FsbGJhY2spKQogICAgICAgICByZXR1cm47CiAKICAg
ICBJbmplY3RlZFNjcmlwdCBpbmplY3RlZFNjcmlwdCA9IG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2Vy
LmluamVjdGVkU2NyaXB0Rm9yKG1haW5Xb3JsZEV4ZWNTdGF0ZShmcmFtZSkpOwotCiAgICAgUmVm
UHRyPElEQktleVJhbmdlPiBpZGJLZXlSYW5nZSA9IGtleVJhbmdlID8gaWRiS2V5UmFuZ2VGcm9t
S2V5UmFuZ2Uoa2V5UmFuZ2UpIDogbnVsbHB0cjsKICAgICBpZiAoa2V5UmFuZ2UgJiYgIWlkYktl
eVJhbmdlKSB7Ci0gICAgICAgIGVycm9yU3RyaW5nID0gQVNDSUlMaXRlcmFsKCJDYW4gbm90IHBh
cnNlIGtleSByYW5nZS4iKTsKKyAgICAgICAgY2FsbGJhY2stPnNlbmRGYWlsdXJlKEFTQ0lJTGl0
ZXJhbCgiQ2FuIG5vdCBwYXJzZSBrZXkgcmFuZ2UuIikpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCi0gICAgUmVmPERhdGFMb2FkZXI+IGRhdGFMb2FkZXIgPSBEYXRhTG9hZGVyOjpjcmVhdGUo
ZG9jdW1lbnQsIFdURk1vdmUocmVxdWVzdENhbGxiYWNrKSwgaW5qZWN0ZWRTY3JpcHQsIG9iamVj
dFN0b3JlTmFtZSwgaW5kZXhOYW1lLCBXVEZNb3ZlKGlkYktleVJhbmdlKSwgc2tpcENvdW50LCBw
YWdlU2l6ZSk7CisgICAgUmVmPERhdGFMb2FkZXI+IGRhdGFMb2FkZXIgPSBEYXRhTG9hZGVyOjpj
cmVhdGUoZG9jdW1lbnQsIFdURk1vdmUoY2FsbGJhY2spLCBpbmplY3RlZFNjcmlwdCwgb2JqZWN0
U3RvcmVOYW1lLCBpbmRleE5hbWUsIFdURk1vdmUoaWRiS2V5UmFuZ2UpLCBza2lwQ291bnQsIHBh
Z2VTaXplKTsKICAgICBkYXRhTG9hZGVyLT5zdGFydChpZGJGYWN0b3J5LCAmZG9jdW1lbnQtPnNl
Y3VyaXR5T3JpZ2luKCksIGRhdGFiYXNlTmFtZSk7CiB9CiAKQEAgLTcxOCwxNyArNzI4LDE1IEBA
IHByaXZhdGU6CiAKIH0gLy8gYW5vbnltb3VzIG5hbWVzcGFjZQogCi12b2lkIEluc3BlY3Rvcklu
ZGV4ZWREQkFnZW50OjpjbGVhck9iamVjdFN0b3JlKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywg
Y29uc3QgU3RyaW5nJiBzZWN1cml0eU9yaWdpbiwgY29uc3QgU3RyaW5nJiBkYXRhYmFzZU5hbWUs
IGNvbnN0IFN0cmluZyYgb2JqZWN0U3RvcmVOYW1lLCBSZWY8Q2xlYXJPYmplY3RTdG9yZUNhbGxi
YWNrPiYmIHJlcXVlc3RDYWxsYmFjaykKK3ZvaWQgSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQ6OmNs
ZWFyT2JqZWN0U3RvcmUoY29uc3QgU3RyaW5nJiBzZWN1cml0eU9yaWdpbiwgY29uc3QgU3RyaW5n
JiBkYXRhYmFzZU5hbWUsIGNvbnN0IFN0cmluZyYgb2JqZWN0U3RvcmVOYW1lLCBSZWY8Q2xlYXJP
YmplY3RTdG9yZUNhbGxiYWNrPiYmIGNhbGxiYWNrKQogewogICAgIEZyYW1lKiBmcmFtZSA9IG1f
cGFnZUFnZW50LT5maW5kRnJhbWVXaXRoU2VjdXJpdHlPcmlnaW4oc2VjdXJpdHlPcmlnaW4pOwot
ICAgIERvY3VtZW50KiBkb2N1bWVudCA9IGFzc2VydERvY3VtZW50KGVycm9yU3RyaW5nLCBmcmFt
ZSk7Ci0gICAgaWYgKCFkb2N1bWVudCkKLSAgICAgICAgcmV0dXJuOwotICAgIElEQkZhY3Rvcnkq
IGlkYkZhY3RvcnkgPSBhc3NlcnRJREJGYWN0b3J5KGVycm9yU3RyaW5nLCBkb2N1bWVudCk7Ci0g
ICAgaWYgKCFpZGJGYWN0b3J5KQorICAgIERvY3VtZW50KiBkb2N1bWVudDsKKyAgICBJREJGYWN0
b3J5KiBpZGJGYWN0b3J5OworICAgIGlmICghZ2V0RG9jdW1lbnRBbmRJREJGYWN0b3J5RnJvbUZy
YW1lT3JTZW5kRmFpbHVyZShmcmFtZSwgZG9jdW1lbnQsIGlkYkZhY3RvcnksIGNhbGxiYWNrKSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgUmVmPENsZWFyT2JqZWN0U3RvcmU+IGNsZWFyT2JqZWN0
U3RvcmUgPSBDbGVhck9iamVjdFN0b3JlOjpjcmVhdGUoZG9jdW1lbnQsIG9iamVjdFN0b3JlTmFt
ZSwgV1RGTW92ZShyZXF1ZXN0Q2FsbGJhY2spKTsKKyAgICBSZWY8Q2xlYXJPYmplY3RTdG9yZT4g
Y2xlYXJPYmplY3RTdG9yZSA9IENsZWFyT2JqZWN0U3RvcmU6OmNyZWF0ZShkb2N1bWVudCwgb2Jq
ZWN0U3RvcmVOYW1lLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CiAgICAgY2xlYXJPYmplY3RTdG9yZS0+
c3RhcnQoaWRiRmFjdG9yeSwgJmRvY3VtZW50LT5zZWN1cml0eU9yaWdpbigpLCBkYXRhYmFzZU5h
bWUpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0lu
c3BlY3RvckluZGV4ZWREQkFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRz
L0luc3BlY3RvckluZGV4ZWREQkFnZW50LmgKaW5kZXggMDhiMWFmZjM5NTMxM2Q3MzVmODk5Y2Ux
MzdlMDZlZWE5NjRmMjAxNC4uNGY2ZjJlOWQ1MWIyMTQxZjUyZTI4MzdmODhiMmY4ZTk1MDgzMWUz
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JJ
bmRleGVkREJBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9ySW5kZXhlZERCQWdlbnQuaApAQCAtNjAsMTAgKzYwLDEwIEBAIHB1YmxpYzoKICAgICAv
LyBDYWxsZWQgZnJvbSB0aGUgZnJvbnQtZW5kLgogICAgIHZvaWQgZW5hYmxlKEVycm9yU3RyaW5n
Jikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaXNhYmxlKEVycm9yU3RyaW5nJikgb3ZlcnJpZGU7Ci0g
ICAgdm9pZCByZXF1ZXN0RGF0YWJhc2VOYW1lcyhFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYg
c2VjdXJpdHlPcmlnaW4sIFJlZjxSZXF1ZXN0RGF0YWJhc2VOYW1lc0NhbGxiYWNrPiYmKSBvdmVy
cmlkZTsKLSAgICB2b2lkIHJlcXVlc3REYXRhYmFzZShFcnJvclN0cmluZyYsIGNvbnN0IFN0cmlu
ZyYgc2VjdXJpdHlPcmlnaW4sIGNvbnN0IFN0cmluZyYgZGF0YWJhc2VOYW1lLCBSZWY8UmVxdWVz
dERhdGFiYXNlQ2FsbGJhY2s+JiYpIG92ZXJyaWRlOwotICAgIHZvaWQgcmVxdWVzdERhdGEoRXJy
b3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHNlY3VyaXR5T3JpZ2luLCBjb25zdCBTdHJpbmcmIGRh
dGFiYXNlTmFtZSwgY29uc3QgU3RyaW5nJiBvYmplY3RTdG9yZU5hbWUsIGNvbnN0IFN0cmluZyYg
aW5kZXhOYW1lLCBpbnQgc2tpcENvdW50LCBpbnQgcGFnZVNpemUsIGNvbnN0IEpTT046Ok9iamVj
dCoga2V5UmFuZ2UsIFJlZjxSZXF1ZXN0RGF0YUNhbGxiYWNrPiYmKSBvdmVycmlkZTsKLSAgICB2
b2lkIGNsZWFyT2JqZWN0U3RvcmUoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGluX3NlY3Vy
aXR5T3JpZ2luLCBjb25zdCBTdHJpbmcmIGluX2RhdGFiYXNlTmFtZSwgY29uc3QgU3RyaW5nJiBp
bl9vYmplY3RTdG9yZU5hbWUsIFJlZjxDbGVhck9iamVjdFN0b3JlQ2FsbGJhY2s+JiYpIG92ZXJy
aWRlOworICAgIHZvaWQgcmVxdWVzdERhdGFiYXNlTmFtZXMoY29uc3QgU3RyaW5nJiBzZWN1cml0
eU9yaWdpbiwgUmVmPFJlcXVlc3REYXRhYmFzZU5hbWVzQ2FsbGJhY2s+JiYpIG92ZXJyaWRlOwor
ICAgIHZvaWQgcmVxdWVzdERhdGFiYXNlKGNvbnN0IFN0cmluZyYgc2VjdXJpdHlPcmlnaW4sIGNv
bnN0IFN0cmluZyYgZGF0YWJhc2VOYW1lLCBSZWY8UmVxdWVzdERhdGFiYXNlQ2FsbGJhY2s+JiYp
IG92ZXJyaWRlOworICAgIHZvaWQgcmVxdWVzdERhdGEoY29uc3QgU3RyaW5nJiBzZWN1cml0eU9y
aWdpbiwgY29uc3QgU3RyaW5nJiBkYXRhYmFzZU5hbWUsIGNvbnN0IFN0cmluZyYgb2JqZWN0U3Rv
cmVOYW1lLCBjb25zdCBTdHJpbmcmIGluZGV4TmFtZSwgaW50IHNraXBDb3VudCwgaW50IHBhZ2VT
aXplLCBjb25zdCBKU09OOjpPYmplY3QqIGtleVJhbmdlLCBSZWY8UmVxdWVzdERhdGFDYWxsYmFj
az4mJikgb3ZlcnJpZGU7CisgICAgdm9pZCBjbGVhck9iamVjdFN0b3JlKGNvbnN0IFN0cmluZyYg
aW5fc2VjdXJpdHlPcmlnaW4sIGNvbnN0IFN0cmluZyYgaW5fZGF0YWJhc2VOYW1lLCBjb25zdCBT
dHJpbmcmIGluX29iamVjdFN0b3JlTmFtZSwgUmVmPENsZWFyT2JqZWN0U3RvcmVDYWxsYmFjaz4m
Jikgb3ZlcnJpZGU7CiAKIHByaXZhdGU6CiAgICAgSW5zcGVjdG9yOjpJbmplY3RlZFNjcmlwdE1h
bmFnZXImIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwCmluZGV4IDRk
MDk1OGEzZTUzMDk2MjBiYjkzNjk5NTkxMGQ5M2VkNDVlZGMxZWUuLjZiOTNkYWJhZmIwZmRhNTEw
YzE0NTdlZDlhNzI3MTEzZTUzYTVhMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAKQEAgLTc4NywxMSAr
Nzg3LDE0IEBAIHZvaWQgSW5zcGVjdG9yTmV0d29ya0FnZW50OjpzZXRSZXNvdXJjZUNhY2hpbmdE
aXNhYmxlZChFcnJvclN0cmluZyYsIGJvb2wgZGlzYWJsCiAgICAgc2V0UmVzb3VyY2VDYWNoaW5n
RGlzYWJsZWQoZGlzYWJsZWQpOwogfQogCi12b2lkIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6bG9h
ZFJlc291cmNlKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBmcmFtZUlk
LCBjb25zdCBTdHJpbmcmIHVybFN0cmluZywgUmVmPExvYWRSZXNvdXJjZUNhbGxiYWNrPiYmIGNh
bGxiYWNrKQordm9pZCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmxvYWRSZXNvdXJjZShjb25zdCBT
dHJpbmcmIGZyYW1lSWQsIGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBSZWY8TG9hZFJlc291cmNl
Q2FsbGJhY2s+JiYgY2FsbGJhY2spCiB7Ci0gICAgYXV0byogY29udGV4dCA9IHNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoZXJyb3JTdHJpbmcsIGZyYW1lSWQpOwotICAgIGlmICghY29udGV4dCkKKyAg
ICBFcnJvclN0cmluZyBlcnJvcjsKKyAgICBhdXRvKiBjb250ZXh0ID0gc2NyaXB0RXhlY3V0aW9u
Q29udGV4dChlcnJvciwgZnJhbWVJZCk7CisgICAgaWYgKCFjb250ZXh0KSB7CisgICAgICAgIGNh
bGxiYWNrLT5zZW5kRmFpbHVyZShlcnJvcik7CiAgICAgICAgIHJldHVybjsKKyAgICB9CiAKICAg
ICBVUkwgdXJsID0gY29udGV4dC0+Y29tcGxldGVVUkwodXJsU3RyaW5nKTsKICAgICBSZXNvdXJj
ZVJlcXVlc3QgcmVxdWVzdCh1cmwpOwpAQCAtODA4LDggKzgxMSwxMCBAQCB2b2lkIEluc3BlY3Rv
ck5ldHdvcmtBZ2VudDo6bG9hZFJlc291cmNlKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29u
c3QgU3RyaW5nJgogICAgIC8vIEluc3BlY3RvclRocmVhZGFibGVMb2FkZXJDbGllbnQgZGVsZXRl
cyBpdHNlbGYgd2hlbiB0aGUgbG9hZCBjb21wbGV0ZXMgb3IgZmFpbHMuCiAgICAgSW5zcGVjdG9y
VGhyZWFkYWJsZUxvYWRlckNsaWVudCogaW5zcGVjdG9yVGhyZWFkYWJsZUxvYWRlckNsaWVudCA9
IG5ldyBJbnNwZWN0b3JUaHJlYWRhYmxlTG9hZGVyQ2xpZW50KGNhbGxiYWNrLmNvcHlSZWYoKSk7
CiAgICAgYXV0byBsb2FkZXIgPSBUaHJlYWRhYmxlTG9hZGVyOjpjcmVhdGUoKmNvbnRleHQsICpp
bnNwZWN0b3JUaHJlYWRhYmxlTG9hZGVyQ2xpZW50LCBXVEZNb3ZlKHJlcXVlc3QpLCBvcHRpb25z
KTsKLSAgICBpZiAoIWxvYWRlcikKKyAgICBpZiAoIWxvYWRlcikgeworICAgICAgICBjYWxsYmFj
ay0+c2VuZEZhaWx1cmUoQVNDSUlMaXRlcmFsKCJDb3VsZCBub3QgbG9hZCByZXF1ZXN0ZWQgcmVz
b3VyY2UuIikpOwogICAgICAgICByZXR1cm47CisgICAgfQogCiAgICAgLy8gSWYgdGhlIGxvYWQg
YWxyZWFkeSBjb21wbGV0ZWQsIGluc3BlY3RvclRocmVhZGFibGVMb2FkZXJDbGllbnQgd2lsbCBo
YXZlIGJlZW4gZGVsZXRlZCBhbmQgd2Ugd2lsbCBoYXZlIGFscmVhZHkgY2FsbGVkIHRoZSBjYWxs
YmFjay4KICAgICBpZiAoIWNhbGxiYWNrLT5pc0FjdGl2ZSgpKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmgKaW5kZXgg
NDExZjE3NDNmMzdkMTJlN2Q1MzI3ZDhiOTNiNTk2MTQ3MWM3NWY3NC4uNjRkMGUwNDU4MDI1OTVm
ZjMwNWM5YTM2YzExMjJkMTY2NDM3OGM5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5oCkBAIC0xMTUsNyArMTE1
LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0RXh0cmFIVFRQSGVhZGVycyhFcnJvclN0cmluZyYs
IGNvbnN0IEpTT046Ok9iamVjdCYgaGVhZGVycykgZmluYWw7CiAgICAgdm9pZCBnZXRSZXNwb25z
ZUJvZHkoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgU3RyaW5nKiBjb250
ZW50LCBib29sKiBiYXNlNjRFbmNvZGVkKSBmaW5hbDsKICAgICB2b2lkIHNldFJlc291cmNlQ2Fj
aGluZ0Rpc2FibGVkKEVycm9yU3RyaW5nJiwgYm9vbCBkaXNhYmxlZCkgZmluYWw7Ci0gICAgdm9p
ZCBsb2FkUmVzb3VyY2UoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGZyYW1lSWQsIGNvbnN0
IFN0cmluZyYgdXJsLCBSZWY8TG9hZFJlc291cmNlQ2FsbGJhY2s+JiYpIGZpbmFsOworICAgIHZv
aWQgbG9hZFJlc291cmNlKGNvbnN0IFN0cmluZyYgZnJhbWVJZCwgY29uc3QgU3RyaW5nJiB1cmws
IFJlZjxMb2FkUmVzb3VyY2VDYWxsYmFjaz4mJikgZmluYWw7CiAgICAgdm9pZCByZXNvbHZlV2Vi
U29ja2V0KEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIGNvbnN0IFN0cmlu
Zyogb2JqZWN0R3JvdXAsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpSZW1v
dGVPYmplY3Q+JikgZmluYWw7CiAKICAgICB2aXJ0dWFsIFN0cmluZyBsb2FkZXJJZGVudGlmaWVy
KERvY3VtZW50TG9hZGVyKikgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcAppbmRleCAyOTY4NWJm
Y2RkODhmN2VhNzk0NDE3YjU0ZmNkNWNkYjFmY2I3ZmNiLi5kMmE5MzllMTUzYjZkNDhmMjQyYWE4
ODYwMWM5NjQ2NjVkYzI5NTdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
dXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcApAQCAtMjQ1LDcgKzI0
NSw3IEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OmdldE5leHRDb250ZXh0KFJlZjxXZWJB
dXRvbWF0aW9uU2Vzc2lvbj4mJiBwcm90ZWN0ZWRUCiAgICAgfSk7CiB9CiAgICAgCi12b2lkIFdl
YkF1dG9tYXRpb25TZXNzaW9uOjpnZXRCcm93c2luZ0NvbnRleHRzKEluc3BlY3Rvcjo6RXJyb3JT
dHJpbmcmIGVycm9yU3RyaW5nLCBSZWY8R2V0QnJvd3NpbmdDb250ZXh0c0NhbGxiYWNrPiYmIGNh
bGxiYWNrKQordm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6Z2V0QnJvd3NpbmdDb250ZXh0cyhS
ZWY8R2V0QnJvd3NpbmdDb250ZXh0c0NhbGxiYWNrPiYmIGNhbGxiYWNrKQogewogICAgIFZlY3Rv
cjxSZWY8V2ViUGFnZVByb3h5Pj4gcGFnZXM7CiAgICAgZm9yIChhdXRvJiBwcm9jZXNzIDogbV9w
cm9jZXNzUG9vbC0+cHJvY2Vzc2VzKCkpIHsKQEAgLTI2MCwxMSArMjYwLDExIEBAIHZvaWQgV2Vi
QXV0b21hdGlvblNlc3Npb246OmdldEJyb3dzaW5nQ29udGV4dHMoSW5zcGVjdG9yOjpFcnJvclN0
cmluZyYgZXJyb3JTdHJpCiAgICAgZ2V0TmV4dENvbnRleHQobWFrZVJlZigqdGhpcyksIFdURk1v
dmUocGFnZXMpLCBKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246
OkJyb3dzaW5nQ29udGV4dD46OmNyZWF0ZSgpLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CiB9CiAKLXZv
aWQgV2ViQXV0b21hdGlvblNlc3Npb246OmdldEJyb3dzaW5nQ29udGV4dChJbnNwZWN0b3I6OkVy
cm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBoYW5kbGUsIFJlZjxHZXRCcm93
c2luZ0NvbnRleHRDYWxsYmFjaz4mJiBjYWxsYmFjaykKK3ZvaWQgV2ViQXV0b21hdGlvblNlc3Np
b246OmdldEJyb3dzaW5nQ29udGV4dChjb25zdCBTdHJpbmcmIGhhbmRsZSwgUmVmPEdldEJyb3dz
aW5nQ29udGV4dENhbGxiYWNrPiYmIGNhbGxiYWNrKQogewogICAgIFdlYlBhZ2VQcm94eSogcGFn
ZSA9IHdlYlBhZ2VQcm94eUZvckhhbmRsZShoYW5kbGUpOwogICAgIGlmICghcGFnZSkKLSAgICAg
ICAgRkFJTF9XSVRIX1BSRURFRklORURfRVJST1IoV2luZG93Tm90Rm91bmQpOworICAgICAgICBB
U1lOQ19GQUlMX1dJVEhfUFJFREVGSU5FRF9FUlJPUihXaW5kb3dOb3RGb3VuZCk7CiAKICAgICBw
YWdlLT5nZXRXaW5kb3dGcmFtZVdpdGhDYWxsYmFjayhbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYo
KnRoaXMpLCBwYWdlID0gbWFrZVJlZigqcGFnZSksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFj
ayldKFdlYkNvcmU6OkZsb2F0UmVjdCB3aW5kb3dGcmFtZSkgbXV0YWJsZSB7CiAgICAgICAgIGNh
bGxiYWNrLT5zZW5kU3VjY2Vzcyhwcm90ZWN0ZWRUaGlzLT5idWlsZEJyb3dzaW5nQ29udGV4dEZv
clBhZ2UocGFnZS5nZXQoKSwgd2luZG93RnJhbWUpKTsKQEAgLTI3NSwxMSArMjc1LDExIEBAIHZv
aWQgV2ViQXV0b21hdGlvblNlc3Npb246OmNyZWF0ZUJyb3dzaW5nQ29udGV4dChJbnNwZWN0b3I6
OkVycm9yU3RyaW5nJiBlcnJvclN0CiB7CiAgICAgQVNTRVJUKG1fY2xpZW50KTsKICAgICBpZiAo
IW1fY2xpZW50KQotICAgICAgICBGQUlMX1dJVEhfUFJFREVGSU5FRF9FUlJPUl9BTkRfREVUQUlM
UyhJbnRlcm5hbEVycm9yLCAiVGhlIHJlbW90ZSBzZXNzaW9uIGNvdWxkIG5vdCByZXF1ZXN0IGEg
bmV3IGJyb3dzaW5nIGNvbnRleHQuIik7CisgICAgICAgIFNZTkNfRkFJTF9XSVRIX1BSRURFRklO
RURfRVJST1JfQU5EX0RFVEFJTFMoSW50ZXJuYWxFcnJvciwgIlRoZSByZW1vdGUgc2Vzc2lvbiBj
b3VsZCBub3QgcmVxdWVzdCBhIG5ldyBicm93c2luZyBjb250ZXh0LiIpOwogCiAgICAgV2ViUGFn
ZVByb3h5KiBwYWdlID0gbV9jbGllbnQtPmRpZFJlcXVlc3ROZXdXaW5kb3coKnRoaXMpOwogICAg
IGlmICghcGFnZSkKLSAgICAgICAgRkFJTF9XSVRIX1BSRURFRklORURfRVJST1JfQU5EX0RFVEFJ
TFMoSW50ZXJuYWxFcnJvciwgIlRoZSByZW1vdGUgc2Vzc2lvbiBmYWlsZWQgdG8gY3JlYXRlIGEg
bmV3IGJyb3dzaW5nIGNvbnRleHQuIik7CisgICAgICAgIFNZTkNfRkFJTF9XSVRIX1BSRURFRklO
RURfRVJST1JfQU5EX0RFVEFJTFMoSW50ZXJuYWxFcnJvciwgIlRoZSByZW1vdGUgc2Vzc2lvbiBm
YWlsZWQgdG8gY3JlYXRlIGEgbmV3IGJyb3dzaW5nIGNvbnRleHQuIik7CiAKICAgICBtX2FjdGl2
ZUJyb3dzaW5nQ29udGV4dEhhbmRsZSA9ICpoYW5kbGUgPSBoYW5kbGVGb3JXZWJQYWdlUHJveHko
KnBhZ2UpOwogfQpAQCAtMjg4LDcgKzI4OCw3IEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246
OmNsb3NlQnJvd3NpbmdDb250ZXh0KEluc3BlY3Rvcjo6RXJyb3JTdHJpbmcmIGVycm9yU3RyCiB7
CiAgICAgV2ViUGFnZVByb3h5KiBwYWdlID0gd2ViUGFnZVByb3h5Rm9ySGFuZGxlKGhhbmRsZSk7
CiAgICAgaWYgKCFwYWdlKQotICAgICAgICBGQUlMX1dJVEhfUFJFREVGSU5FRF9FUlJPUihXaW5k
b3dOb3RGb3VuZCk7CisgICAgICAgIFNZTkNfRkFJTF9XSVRIX1BSRURFRklORURfRVJST1IoV2lu
ZG93Tm90Rm91bmQpOwogCiAgICAgaWYgKGhhbmRsZSA9PSBtX2FjdGl2ZUJyb3dzaW5nQ29udGV4
dEhhbmRsZSkKICAgICAgICAgbV9hY3RpdmVCcm93c2luZ0NvbnRleHRIYW5kbGUgPSBlbXB0eVN0
cmluZygpOwpAQCAtMzAwLDExICszMDAsMTEgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6
c3dpdGNoVG9Ccm93c2luZ0NvbnRleHQoSW5zcGVjdG9yOjpFcnJvclN0cmluZyYgZXJyb3IKIHsK
ICAgICBXZWJQYWdlUHJveHkqIHBhZ2UgPSB3ZWJQYWdlUHJveHlGb3JIYW5kbGUoYnJvd3NpbmdD
b250ZXh0SGFuZGxlKTsKICAgICBpZiAoIXBhZ2UpCi0gICAgICAgIEZBSUxfV0lUSF9QUkVERUZJ
TkVEX0VSUk9SKFdpbmRvd05vdEZvdW5kKTsKKyAgICAgICAgU1lOQ19GQUlMX1dJVEhfUFJFREVG
SU5FRF9FUlJPUihXaW5kb3dOb3RGb3VuZCk7CiAKICAgICBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90
PiBmcmFtZUlEID0gd2ViRnJhbWVJREZvckhhbmRsZShvcHRpb25hbEZyYW1lSGFuZGxlID8gKm9w
dGlvbmFsRnJhbWVIYW5kbGUgOiBlbXB0eVN0cmluZygpKTsKICAgICBpZiAoIWZyYW1lSUQpCi0g
ICAgICAgIEZBSUxfV0lUSF9QUkVERUZJTkVEX0VSUk9SKEZyYW1lTm90Rm91bmQpOworICAgICAg
ICBTWU5DX0ZBSUxfV0lUSF9QUkVERUZJTkVEX0VSUk9SKEZyYW1lTm90Rm91bmQpOwogCiAgICAg
Ly8gRklYTUU6IFdlIGRvbid0IG5lZWQgdG8gdHJhY2sgdGhpcyBpbiBXSzIuIFJlbW92ZSBpbiBh
IGZvbGxvdyB1cC4KICAgICBtX2FjdGl2ZUJyb3dzaW5nQ29udGV4dEhhbmRsZSA9IGJyb3dzaW5n
Q29udGV4dEhhbmRsZTsKQEAgLTMxMyw0NiArMzEzLDQ2IEBAIHZvaWQgV2ViQXV0b21hdGlvblNl
c3Npb246OnN3aXRjaFRvQnJvd3NpbmdDb250ZXh0KEluc3BlY3Rvcjo6RXJyb3JTdHJpbmcmIGVy
cm9yCiAgICAgcGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkF1dG9tYXRpb25TZXNz
aW9uUHJveHk6OkZvY3VzRnJhbWUocGFnZS0+cGFnZUlEKCksIGZyYW1lSUQudmFsdWUoKSksIDAp
OwogfQogCi12b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpzZXRXaW5kb3dGcmFtZU9mQnJvd3Np
bmdDb250ZXh0KEluc3BlY3Rvcjo6RXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJp
bmcmIGhhbmRsZSwgY29uc3QgSlNPTjo6T2JqZWN0KiBvcHRpb25hbE9yaWdpbk9iamVjdCwgY29u
c3QgSlNPTjo6T2JqZWN0KiBvcHRpb25hbFNpemVPYmplY3QsIFJlZjxTZXRXaW5kb3dGcmFtZU9m
QnJvd3NpbmdDb250ZXh0Q2FsbGJhY2s+JiYgY2FsbGJhY2spCit2b2lkIFdlYkF1dG9tYXRpb25T
ZXNzaW9uOjpzZXRXaW5kb3dGcmFtZU9mQnJvd3NpbmdDb250ZXh0KGNvbnN0IFN0cmluZyYgaGFu
ZGxlLCBjb25zdCBKU09OOjpPYmplY3QqIG9wdGlvbmFsT3JpZ2luT2JqZWN0LCBjb25zdCBKU09O
OjpPYmplY3QqIG9wdGlvbmFsU2l6ZU9iamVjdCwgUmVmPFNldFdpbmRvd0ZyYW1lT2ZCcm93c2lu
Z0NvbnRleHRDYWxsYmFjaz4mJiBjYWxsYmFjaykKIHsKICNpZiBQTEFURk9STShJT1MpCi0gICAg
RkFJTF9XSVRIX1BSRURFRklORURfRVJST1IoTm90SW1wbGVtZW50ZWQpOworICAgIEFTWU5DX0ZB
SUxfV0lUSF9QUkVERUZJTkVEX0VSUk9SKE5vdEltcGxlbWVudGVkKTsKICNlbHNlCiAgICAgc3Rk
OjpvcHRpb25hbDxmbG9hdD4geDsKICAgICBzdGQ6Om9wdGlvbmFsPGZsb2F0PiB5OwogICAgIGlm
IChvcHRpb25hbE9yaWdpbk9iamVjdCkgewogICAgICAgICBpZiAoISh4ID0gb3B0aW9uYWxPcmln
aW5PYmplY3QtPmdldE51bWJlcjxmbG9hdD4oV1RGOjpBU0NJSUxpdGVyYWwoIngiKSkpKQotICAg
ICAgICAgICAgRkFJTF9XSVRIX1BSRURFRklORURfRVJST1JfQU5EX0RFVEFJTFMoTWlzc2luZ1Bh
cmFtZXRlciwgIlRoZSAneCcgcGFyYW1ldGVyIHdhcyBub3QgZm91bmQgb3IgaW52YWxpZC4iKTsK
KyAgICAgICAgICAgIEFTWU5DX0ZBSUxfV0lUSF9QUkVERUZJTkVEX0VSUk9SX0FORF9ERVRBSUxT
KE1pc3NpbmdQYXJhbWV0ZXIsICJUaGUgJ3gnIHBhcmFtZXRlciB3YXMgbm90IGZvdW5kIG9yIGlu
dmFsaWQuIik7CiAKICAgICAgICAgaWYgKCEoeSA9IG9wdGlvbmFsT3JpZ2luT2JqZWN0LT5nZXRO
dW1iZXI8ZmxvYXQ+KFdURjo6QVNDSUlMaXRlcmFsKCJ5IikpKSkKLSAgICAgICAgICAgIEZBSUxf
V0lUSF9QUkVERUZJTkVEX0VSUk9SX0FORF9ERVRBSUxTKE1pc3NpbmdQYXJhbWV0ZXIsICJUaGUg
J3knIHBhcmFtZXRlciB3YXMgbm90IGZvdW5kIG9yIGludmFsaWQuIik7CisgICAgICAgICAgICBB
U1lOQ19GQUlMX1dJVEhfUFJFREVGSU5FRF9FUlJPUl9BTkRfREVUQUlMUyhNaXNzaW5nUGFyYW1l
dGVyLCAiVGhlICd5JyBwYXJhbWV0ZXIgd2FzIG5vdCBmb3VuZCBvciBpbnZhbGlkLiIpOwogCiAg
ICAgICAgIGlmICh4LnZhbHVlKCkgPCAwKQotICAgICAgICAgICAgRkFJTF9XSVRIX1BSRURFRklO
RURfRVJST1JfQU5EX0RFVEFJTFMoSW52YWxpZFBhcmFtZXRlciwgIlRoZSAneCcgcGFyYW1ldGVy
IGhhZCBhbiBpbnZhbGlkIHZhbHVlLiIpOworICAgICAgICAgICAgQVNZTkNfRkFJTF9XSVRIX1BS
RURFRklORURfRVJST1JfQU5EX0RFVEFJTFMoSW52YWxpZFBhcmFtZXRlciwgIlRoZSAneCcgcGFy
YW1ldGVyIGhhZCBhbiBpbnZhbGlkIHZhbHVlLiIpOwogCiAgICAgICAgIGlmICh5LnZhbHVlKCkg
PCAwKQotICAgICAgICAgICAgRkFJTF9XSVRIX1BSRURFRklORURfRVJST1JfQU5EX0RFVEFJTFMo
SW52YWxpZFBhcmFtZXRlciwgIlRoZSAneScgcGFyYW1ldGVyIGhhZCBhbiBpbnZhbGlkIHZhbHVl
LiIpOworICAgICAgICAgICAgQVNZTkNfRkFJTF9XSVRIX1BSRURFRklORURfRVJST1JfQU5EX0RF
VEFJTFMoSW52YWxpZFBhcmFtZXRlciwgIlRoZSAneScgcGFyYW1ldGVyIGhhZCBhbiBpbnZhbGlk
IHZhbHVlLiIpOwogICAgIH0KIAogICAgIHN0ZDo6b3B0aW9uYWw8ZmxvYXQ+IHdpZHRoOwogICAg
IHN0ZDo6b3B0aW9uYWw8ZmxvYXQ+IGhlaWdodDsKICAgICBpZiAob3B0aW9uYWxTaXplT2JqZWN0
KSB7CiAgICAgICAgIGlmICghKHdpZHRoID0gb3B0aW9uYWxTaXplT2JqZWN0LT5nZXROdW1iZXI8
ZmxvYXQ+KFdURjo6QVNDSUlMaXRlcmFsKCJ3aWR0aCIpKSkpCi0gICAgICAgICAgICBGQUlMX1dJ
VEhfUFJFREVGSU5FRF9FUlJPUl9BTkRfREVUQUlMUyhNaXNzaW5nUGFyYW1ldGVyLCAiVGhlICd3
aWR0aCcgcGFyYW1ldGVyIHdhcyBub3QgZm91bmQgb3IgaW52YWxpZC4iKTsKKyAgICAgICAgICAg
IEFTWU5DX0ZBSUxfV0lUSF9QUkVERUZJTkVEX0VSUk9SX0FORF9ERVRBSUxTKE1pc3NpbmdQYXJh
bWV0ZXIsICJUaGUgJ3dpZHRoJyBwYXJhbWV0ZXIgd2FzIG5vdCBmb3VuZCBvciBpbnZhbGlkLiIp
OwogCiAgICAgICAgIGlmICghKGhlaWdodCA9IG9wdGlvbmFsU2l6ZU9iamVjdC0+Z2V0TnVtYmVy
PGZsb2F0PihXVEY6OkFTQ0lJTGl0ZXJhbCgiaGVpZ2h0IikpKSkKLSAgICAgICAgICAgIEZBSUxf
V0lUSF9QUkVERUZJTkVEX0VSUk9SX0FORF9ERVRBSUxTKE1pc3NpbmdQYXJhbWV0ZXIsICJUaGUg
J2hlaWdodCcgcGFyYW1ldGVyIHdhcyBub3QgZm91bmQgb3IgaW52YWxpZC4iKTsKKyAgICAgICAg
ICAgIEFTWU5DX0ZBSUxfV0lUSF9QUkVERUZJTkVEX0VSUk9SX0FORF9ERVRBSUxTKE1pc3NpbmdQ
YXJhbWV0ZXIsICJUaGUgJ2hlaWdodCcgcGFyYW1ldGVyIHdhcyBub3QgZm91bmQgb3IgaW52YWxp
ZC4iKTsKIAogICAgICAgICBpZiAod2lkdGgudmFsdWUoKSA8IDApCi0gICAgICAgICAgICBGQUlM
X1dJVEhfUFJFREVGSU5FRF9FUlJPUl9BTkRfREVUQUlMUyhJbnZhbGlkUGFyYW1ldGVyLCAiVGhl
ICd3aWR0aCcgcGFyYW1ldGVyIGhhZCBhbiBpbnZhbGlkIHZhbHVlLiIpOworICAgICAgICAgICAg
QVNZTkNfRkFJTF9XSVRIX1BSRURFRklORURfRVJST1JfQU5EX0RFVEFJTFMoSW52YWxpZFBhcmFt
ZXRlciwgIlRoZSAnd2lkdGgnIHBhcmFtZXRlciBoYWQgYW4gaW52YWxpZCB2YWx1ZS4iKTsKIAog
ICAgICAgICBpZiAoaGVpZ2h0LnZhbHVlKCkgPCAwKQotICAgICAgICAgICAgRkFJTF9XSVRIX1BS
RURFRklORURfRVJST1JfQU5EX0RFVEFJTFMoSW52YWxpZFBhcmFtZXRlciwgIlRoZSAnaGVpZ2h0
JyBwYXJhbWV0ZXIgaGFkIGFuIGludmFsaWQgdmFsdWUuIik7CisgICAgICAgICAgICBBU1lOQ19G
QUlMX1dJVEhfUFJFREVGSU5FRF9FUlJPUl9BTkRfREVUQUlMUyhJbnZhbGlkUGFyYW1ldGVyLCAi
VGhlICdoZWlnaHQnIHBhcmFtZXRlciBoYWQgYW4gaW52YWxpZCB2YWx1ZS4iKTsKICAgICB9CiAK
ICAgICBXZWJQYWdlUHJveHkqIHBhZ2UgPSB3ZWJQYWdlUHJveHlGb3JIYW5kbGUoaGFuZGxlKTsK
ICAgICBpZiAoIXBhZ2UpCi0gICAgICAgIEZBSUxfV0lUSF9QUkVERUZJTkVEX0VSUk9SKFdpbmRv
d05vdEZvdW5kKTsKKyAgICAgICAgQVNZTkNfRkFJTF9XSVRIX1BSRURFRklORURfRVJST1IoV2lu
ZG93Tm90Rm91bmQpOwogCiAgICAgLy8gRklYTUUgKMKnMTAuNy4yIFN0ZXAgMTApOiBXZSBuZWVk
IHRvIGV4aXQgZnVsbHNjcmVlbiBiZWZvcmUgc2V0dGluZyB0aGUgZnJhbWUuCiAgICAgLy8gRklY
TUUgKMKnMTAuNy4yIFN0ZXAgMTEpOiBXZSBuZWVkIHRvIGRlLW1pbmlhdHVyaXplIHRoZSB3aW5k
b3cgYmVmb3JlIHNldHRpbmcgdGhlIGZyYW1lLgpAQCAtMzc5LDE1ICszNzksMTUgQEAgc3RhdGlj
IHN0ZDo6b3B0aW9uYWw8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6UGFnZUxvYWRT
dHJhdGVneT4gcGFnZUxvYWQKICAgICByZXR1cm4gcGFyc2VkUGFnZUxvYWRTdHJhdGVneTsKIH0K
IAotdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6d2FpdEZvck5hdmlnYXRpb25Ub0NvbXBsZXRl
KEluc3BlY3Rvcjo6RXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIGJyb3dz
aW5nQ29udGV4dEhhbmRsZSwgY29uc3QgU3RyaW5nKiBvcHRpb25hbEZyYW1lSGFuZGxlLCBjb25z
dCBTdHJpbmcqIG9wdGlvbmFsUGFnZUxvYWRTdHJhdGVneVN0cmluZywgY29uc3QgaW50KiBvcHRp
b25hbFBhZ2VMb2FkVGltZW91dCwgUmVmPFdhaXRGb3JOYXZpZ2F0aW9uVG9Db21wbGV0ZUNhbGxi
YWNrPiYmIGNhbGxiYWNrKQordm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6d2FpdEZvck5hdmln
YXRpb25Ub0NvbXBsZXRlKGNvbnN0IFN0cmluZyYgYnJvd3NpbmdDb250ZXh0SGFuZGxlLCBjb25z
dCBTdHJpbmcqIG9wdGlvbmFsRnJhbWVIYW5kbGUsIGNvbnN0IFN0cmluZyogb3B0aW9uYWxQYWdl
TG9hZFN0cmF0ZWd5U3RyaW5nLCBjb25zdCBpbnQqIG9wdGlvbmFsUGFnZUxvYWRUaW1lb3V0LCBS
ZWY8V2FpdEZvck5hdmlnYXRpb25Ub0NvbXBsZXRlQ2FsbGJhY2s+JiYgY2FsbGJhY2spCiB7CiAg
ICAgV2ViUGFnZVByb3h5KiBwYWdlID0gd2ViUGFnZVByb3h5Rm9ySGFuZGxlKGJyb3dzaW5nQ29u
dGV4dEhhbmRsZSk7CiAgICAgaWYgKCFwYWdlKQotICAgICAgICBGQUlMX1dJVEhfUFJFREVGSU5F
RF9FUlJPUihXaW5kb3dOb3RGb3VuZCk7CisgICAgICAgIEFTWU5DX0ZBSUxfV0lUSF9QUkVERUZJ
TkVEX0VSUk9SKFdpbmRvd05vdEZvdW5kKTsKIAogICAgIGF1dG8gcGFnZUxvYWRTdHJhdGVneSA9
IHBhZ2VMb2FkU3RyYXRlZ3lGcm9tU3RyaW5nUGFyYW1ldGVyKG9wdGlvbmFsUGFnZUxvYWRTdHJh
dGVneVN0cmluZyk7CiAgICAgaWYgKCFwYWdlTG9hZFN0cmF0ZWd5KQotICAgICAgICBGQUlMX1dJ
VEhfUFJFREVGSU5FRF9FUlJPUl9BTkRfREVUQUlMUyhJbnZhbGlkUGFyYW1ldGVyLCAiVGhlIHBh
cmFtZXRlciAncGFnZUxvYWRTdHJhdGVneScgaXMgaW52YWxpZC4iKTsKKyAgICAgICAgQVNZTkNf
RkFJTF9XSVRIX1BSRURFRklORURfRVJST1JfQU5EX0RFVEFJTFMoSW52YWxpZFBhcmFtZXRlciwg
IlRoZSBwYXJhbWV0ZXIgJ3BhZ2VMb2FkU3RyYXRlZ3knIGlzIGludmFsaWQuIik7CiAgICAgYXV0
byBwYWdlTG9hZFRpbWVvdXQgPSBvcHRpb25hbFBhZ2VMb2FkVGltZW91dCA/IFNlY29uZHM6OmZy
b21NaWxsaXNlY29uZHMoKm9wdGlvbmFsUGFnZUxvYWRUaW1lb3V0KSA6IGRlZmF1bHRQYWdlTG9h
ZFRpbWVvdXQ7CiAKICAgICAvLyBJZiBwYWdlIGlzIGxvYWRpbmcgYW5kIHRoZXJlJ3MgYW4gYWN0
aXZlIEphdmFTY3JpcHQgZGlhbG9nIGlzIHByb2JhYmx5IGJlY2F1c2UgdGhlCkBAIC00MDEsMTAg
KzQwMSwxMCBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjp3YWl0Rm9yTmF2aWdhdGlvblRv
Q29tcGxldGUoSW5zcGVjdG9yOjpFcnJvclN0cmluZyYgZQogICAgIGlmIChvcHRpb25hbEZyYW1l
SGFuZGxlICYmICFvcHRpb25hbEZyYW1lSGFuZGxlLT5pc0VtcHR5KCkpIHsKICAgICAgICAgc3Rk
OjpvcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCA9IHdlYkZyYW1lSURGb3JIYW5kbGUoKm9wdGlv
bmFsRnJhbWVIYW5kbGUpOwogICAgICAgICBpZiAoIWZyYW1lSUQpCi0gICAgICAgICAgICBGQUlM
X1dJVEhfUFJFREVGSU5FRF9FUlJPUihGcmFtZU5vdEZvdW5kKTsKKyAgICAgICAgICAgIEFTWU5D
X0ZBSUxfV0lUSF9QUkVERUZJTkVEX0VSUk9SKEZyYW1lTm90Rm91bmQpOwogICAgICAgICBXZWJG
cmFtZVByb3h5KiBmcmFtZSA9IHBhZ2UtPnByb2Nlc3MoKS53ZWJGcmFtZShmcmFtZUlELnZhbHVl
KCkpOwogICAgICAgICBpZiAoIWZyYW1lKQotICAgICAgICAgICAgRkFJTF9XSVRIX1BSRURFRklO
RURfRVJST1IoRnJhbWVOb3RGb3VuZCk7CisgICAgICAgICAgICBBU1lOQ19GQUlMX1dJVEhfUFJF
REVGSU5FRF9FUlJPUihGcmFtZU5vdEZvdW5kKTsKICAgICAgICAgaWYgKCFzaG91bGRUaW1lb3V0
RHVlVG9VbmV4cGVjdGVkQWxlcnQpCiAgICAgICAgICAgICB3YWl0Rm9yTmF2aWdhdGlvblRvQ29t
cGxldGVPbkZyYW1lKCpmcmFtZSwgcGFnZUxvYWRTdHJhdGVneS52YWx1ZSgpLCBwYWdlTG9hZFRp
bWVvdXQsIFdURk1vdmUoY2FsbGJhY2spKTsKICAgICB9IGVsc2UgewpAQCAtNTM0LDYwICs1MzQs
NjAgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6d2lsbFNob3dKYXZhU2NyaXB0RGlhbG9n
KFdlYlBhZ2VQcm94eSYgcGFnZSkKICAgICB9KTsKIH0KIAotdm9pZCBXZWJBdXRvbWF0aW9uU2Vz
c2lvbjo6bmF2aWdhdGVCcm93c2luZ0NvbnRleHQoSW5zcGVjdG9yOjpFcnJvclN0cmluZyYgZXJy
b3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgaGFuZGxlLCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3Qg
U3RyaW5nKiBvcHRpb25hbFBhZ2VMb2FkU3RyYXRlZ3lTdHJpbmcsIGNvbnN0IGludCogb3B0aW9u
YWxQYWdlTG9hZFRpbWVvdXQsIFJlZjxOYXZpZ2F0ZUJyb3dzaW5nQ29udGV4dENhbGxiYWNrPiYm
IGNhbGxiYWNrKQordm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6bmF2aWdhdGVCcm93c2luZ0Nv
bnRleHQoY29uc3QgU3RyaW5nJiBoYW5kbGUsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJp
bmcqIG9wdGlvbmFsUGFnZUxvYWRTdHJhdGVneVN0cmluZywgY29uc3QgaW50KiBvcHRpb25hbFBh
Z2VMb2FkVGltZW91dCwgUmVmPE5hdmlnYXRlQnJvd3NpbmdDb250ZXh0Q2FsbGJhY2s+JiYgY2Fs
bGJhY2spCiB7CiAgICAgV2ViUGFnZVByb3h5KiBwYWdlID0gd2ViUGFnZVByb3h5Rm9ySGFuZGxl
KGhhbmRsZSk7CiAgICAgaWYgKCFwYWdlKQotICAgICAgICBGQUlMX1dJVEhfUFJFREVGSU5FRF9F
UlJPUihXaW5kb3dOb3RGb3VuZCk7CisgICAgICAgIEFTWU5DX0ZBSUxfV0lUSF9QUkVERUZJTkVE
X0VSUk9SKFdpbmRvd05vdEZvdW5kKTsKIAogICAgIGF1dG8gcGFnZUxvYWRTdHJhdGVneSA9IHBh
Z2VMb2FkU3RyYXRlZ3lGcm9tU3RyaW5nUGFyYW1ldGVyKG9wdGlvbmFsUGFnZUxvYWRTdHJhdGVn
eVN0cmluZyk7CiAgICAgaWYgKCFwYWdlTG9hZFN0cmF0ZWd5KQotICAgICAgICBGQUlMX1dJVEhf
UFJFREVGSU5FRF9FUlJPUl9BTkRfREVUQUlMUyhJbnZhbGlkUGFyYW1ldGVyLCAiVGhlIHBhcmFt
ZXRlciAncGFnZUxvYWRTdHJhdGVneScgaXMgaW52YWxpZC4iKTsKKyAgICAgICAgQVNZTkNfRkFJ
TF9XSVRIX1BSRURFRklORURfRVJST1JfQU5EX0RFVEFJTFMoSW52YWxpZFBhcmFtZXRlciwgIlRo
ZSBwYXJhbWV0ZXIgJ3BhZ2VMb2FkU3RyYXRlZ3knIGlzIGludmFsaWQuIik7CiAgICAgYXV0byBw
YWdlTG9hZFRpbWVvdXQgPSBvcHRpb25hbFBhZ2VMb2FkVGltZW91dCA/IFNlY29uZHM6OmZyb21N
aWxsaXNlY29uZHMoKm9wdGlvbmFsUGFnZUxvYWRUaW1lb3V0KSA6IGRlZmF1bHRQYWdlTG9hZFRp
bWVvdXQ7CiAKICAgICBwYWdlLT5sb2FkUmVxdWVzdChXZWJDb3JlOjpVUkwoV2ViQ29yZTo6VVJM
KCksIHVybCkpOwogICAgIHdhaXRGb3JOYXZpZ2F0aW9uVG9Db21wbGV0ZU9uUGFnZSgqcGFnZSwg
cGFnZUxvYWRTdHJhdGVneS52YWx1ZSgpLCBwYWdlTG9hZFRpbWVvdXQsIFdURk1vdmUoY2FsbGJh
Y2spKTsKIH0KIAotdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6Z29CYWNrSW5Ccm93c2luZ0Nv
bnRleHQoSW5zcGVjdG9yOjpFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYg
aGFuZGxlLCBjb25zdCBTdHJpbmcqIG9wdGlvbmFsUGFnZUxvYWRTdHJhdGVneVN0cmluZywgY29u
c3QgaW50KiBvcHRpb25hbFBhZ2VMb2FkVGltZW91dCwgUmVmPEdvQmFja0luQnJvd3NpbmdDb250
ZXh0Q2FsbGJhY2s+JiYgY2FsbGJhY2spCit2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpnb0Jh
Y2tJbkJyb3dzaW5nQ29udGV4dChjb25zdCBTdHJpbmcmIGhhbmRsZSwgY29uc3QgU3RyaW5nKiBv
cHRpb25hbFBhZ2VMb2FkU3RyYXRlZ3lTdHJpbmcsIGNvbnN0IGludCogb3B0aW9uYWxQYWdlTG9h
ZFRpbWVvdXQsIFJlZjxHb0JhY2tJbkJyb3dzaW5nQ29udGV4dENhbGxiYWNrPiYmIGNhbGxiYWNr
KQogewogICAgIFdlYlBhZ2VQcm94eSogcGFnZSA9IHdlYlBhZ2VQcm94eUZvckhhbmRsZShoYW5k
bGUpOwogICAgIGlmICghcGFnZSkKLSAgICAgICAgRkFJTF9XSVRIX1BSRURFRklORURfRVJST1Io
V2luZG93Tm90Rm91bmQpOworICAgICAgICBBU1lOQ19GQUlMX1dJVEhfUFJFREVGSU5FRF9FUlJP
UihXaW5kb3dOb3RGb3VuZCk7CiAKICAgICBhdXRvIHBhZ2VMb2FkU3RyYXRlZ3kgPSBwYWdlTG9h
ZFN0cmF0ZWd5RnJvbVN0cmluZ1BhcmFtZXRlcihvcHRpb25hbFBhZ2VMb2FkU3RyYXRlZ3lTdHJp
bmcpOwogICAgIGlmICghcGFnZUxvYWRTdHJhdGVneSkKLSAgICAgICAgRkFJTF9XSVRIX1BSRURF
RklORURfRVJST1JfQU5EX0RFVEFJTFMoSW52YWxpZFBhcmFtZXRlciwgIlRoZSBwYXJhbWV0ZXIg
J3BhZ2VMb2FkU3RyYXRlZ3knIGlzIGludmFsaWQuIik7CisgICAgICAgIEFTWU5DX0ZBSUxfV0lU
SF9QUkVERUZJTkVEX0VSUk9SX0FORF9ERVRBSUxTKEludmFsaWRQYXJhbWV0ZXIsICJUaGUgcGFy
YW1ldGVyICdwYWdlTG9hZFN0cmF0ZWd5JyBpcyBpbnZhbGlkLiIpOwogICAgIGF1dG8gcGFnZUxv
YWRUaW1lb3V0ID0gb3B0aW9uYWxQYWdlTG9hZFRpbWVvdXQgPyBTZWNvbmRzOjpmcm9tTWlsbGlz
ZWNvbmRzKCpvcHRpb25hbFBhZ2VMb2FkVGltZW91dCkgOiBkZWZhdWx0UGFnZUxvYWRUaW1lb3V0
OwogCiAgICAgcGFnZS0+Z29CYWNrKCk7CiAgICAgd2FpdEZvck5hdmlnYXRpb25Ub0NvbXBsZXRl
T25QYWdlKCpwYWdlLCBwYWdlTG9hZFN0cmF0ZWd5LnZhbHVlKCksIHBhZ2VMb2FkVGltZW91dCwg
V1RGTW92ZShjYWxsYmFjaykpOwogfQogCi12b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpnb0Zv
cndhcmRJbkJyb3dzaW5nQ29udGV4dChJbnNwZWN0b3I6OkVycm9yU3RyaW5nJiBlcnJvclN0cmlu
ZywgY29uc3QgU3RyaW5nJiBoYW5kbGUsIGNvbnN0IFN0cmluZyogb3B0aW9uYWxQYWdlTG9hZFN0
cmF0ZWd5U3RyaW5nLCBjb25zdCBpbnQqIG9wdGlvbmFsUGFnZUxvYWRUaW1lb3V0LCBSZWY8R29G
b3J3YXJkSW5Ccm93c2luZ0NvbnRleHRDYWxsYmFjaz4mJiBjYWxsYmFjaykKK3ZvaWQgV2ViQXV0
b21hdGlvblNlc3Npb246OmdvRm9yd2FyZEluQnJvd3NpbmdDb250ZXh0KGNvbnN0IFN0cmluZyYg
aGFuZGxlLCBjb25zdCBTdHJpbmcqIG9wdGlvbmFsUGFnZUxvYWRTdHJhdGVneVN0cmluZywgY29u
c3QgaW50KiBvcHRpb25hbFBhZ2VMb2FkVGltZW91dCwgUmVmPEdvRm9yd2FyZEluQnJvd3NpbmdD
b250ZXh0Q2FsbGJhY2s+JiYgY2FsbGJhY2spCiB7CiAgICAgV2ViUGFnZVByb3h5KiBwYWdlID0g
d2ViUGFnZVByb3h5Rm9ySGFuZGxlKGhhbmRsZSk7CiAgICAgaWYgKCFwYWdlKQotICAgICAgICBG
QUlMX1dJVEhfUFJFREVGSU5FRF9FUlJPUihXaW5kb3dOb3RGb3VuZCk7CisgICAgICAgIEFTWU5D
X0ZBSUxfV0lUSF9QUkVERUZJTkVEX0VSUk9SKFdpbmRvd05vdEZvdW5kKTsKIAogICAgIGF1dG8g
cGFnZUxvYWRTdHJhdGVneSA9IHBhZ2VMb2FkU3RyYXRlZ3lGcm9tU3RyaW5nUGFyYW1ldGVyKG9w
dGlvbmFsUGFnZUxvYWRTdHJhdGVneVN0cmluZyk7CiAgICAgaWYgKCFwYWdlTG9hZFN0cmF0ZWd5
KQotICAgICAgICBGQUlMX1dJVEhfUFJFREVGSU5FRF9FUlJPUl9BTkRfREVUQUlMUyhJbnZhbGlk
UGFyYW1ldGVyLCAiVGhlIHBhcmFtZXRlciAncGFnZUxvYWRTdHJhdGVneScgaXMgaW52YWxpZC4i
KTsKKyAgICAgICAgQVNZTkNfRkFJTF9XSVRIX1BSRURFRklORURfRVJST1JfQU5EX0RFVEFJTFMo
SW52YWxpZFBhcmFtZXRlciwgIlRoZSBwYXJhbWV0ZXIgJ3BhZ2VMb2FkU3RyYXRlZ3knIGlzIGlu
dmFsaWQuIik7CiAgICAgYXV0byBwYWdlTG9hZFRpbWVvdXQgPSBvcHRpb25hbFBhZ2VMb2FkVGlt
ZW91dCA/IFNlY29uZHM6OmZyb21NaWxsaXNlY29uZHMoKm9wdGlvbmFsUGFnZUxvYWRUaW1lb3V0
KSA6IGRlZmF1bHRQYWdlTG9hZFRpbWVvdXQ7CiAKICAgICBwYWdlLT5nb0ZvcndhcmQoKTsKICAg
ICB3YWl0Rm9yTmF2aWdhdGlvblRvQ29tcGxldGVPblBhZ2UoKnBhZ2UsIHBhZ2VMb2FkU3RyYXRl
Z3kudmFsdWUoKSwgcGFnZUxvYWRUaW1lb3V0LCBXVEZNb3ZlKGNhbGxiYWNrKSk7CiB9CiAKLXZv
aWQgV2ViQXV0b21hdGlvblNlc3Npb246OnJlbG9hZEJyb3dzaW5nQ29udGV4dChJbnNwZWN0b3I6
OkVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBoYW5kbGUsIGNvbnN0IFN0
cmluZyogb3B0aW9uYWxQYWdlTG9hZFN0cmF0ZWd5U3RyaW5nLCBjb25zdCBpbnQqIG9wdGlvbmFs
UGFnZUxvYWRUaW1lb3V0LCBSZWY8UmVsb2FkQnJvd3NpbmdDb250ZXh0Q2FsbGJhY2s+JiYgY2Fs
bGJhY2spCit2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpyZWxvYWRCcm93c2luZ0NvbnRleHQo
Y29uc3QgU3RyaW5nJiBoYW5kbGUsIGNvbnN0IFN0cmluZyogb3B0aW9uYWxQYWdlTG9hZFN0cmF0
ZWd5U3RyaW5nLCBjb25zdCBpbnQqIG9wdGlvbmFsUGFnZUxvYWRUaW1lb3V0LCBSZWY8UmVsb2Fk
QnJvd3NpbmdDb250ZXh0Q2FsbGJhY2s+JiYgY2FsbGJhY2spCiB7CiAgICAgV2ViUGFnZVByb3h5
KiBwYWdlID0gd2ViUGFnZVByb3h5Rm9ySGFuZGxlKGhhbmRsZSk7CiAgICAgaWYgKCFwYWdlKQot
ICAgICAgICBGQUlMX1dJVEhfUFJFREVGSU5FRF9FUlJPUihXaW5kb3dOb3RGb3VuZCk7CisgICAg
ICAgIEFTWU5DX0ZBSUxfV0lUSF9QUkVERUZJTkVEX0VSUk9SKFdpbmRvd05vdEZvdW5kKTsKIAog
ICAgIGF1dG8gcGFnZUxvYWRTdHJhdGVneSA9IHBhZ2VMb2FkU3RyYXRlZ3lGcm9tU3RyaW5nUGFy
YW1ldGVyKG9wdGlvbmFsUGFnZUxvYWRTdHJhdGVneVN0cmluZyk7CiAgICAgaWYgKCFwYWdlTG9h
ZFN0cmF0ZWd5KQotICAgICAgICBGQUlMX1dJVEhfUFJFREVGSU5FRF9FUlJPUl9BTkRfREVUQUlM
UyhJbnZhbGlkUGFyYW1ldGVyLCAiVGhlIHBhcmFtZXRlciAncGFnZUxvYWRTdHJhdGVneScgaXMg
aW52YWxpZC4iKTsKKyAgICAgICAgQVNZTkNfRkFJTF9XSVRIX1BSRURFRklORURfRVJST1JfQU5E
X0RFVEFJTFMoSW52YWxpZFBhcmFtZXRlciwgIlRoZSBwYXJhbWV0ZXIgJ3BhZ2VMb2FkU3RyYXRl
Z3knIGlzIGludmFsaWQuIik7CiAgICAgYXV0byBwYWdlTG9hZFRpbWVvdXQgPSBvcHRpb25hbFBh
Z2VMb2FkVGltZW91dCA/IFNlY29uZHM6OmZyb21NaWxsaXNlY29uZHMoKm9wdGlvbmFsUGFnZUxv
YWRUaW1lb3V0KSA6IGRlZmF1bHRQYWdlTG9hZFRpbWVvdXQ7CiAKICAgICBwYWdlLT5yZWxvYWQo
eyB9KTsKQEAgLTczMiwxNSArNzMyLDE1IEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246Omhh
bmRsZVJ1bk9wZW5QYW5lbChjb25zdCBXZWJQYWdlUHJveHkmIHBhZ2UsIGNvbnN0IFdlCiAgICAg
bV9kb21haW5Ob3RpZmllci0+ZmlsZUNob29zZXJEaXNtaXNzZWQobV9hY3RpdmVCcm93c2luZ0Nv
bnRleHRIYW5kbGUsIGZhbHNlKTsKIH0KIAotdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6ZXZh
bHVhdGVKYXZhU2NyaXB0RnVuY3Rpb24oSW5zcGVjdG9yOjpFcnJvclN0cmluZyYgZXJyb3JTdHJp
bmcsIGNvbnN0IFN0cmluZyYgYnJvd3NpbmdDb250ZXh0SGFuZGxlLCBjb25zdCBTdHJpbmcqIG9w
dGlvbmFsRnJhbWVIYW5kbGUsIGNvbnN0IFN0cmluZyYgZnVuY3Rpb24sIGNvbnN0IEpTT046OkFy
cmF5JiBhcmd1bWVudHMsIGNvbnN0IGJvb2wqIG9wdGlvbmFsRXhwZWN0c0ltcGxpY2l0Q2FsbGJh
Y2tBcmd1bWVudCwgY29uc3QgaW50KiBvcHRpb25hbENhbGxiYWNrVGltZW91dCwgUmVmPEV2YWx1
YXRlSmF2YVNjcmlwdEZ1bmN0aW9uQ2FsbGJhY2s+JiYgY2FsbGJhY2spCit2b2lkIFdlYkF1dG9t
YXRpb25TZXNzaW9uOjpldmFsdWF0ZUphdmFTY3JpcHRGdW5jdGlvbihjb25zdCBTdHJpbmcmIGJy
b3dzaW5nQ29udGV4dEhhbmRsZSwgY29uc3QgU3RyaW5nKiBvcHRpb25hbEZyYW1lSGFuZGxlLCBj
b25zdCBTdHJpbmcmIGZ1bmN0aW9uLCBjb25zdCBKU09OOjpBcnJheSYgYXJndW1lbnRzLCBjb25z
dCBib29sKiBvcHRpb25hbEV4cGVjdHNJbXBsaWNpdENhbGxiYWNrQXJndW1lbnQsIGNvbnN0IGlu
dCogb3B0aW9uYWxDYWxsYmFja1RpbWVvdXQsIFJlZjxFdmFsdWF0ZUphdmFTY3JpcHRGdW5jdGlv
bkNhbGxiYWNrPiYmIGNhbGxiYWNrKQogewogICAgIFdlYlBhZ2VQcm94eSogcGFnZSA9IHdlYlBh
Z2VQcm94eUZvckhhbmRsZShicm93c2luZ0NvbnRleHRIYW5kbGUpOwogICAgIGlmICghcGFnZSkK
LSAgICAgICAgRkFJTF9XSVRIX1BSRURFRklORURfRVJST1IoV2luZG93Tm90Rm91bmQpOworICAg
ICAgICBBU1lOQ19GQUlMX1dJVEhfUFJFREVGSU5FRF9FUlJPUihXaW5kb3dOb3RGb3VuZCk7CiAK
ICAgICBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlEID0gd2ViRnJhbWVJREZvckhhbmRs
ZShvcHRpb25hbEZyYW1lSGFuZGxlID8gKm9wdGlvbmFsRnJhbWVIYW5kbGUgOiBlbXB0eVN0cmlu
ZygpKTsKICAgICBpZiAoIWZyYW1lSUQpCi0gICAgICAgIEZBSUxfV0lUSF9QUkVERUZJTkVEX0VS
Uk9SKEZyYW1lTm90Rm91bmQpOworICAgICAgICBBU1lOQ19GQUlMX1dJVEhfUFJFREVGSU5FRF9F
UlJPUihGcmFtZU5vdEZvdW5kKTsKIAogICAgIFZlY3RvcjxTdHJpbmc+IGFyZ3VtZW50c1ZlY3Rv
cjsKICAgICBhcmd1bWVudHNWZWN0b3IucmVzZXJ2ZUNhcGFjaXR5KGFyZ3VtZW50cy5sZW5ndGgo
KSk7CkBAIC03NzIsMTggKzc3MiwxOCBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpkaWRF
dmFsdWF0ZUphdmFTY3JpcHRGdW5jdGlvbih1aW50NjRfdCBjYWxsYmFja0lELCBjbwogICAgICAg
ICBjYWxsYmFjay0+c2VuZFN1Y2Nlc3MocmVzdWx0KTsKIH0KIAotdm9pZCBXZWJBdXRvbWF0aW9u
U2Vzc2lvbjo6cmVzb2x2ZUNoaWxkRnJhbWVIYW5kbGUoSW5zcGVjdG9yOjpFcnJvclN0cmluZyYg
ZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgYnJvd3NpbmdDb250ZXh0SGFuZGxlLCBjb25zdCBT
dHJpbmcqIG9wdGlvbmFsRnJhbWVIYW5kbGUsIGNvbnN0IGludCogb3B0aW9uYWxPcmRpbmFsLCBj
b25zdCBTdHJpbmcqIG9wdGlvbmFsTmFtZSwgY29uc3QgU3RyaW5nKiBvcHRpb25hbE5vZGVIYW5k
bGUsIFJlZjxSZXNvbHZlQ2hpbGRGcmFtZUhhbmRsZUNhbGxiYWNrPiYmIGNhbGxiYWNrKQordm9p
ZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6cmVzb2x2ZUNoaWxkRnJhbWVIYW5kbGUoY29uc3QgU3Ry
aW5nJiBicm93c2luZ0NvbnRleHRIYW5kbGUsIGNvbnN0IFN0cmluZyogb3B0aW9uYWxGcmFtZUhh
bmRsZSwgY29uc3QgaW50KiBvcHRpb25hbE9yZGluYWwsIGNvbnN0IFN0cmluZyogb3B0aW9uYWxO
YW1lLCBjb25zdCBTdHJpbmcqIG9wdGlvbmFsTm9kZUhhbmRsZSwgUmVmPFJlc29sdmVDaGlsZEZy
YW1lSGFuZGxlQ2FsbGJhY2s+JiYgY2FsbGJhY2spCiB7CiAgICAgaWYgKCFvcHRpb25hbE9yZGlu
YWwgJiYgIW9wdGlvbmFsTmFtZSAmJiAhb3B0aW9uYWxOb2RlSGFuZGxlKQotICAgICAgICBGQUlM
X1dJVEhfUFJFREVGSU5FRF9FUlJPUl9BTkRfREVUQUlMUyhNaXNzaW5nUGFyYW1ldGVyLCAiQ29t
bWFuZCBtdXN0IHNwZWNpZnkgYSBjaGlsZCBmcmFtZSBieSBvcmRpbmFsLCBuYW1lLCBvciBlbGVt
ZW50IGhhbmRsZS4iKTsKKyAgICAgICAgQVNZTkNfRkFJTF9XSVRIX1BSRURFRklORURfRVJST1Jf
QU5EX0RFVEFJTFMoTWlzc2luZ1BhcmFtZXRlciwgIkNvbW1hbmQgbXVzdCBzcGVjaWZ5IGEgY2hp
bGQgZnJhbWUgYnkgb3JkaW5hbCwgbmFtZSwgb3IgZWxlbWVudCBoYW5kbGUuIik7CiAKICAgICBX
ZWJQYWdlUHJveHkqIHBhZ2UgPSB3ZWJQYWdlUHJveHlGb3JIYW5kbGUoYnJvd3NpbmdDb250ZXh0
SGFuZGxlKTsKICAgICBpZiAoIXBhZ2UpCi0gICAgICAgIEZBSUxfV0lUSF9QUkVERUZJTkVEX0VS
Uk9SKFdpbmRvd05vdEZvdW5kKTsKKyAgICAgICAgQVNZTkNfRkFJTF9XSVRIX1BSRURFRklORURf
RVJST1IoV2luZG93Tm90Rm91bmQpOwogCiAgICAgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gZnJh
bWVJRCA9IHdlYkZyYW1lSURGb3JIYW5kbGUob3B0aW9uYWxGcmFtZUhhbmRsZSA/ICpvcHRpb25h
bEZyYW1lSGFuZGxlIDogZW1wdHlTdHJpbmcoKSk7CiAgICAgaWYgKCFmcmFtZUlEKQotICAgICAg
ICBGQUlMX1dJVEhfUFJFREVGSU5FRF9FUlJPUihGcmFtZU5vdEZvdW5kKTsKKyAgICAgICAgQVNZ
TkNfRkFJTF9XSVRIX1BSRURFRklORURfRVJST1IoRnJhbWVOb3RGb3VuZCk7CiAKICAgICB1aW50
NjRfdCBjYWxsYmFja0lEID0gbV9uZXh0UmVzb2x2ZUZyYW1lQ2FsbGJhY2tJRCsrOwogICAgIG1f
cmVzb2x2ZUNoaWxkRnJhbWVIYW5kbGVDYWxsYmFja3Muc2V0KGNhbGxiYWNrSUQsIFdURk1vdmUo
Y2FsbGJhY2spKTsKQEAgLTgxOCwxNSArODE4LDE1IEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Np
b246OmRpZFJlc29sdmVDaGlsZEZyYW1lKHVpbnQ2NF90IGNhbGxiYWNrSUQsIHVpbnQ2NF90IGZy
CiAgICAgICAgIGNhbGxiYWNrLT5zZW5kU3VjY2VzcyhoYW5kbGVGb3JXZWJGcmFtZUlEKGZyYW1l
SUQpKTsKIH0KIAotdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6cmVzb2x2ZVBhcmVudEZyYW1l
SGFuZGxlKEluc3BlY3Rvcjo6RXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcm
IGJyb3dzaW5nQ29udGV4dEhhbmRsZSwgY29uc3QgU3RyaW5nJiBmcmFtZUhhbmRsZSwgUmVmPFJl
c29sdmVQYXJlbnRGcmFtZUhhbmRsZUNhbGxiYWNrPiYmIGNhbGxiYWNrKQordm9pZCBXZWJBdXRv
bWF0aW9uU2Vzc2lvbjo6cmVzb2x2ZVBhcmVudEZyYW1lSGFuZGxlKGNvbnN0IFN0cmluZyYgYnJv
d3NpbmdDb250ZXh0SGFuZGxlLCBjb25zdCBTdHJpbmcmIGZyYW1lSGFuZGxlLCBSZWY8UmVzb2x2
ZVBhcmVudEZyYW1lSGFuZGxlQ2FsbGJhY2s+JiYgY2FsbGJhY2spCiB7CiAgICAgV2ViUGFnZVBy
b3h5KiBwYWdlID0gd2ViUGFnZVByb3h5Rm9ySGFuZGxlKGJyb3dzaW5nQ29udGV4dEhhbmRsZSk7
CiAgICAgaWYgKCFwYWdlKQotICAgICAgICBGQUlMX1dJVEhfUFJFREVGSU5FRF9FUlJPUihXaW5k
b3dOb3RGb3VuZCk7CisgICAgICAgIEFTWU5DX0ZBSUxfV0lUSF9QUkVERUZJTkVEX0VSUk9SKFdp
bmRvd05vdEZvdW5kKTsKIAogICAgIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQgPSB3
ZWJGcmFtZUlERm9ySGFuZGxlKGZyYW1lSGFuZGxlKTsKICAgICBpZiAoIWZyYW1lSUQpCi0gICAg
ICAgIEZBSUxfV0lUSF9QUkVERUZJTkVEX0VSUk9SKEZyYW1lTm90Rm91bmQpOworICAgICAgICBB
U1lOQ19GQUlMX1dJVEhfUFJFREVGSU5FRF9FUlJPUihGcmFtZU5vdEZvdW5kKTsKIAogICAgIHVp
bnQ2NF90IGNhbGxiYWNrSUQgPSBtX25leHRSZXNvbHZlUGFyZW50RnJhbWVDYWxsYmFja0lEKys7
CiAgICAgbV9yZXNvbHZlUGFyZW50RnJhbWVIYW5kbGVDYWxsYmFja3Muc2V0KGNhbGxiYWNrSUQs
IFdURk1vdmUoY2FsbGJhY2spKTsKQEAgLTg1NywxOSArODU3LDE5IEBAIHN0YXRpYyBzdGQ6Om9w
dGlvbmFsPENvb3JkaW5hdGVTeXN0ZW0+IHByb3RvY29sU3RyaW5nVG9Db29yZGluYXRlU3lzdGVt
KGNvbnN0IFN0CiAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAotdm9pZCBXZWJBdXRvbWF0
aW9uU2Vzc2lvbjo6Y29tcHV0ZUVsZW1lbnRMYXlvdXQoSW5zcGVjdG9yOjpFcnJvclN0cmluZyYg
ZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgYnJvd3NpbmdDb250ZXh0SGFuZGxlLCBjb25zdCBT
dHJpbmcmIGZyYW1lSGFuZGxlLCBjb25zdCBTdHJpbmcmIG5vZGVIYW5kbGUsIGNvbnN0IGJvb2wq
IG9wdGlvbmFsU2Nyb2xsSW50b1ZpZXdJZk5lZWRlZCwgY29uc3QgU3RyaW5nJiBjb29yZGluYXRl
U3lzdGVtU3RyaW5nLCBSZWY8Q29tcHV0ZUVsZW1lbnRMYXlvdXRDYWxsYmFjaz4mJiBjYWxsYmFj
aykKK3ZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OmNvbXB1dGVFbGVtZW50TGF5b3V0KGNvbnN0
IFN0cmluZyYgYnJvd3NpbmdDb250ZXh0SGFuZGxlLCBjb25zdCBTdHJpbmcmIGZyYW1lSGFuZGxl
LCBjb25zdCBTdHJpbmcmIG5vZGVIYW5kbGUsIGNvbnN0IGJvb2wqIG9wdGlvbmFsU2Nyb2xsSW50
b1ZpZXdJZk5lZWRlZCwgY29uc3QgU3RyaW5nJiBjb29yZGluYXRlU3lzdGVtU3RyaW5nLCBSZWY8
Q29tcHV0ZUVsZW1lbnRMYXlvdXRDYWxsYmFjaz4mJiBjYWxsYmFjaykKIHsKICAgICBXZWJQYWdl
UHJveHkqIHBhZ2UgPSB3ZWJQYWdlUHJveHlGb3JIYW5kbGUoYnJvd3NpbmdDb250ZXh0SGFuZGxl
KTsKICAgICBpZiAoIXBhZ2UpCi0gICAgICAgIEZBSUxfV0lUSF9QUkVERUZJTkVEX0VSUk9SKFdp
bmRvd05vdEZvdW5kKTsKKyAgICAgICAgQVNZTkNfRkFJTF9XSVRIX1BSRURFRklORURfRVJST1Io
V2luZG93Tm90Rm91bmQpOwogCiAgICAgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCA9
IHdlYkZyYW1lSURGb3JIYW5kbGUoZnJhbWVIYW5kbGUpOwogICAgIGlmICghZnJhbWVJRCkKLSAg
ICAgICAgRkFJTF9XSVRIX1BSRURFRklORURfRVJST1IoRnJhbWVOb3RGb3VuZCk7CisgICAgICAg
IEFTWU5DX0ZBSUxfV0lUSF9QUkVERUZJTkVEX0VSUk9SKEZyYW1lTm90Rm91bmQpOwogCiAgICAg
c3RkOjpvcHRpb25hbDxDb29yZGluYXRlU3lzdGVtPiBjb29yZGluYXRlU3lzdGVtID0gcHJvdG9j
b2xTdHJpbmdUb0Nvb3JkaW5hdGVTeXN0ZW0oY29vcmRpbmF0ZVN5c3RlbVN0cmluZyk7CiAgICAg
aWYgKCFjb29yZGluYXRlU3lzdGVtKQotICAgICAgICBGQUlMX1dJVEhfUFJFREVGSU5FRF9FUlJP
Ul9BTkRfREVUQUlMUyhJbnZhbGlkUGFyYW1ldGVyLCAiVGhlIHBhcmFtZXRlciAnY29vcmRpbmF0
ZVN5c3RlbScgaXMgaW52YWxpZC4iKTsKKyAgICAgICAgQVNZTkNfRkFJTF9XSVRIX1BSRURFRklO
RURfRVJST1JfQU5EX0RFVEFJTFMoSW52YWxpZFBhcmFtZXRlciwgIlRoZSBwYXJhbWV0ZXIgJ2Nv
b3JkaW5hdGVTeXN0ZW0nIGlzIGludmFsaWQuIik7CiAKICAgICB1aW50NjRfdCBjYWxsYmFja0lE
ID0gbV9uZXh0Q29tcHV0ZUVsZW1lbnRMYXlvdXRDYWxsYmFja0lEKys7CiAgICAgbV9jb21wdXRl
RWxlbWVudExheW91dENhbGxiYWNrcy5zZXQoY2FsbGJhY2tJRCwgV1RGTW92ZShjYWxsYmFjaykp
OwpAQCAtOTE3LDE1ICs5MTcsMTUgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6ZGlkQ29t
cHV0ZUVsZW1lbnRMYXlvdXQodWludDY0X3QgY2FsbGJhY2tJRCwgV2ViQ29yZToKICAgICBjYWxs
YmFjay0+c2VuZFN1Y2Nlc3MoV1RGTW92ZShyZWN0T2JqZWN0KSwgV1RGTW92ZShpblZpZXdDZW50
ZXJQb2ludE9iamVjdCksIGlzT2JzY3VyZWQpOwogfQogCi12b2lkIFdlYkF1dG9tYXRpb25TZXNz
aW9uOjpzZWxlY3RPcHRpb25FbGVtZW50KEluc3BlY3Rvcjo6RXJyb3JTdHJpbmcmIGVycm9yU3Ry
aW5nLCBjb25zdCBTdHJpbmcmIGJyb3dzaW5nQ29udGV4dEhhbmRsZSwgY29uc3QgU3RyaW5nJiBm
cmFtZUhhbmRsZSwgY29uc3QgU3RyaW5nJiBub2RlSGFuZGxlLCBSZWY8U2VsZWN0T3B0aW9uRWxl
bWVudENhbGxiYWNrPiYmIGNhbGxiYWNrKQordm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6c2Vs
ZWN0T3B0aW9uRWxlbWVudChjb25zdCBTdHJpbmcmIGJyb3dzaW5nQ29udGV4dEhhbmRsZSwgY29u
c3QgU3RyaW5nJiBmcmFtZUhhbmRsZSwgY29uc3QgU3RyaW5nJiBub2RlSGFuZGxlLCBSZWY8U2Vs
ZWN0T3B0aW9uRWxlbWVudENhbGxiYWNrPiYmIGNhbGxiYWNrKQogewogICAgIFdlYlBhZ2VQcm94
eSogcGFnZSA9IHdlYlBhZ2VQcm94eUZvckhhbmRsZShicm93c2luZ0NvbnRleHRIYW5kbGUpOwog
ICAgIGlmICghcGFnZSkKLSAgICAgICAgRkFJTF9XSVRIX1BSRURFRklORURfRVJST1IoV2luZG93
Tm90Rm91bmQpOworICAgICAgICBBU1lOQ19GQUlMX1dJVEhfUFJFREVGSU5FRF9FUlJPUihXaW5k
b3dOb3RGb3VuZCk7CiAKICAgICBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlEID0gd2Vi
RnJhbWVJREZvckhhbmRsZShmcmFtZUhhbmRsZSk7CiAgICAgaWYgKCFmcmFtZUlEKQotICAgICAg
ICBGQUlMX1dJVEhfUFJFREVGSU5FRF9FUlJPUihGcmFtZU5vdEZvdW5kKTsKKyAgICAgICAgQVNZ
TkNfRkFJTF9XSVRIX1BSRURFRklORURfRVJST1IoRnJhbWVOb3RGb3VuZCk7CiAKICAgICB1aW50
NjRfdCBjYWxsYmFja0lEID0gbV9uZXh0U2VsZWN0T3B0aW9uRWxlbWVudENhbGxiYWNrSUQrKzsK
ICAgICBtX3NlbGVjdE9wdGlvbkVsZW1lbnRDYWxsYmFja3Muc2V0KGNhbGxiYWNrSUQsIFdURk1v
dmUoY2FsbGJhY2spKTsKQEAgLTk1MiwxMSArOTUyLDExIEBAIHZvaWQgV2ViQXV0b21hdGlvblNl
c3Npb246OmlzU2hvd2luZ0phdmFTY3JpcHREaWFsb2coSW5zcGVjdG9yOjpFcnJvclN0cmluZyYg
ZXJyCiB7CiAgICAgQVNTRVJUKG1fY2xpZW50KTsKICAgICBpZiAoIW1fY2xpZW50KQotICAgICAg
ICBGQUlMX1dJVEhfUFJFREVGSU5FRF9FUlJPUihJbnRlcm5hbEVycm9yKTsKKyAgICAgICAgU1lO
Q19GQUlMX1dJVEhfUFJFREVGSU5FRF9FUlJPUihJbnRlcm5hbEVycm9yKTsKIAogICAgIFdlYlBh
Z2VQcm94eSogcGFnZSA9IHdlYlBhZ2VQcm94eUZvckhhbmRsZShicm93c2luZ0NvbnRleHRIYW5k
bGUpOwogICAgIGlmICghcGFnZSkKLSAgICAgICAgRkFJTF9XSVRIX1BSRURFRklORURfRVJST1Io
V2luZG93Tm90Rm91bmQpOworICAgICAgICBTWU5DX0ZBSUxfV0lUSF9QUkVERUZJTkVEX0VSUk9S
KFdpbmRvd05vdEZvdW5kKTsKIAogICAgICpyZXN1bHQgPSBtX2NsaWVudC0+aXNTaG93aW5nSmF2
YVNjcmlwdERpYWxvZ09uUGFnZSgqdGhpcywgKnBhZ2UpOwogfQpAQCAtOTY1LDE0ICs5NjUsMTQg
QEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6ZGlzbWlzc0N1cnJlbnRKYXZhU2NyaXB0RGlh
bG9nKEluc3BlY3Rvcjo6RXJyb3JTdHJpbmcKIHsKICAgICBBU1NFUlQobV9jbGllbnQpOwogICAg
IGlmICghbV9jbGllbnQpCi0gICAgICAgIEZBSUxfV0lUSF9QUkVERUZJTkVEX0VSUk9SKEludGVy
bmFsRXJyb3IpOworICAgICAgICBTWU5DX0ZBSUxfV0lUSF9QUkVERUZJTkVEX0VSUk9SKEludGVy
bmFsRXJyb3IpOwogCiAgICAgV2ViUGFnZVByb3h5KiBwYWdlID0gd2ViUGFnZVByb3h5Rm9ySGFu
ZGxlKGJyb3dzaW5nQ29udGV4dEhhbmRsZSk7CiAgICAgaWYgKCFwYWdlKQotICAgICAgICBGQUlM
X1dJVEhfUFJFREVGSU5FRF9FUlJPUihXaW5kb3dOb3RGb3VuZCk7CisgICAgICAgIFNZTkNfRkFJ
TF9XSVRIX1BSRURFRklORURfRVJST1IoV2luZG93Tm90Rm91bmQpOwogCiAgICAgaWYgKCFtX2Ns
aWVudC0+aXNTaG93aW5nSmF2YVNjcmlwdERpYWxvZ09uUGFnZSgqdGhpcywgKnBhZ2UpKQotICAg
ICAgICBGQUlMX1dJVEhfUFJFREVGSU5FRF9FUlJPUihOb0phdmFTY3JpcHREaWFsb2cpOworICAg
ICAgICBTWU5DX0ZBSUxfV0lUSF9QUkVERUZJTkVEX0VSUk9SKE5vSmF2YVNjcmlwdERpYWxvZyk7
CiAKICAgICBtX2NsaWVudC0+ZGlzbWlzc0N1cnJlbnRKYXZhU2NyaXB0RGlhbG9nT25QYWdlKCp0
aGlzLCAqcGFnZSk7CiB9CkBAIC05ODEsMTQgKzk4MSwxNCBAQCB2b2lkIFdlYkF1dG9tYXRpb25T
ZXNzaW9uOjphY2NlcHRDdXJyZW50SmF2YVNjcmlwdERpYWxvZyhJbnNwZWN0b3I6OkVycm9yU3Ry
aW5nJgogewogICAgIEFTU0VSVChtX2NsaWVudCk7CiAgICAgaWYgKCFtX2NsaWVudCkKLSAgICAg
ICAgRkFJTF9XSVRIX1BSRURFRklORURfRVJST1IoSW50ZXJuYWxFcnJvcik7CisgICAgICAgIFNZ
TkNfRkFJTF9XSVRIX1BSRURFRklORURfRVJST1IoSW50ZXJuYWxFcnJvcik7CiAKICAgICBXZWJQ
YWdlUHJveHkqIHBhZ2UgPSB3ZWJQYWdlUHJveHlGb3JIYW5kbGUoYnJvd3NpbmdDb250ZXh0SGFu
ZGxlKTsKICAgICBpZiAoIXBhZ2UpCi0gICAgICAgIEZBSUxfV0lUSF9QUkVERUZJTkVEX0VSUk9S
KFdpbmRvd05vdEZvdW5kKTsKKyAgICAgICAgU1lOQ19GQUlMX1dJVEhfUFJFREVGSU5FRF9FUlJP
UihXaW5kb3dOb3RGb3VuZCk7CiAKICAgICBpZiAoIW1fY2xpZW50LT5pc1Nob3dpbmdKYXZhU2Ny
aXB0RGlhbG9nT25QYWdlKCp0aGlzLCAqcGFnZSkpCi0gICAgICAgIEZBSUxfV0lUSF9QUkVERUZJ
TkVEX0VSUk9SKE5vSmF2YVNjcmlwdERpYWxvZyk7CisgICAgICAgIFNZTkNfRkFJTF9XSVRIX1BS
RURFRklORURfRVJST1IoTm9KYXZhU2NyaXB0RGlhbG9nKTsKIAogICAgIG1fY2xpZW50LT5hY2Nl
cHRDdXJyZW50SmF2YVNjcmlwdERpYWxvZ09uUGFnZSgqdGhpcywgKnBhZ2UpOwogfQpAQCAtOTk3
LDE0ICs5OTcsMTQgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6bWVzc2FnZU9mQ3VycmVu
dEphdmFTY3JpcHREaWFsb2coSW5zcGVjdG9yOjpFcnJvclN0cmkKIHsKICAgICBBU1NFUlQobV9j
bGllbnQpOwogICAgIGlmICghbV9jbGllbnQpCi0gICAgICAgIEZBSUxfV0lUSF9QUkVERUZJTkVE
X0VSUk9SKEludGVybmFsRXJyb3IpOworICAgICAgICBTWU5DX0ZBSUxfV0lUSF9QUkVERUZJTkVE
X0VSUk9SKEludGVybmFsRXJyb3IpOwogCiAgICAgV2ViUGFnZVByb3h5KiBwYWdlID0gd2ViUGFn
ZVByb3h5Rm9ySGFuZGxlKGJyb3dzaW5nQ29udGV4dEhhbmRsZSk7CiAgICAgaWYgKCFwYWdlKQot
ICAgICAgICBGQUlMX1dJVEhfUFJFREVGSU5FRF9FUlJPUihXaW5kb3dOb3RGb3VuZCk7CisgICAg
ICAgIFNZTkNfRkFJTF9XSVRIX1BSRURFRklORURfRVJST1IoV2luZG93Tm90Rm91bmQpOwogCiAg
ICAgaWYgKCFtX2NsaWVudC0+aXNTaG93aW5nSmF2YVNjcmlwdERpYWxvZ09uUGFnZSgqdGhpcywg
KnBhZ2UpKQotICAgICAgICBGQUlMX1dJVEhfUFJFREVGSU5FRF9FUlJPUihOb0phdmFTY3JpcHRE
aWFsb2cpOworICAgICAgICBTWU5DX0ZBSUxfV0lUSF9QUkVERUZJTkVEX0VSUk9SKE5vSmF2YVNj
cmlwdERpYWxvZyk7CiAKICAgICAqdGV4dCA9IG1fY2xpZW50LT5tZXNzYWdlT2ZDdXJyZW50SmF2
YVNjcmlwdERpYWxvZ09uUGFnZSgqdGhpcywgKnBhZ2UpOwogfQpAQCAtMTAxMywxNCArMTAxMywx
NCBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpzZXRVc2VySW5wdXRGb3JDdXJyZW50SmF2
YVNjcmlwdFByb21wdChJbnNwZWN0b3I6OkVycgogewogICAgIEFTU0VSVChtX2NsaWVudCk7CiAg
ICAgaWYgKCFtX2NsaWVudCkKLSAgICAgICAgRkFJTF9XSVRIX1BSRURFRklORURfRVJST1IoSW50
ZXJuYWxFcnJvcik7CisgICAgICAgIFNZTkNfRkFJTF9XSVRIX1BSRURFRklORURfRVJST1IoSW50
ZXJuYWxFcnJvcik7CiAKICAgICBXZWJQYWdlUHJveHkqIHBhZ2UgPSB3ZWJQYWdlUHJveHlGb3JI
YW5kbGUoYnJvd3NpbmdDb250ZXh0SGFuZGxlKTsKICAgICBpZiAoIXBhZ2UpCi0gICAgICAgIEZB
SUxfV0lUSF9QUkVERUZJTkVEX0VSUk9SKFdpbmRvd05vdEZvdW5kKTsKKyAgICAgICAgU1lOQ19G
QUlMX1dJVEhfUFJFREVGSU5FRF9FUlJPUihXaW5kb3dOb3RGb3VuZCk7CiAKICAgICBpZiAoIW1f
Y2xpZW50LT5pc1Nob3dpbmdKYXZhU2NyaXB0RGlhbG9nT25QYWdlKCp0aGlzLCAqcGFnZSkpCi0g
ICAgICAgIEZBSUxfV0lUSF9QUkVERUZJTkVEX0VSUk9SKE5vSmF2YVNjcmlwdERpYWxvZyk7Cisg
ICAgICAgIFNZTkNfRkFJTF9XSVRIX1BSRURFRklORURfRVJST1IoTm9KYXZhU2NyaXB0RGlhbG9n
KTsKIAogICAgIC8vIMKnMTguNCBTZW5kIEFsZXJ0IFRleHQuCiAgICAgLy8gaHR0cHM6Ly93M2Mu
Z2l0aHViLmlvL3dlYmRyaXZlci93ZWJkcml2ZXItc3BlYy5odG1sI3NlbmQtYWxlcnQtdGV4dApA
QCAtMTAzMSwxMyArMTAzMSwxMyBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpzZXRVc2Vy
SW5wdXRGb3JDdXJyZW50SmF2YVNjcmlwdFByb21wdChJbnNwZWN0b3I6OkVycgogICAgIGNhc2Ug
QVBJOjpBdXRvbWF0aW9uU2Vzc2lvbkNsaWVudDo6SmF2YVNjcmlwdERpYWxvZ1R5cGU6OkFsZXJ0
OgogICAgIGNhc2UgQVBJOjpBdXRvbWF0aW9uU2Vzc2lvbkNsaWVudDo6SmF2YVNjcmlwdERpYWxv
Z1R5cGU6OkNvbmZpcm06CiAgICAgICAgIC8vIFJldHVybiBlcnJvciB3aXRoIGVycm9yIGNvZGUg
ZWxlbWVudCBub3QgaW50ZXJhY3RhYmxlLgotICAgICAgICBGQUlMX1dJVEhfUFJFREVGSU5FRF9F
UlJPUihFbGVtZW50Tm90SW50ZXJhY3RhYmxlKTsKKyAgICAgICAgU1lOQ19GQUlMX1dJVEhfUFJF
REVGSU5FRF9FUlJPUihFbGVtZW50Tm90SW50ZXJhY3RhYmxlKTsKICAgICBjYXNlIEFQSTo6QXV0
b21hdGlvblNlc3Npb25DbGllbnQ6OkphdmFTY3JpcHREaWFsb2dUeXBlOjpQcm9tcHQ6CiAgICAg
ICAgIC8vIERvIG5vdGhpbmcuCiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQVBJOjpBdXRvbWF0
aW9uU2Vzc2lvbkNsaWVudDo6SmF2YVNjcmlwdERpYWxvZ1R5cGU6OkJlZm9yZVVubG9hZENvbmZp
cm06CiAgICAgICAgIC8vIFJldHVybiBlcnJvciB3aXRoIGVycm9yIGNvZGUgdW5zdXBwb3J0ZWQg
b3BlcmF0aW9uLgotICAgICAgICBGQUlMX1dJVEhfUFJFREVGSU5FRF9FUlJPUihOb3RJbXBsZW1l
bnRlZCk7CisgICAgICAgIFNZTkNfRkFJTF9XSVRIX1BSRURFRklORURfRVJST1IoTm90SW1wbGVt
ZW50ZWQpOwogICAgIH0KIAogICAgIG1fY2xpZW50LT5zZXRVc2VySW5wdXRGb3JDdXJyZW50SmF2
YVNjcmlwdFByb21wdE9uUGFnZSgqdGhpcywgKnBhZ2UsIHByb21wdFZhbHVlKTsKQEAgLTEwNTEs
NyArMTA1MSw3IEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OnNldEZpbGVzVG9TZWxlY3RG
b3JGaWxlVXBsb2FkKEVycm9yU3RyaW5nJiBlcnJvclN0cmluCiAgICAgZm9yIChhdXRvIGl0ZW0g
OiBmaWxlbmFtZXMpIHsKICAgICAgICAgU3RyaW5nIGZpbGVuYW1lOwogICAgICAgICBpZiAoIWl0
ZW0tPmFzU3RyaW5nKGZpbGVuYW1lKSkKLSAgICAgICAgICAgIEZBSUxfV0lUSF9QUkVERUZJTkVE
X0VSUk9SKEludGVybmFsRXJyb3IpOworICAgICAgICAgICAgU1lOQ19GQUlMX1dJVEhfUFJFREVG
SU5FRF9FUlJPUihJbnRlcm5hbEVycm9yKTsKIAogICAgICAgICBuZXdGaWxlTGlzdC5hcHBlbmQo
ZmlsZW5hbWUpOwogICAgIH0KQEAgLTEwNTksMTEgKzEwNTksMTEgQEAgdm9pZCBXZWJBdXRvbWF0
aW9uU2Vzc2lvbjo6c2V0RmlsZXNUb1NlbGVjdEZvckZpbGVVcGxvYWQoRXJyb3JTdHJpbmcmIGVy
cm9yU3RyaW4KICAgICBtX2ZpbGVzVG9TZWxlY3RGb3JGaWxlVXBsb2FkLnN3YXAobmV3RmlsZUxp
c3QpOwogfQogCi12b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpnZXRBbGxDb29raWVzKEVycm9y
U3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBicm93c2luZ0NvbnRleHRIYW5kbGUs
IFJlZjxHZXRBbGxDb29raWVzQ2FsbGJhY2s+JiYgY2FsbGJhY2spCit2b2lkIFdlYkF1dG9tYXRp
b25TZXNzaW9uOjpnZXRBbGxDb29raWVzKGNvbnN0IFN0cmluZyYgYnJvd3NpbmdDb250ZXh0SGFu
ZGxlLCBSZWY8R2V0QWxsQ29va2llc0NhbGxiYWNrPiYmIGNhbGxiYWNrKQogewogICAgIFdlYlBh
Z2VQcm94eSogcGFnZSA9IHdlYlBhZ2VQcm94eUZvckhhbmRsZShicm93c2luZ0NvbnRleHRIYW5k
bGUpOwogICAgIGlmICghcGFnZSkKLSAgICAgICAgRkFJTF9XSVRIX1BSRURFRklORURfRVJST1Io
V2luZG93Tm90Rm91bmQpOworICAgICAgICBBU1lOQ19GQUlMX1dJVEhfUFJFREVGSU5FRF9FUlJP
UihXaW5kb3dOb3RGb3VuZCk7CiAKICAgICAvLyBBbHdheXMgc2VuZCB0aGUgbWFpbiBmcmFtZSBJ
RCBhcyAwIHNvIGl0IGlzIHJlc29sdmVkIG9uIHRoZSBXZWJQcm9jZXNzIHNpZGUuIFRoaXMgYXZv
aWRzIGEgcmFjZSB3aGVuIHBhZ2UtPm1haW5GcmFtZSgpIGlzIG51bGwgc3RpbGwuCiAgICAgY29u
c3QgdWludDY0X3QgbWFpbkZyYW1lSUQgPSAwOwpAQCAtMTExMywxMSArMTExMywxMSBAQCB2b2lk
IFdlYkF1dG9tYXRpb25TZXNzaW9uOjpkaWRHZXRDb29raWVzRm9yRnJhbWUodWludDY0X3QgY2Fs
bGJhY2tJRCwgVmVjdG9yPFdlYgogICAgIGNhbGxiYWNrLT5zZW5kU3VjY2VzcyhidWlsZEFycmF5
Rm9yQ29va2llcyhjb29raWVzKSk7CiB9CiAKLXZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OmRl
bGV0ZVNpbmdsZUNvb2tpZShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYg
YnJvd3NpbmdDb250ZXh0SGFuZGxlLCBjb25zdCBTdHJpbmcmIGNvb2tpZU5hbWUsIFJlZjxEZWxl
dGVTaW5nbGVDb29raWVDYWxsYmFjaz4mJiBjYWxsYmFjaykKK3ZvaWQgV2ViQXV0b21hdGlvblNl
c3Npb246OmRlbGV0ZVNpbmdsZUNvb2tpZShjb25zdCBTdHJpbmcmIGJyb3dzaW5nQ29udGV4dEhh
bmRsZSwgY29uc3QgU3RyaW5nJiBjb29raWVOYW1lLCBSZWY8RGVsZXRlU2luZ2xlQ29va2llQ2Fs
bGJhY2s+JiYgY2FsbGJhY2spCiB7CiAgICAgV2ViUGFnZVByb3h5KiBwYWdlID0gd2ViUGFnZVBy
b3h5Rm9ySGFuZGxlKGJyb3dzaW5nQ29udGV4dEhhbmRsZSk7CiAgICAgaWYgKCFwYWdlKQotICAg
ICAgICBGQUlMX1dJVEhfUFJFREVGSU5FRF9FUlJPUihXaW5kb3dOb3RGb3VuZCk7CisgICAgICAg
IEFTWU5DX0ZBSUxfV0lUSF9QUkVERUZJTkVEX0VSUk9SKFdpbmRvd05vdEZvdW5kKTsKIAogICAg
IC8vIEFsd2F5cyBzZW5kIHRoZSBtYWluIGZyYW1lIElEIGFzIDAgc28gaXQgaXMgcmVzb2x2ZWQg
b24gdGhlIFdlYlByb2Nlc3Mgc2lkZS4gVGhpcyBhdm9pZHMgYSByYWNlIHdoZW4gcGFnZS0+bWFp
bkZyYW1lKCkgaXMgbnVsbCBzdGlsbC4KICAgICBjb25zdCB1aW50NjRfdCBtYWluRnJhbWVJRCA9
IDA7CkBAIC0xMTQyLDExICsxMTQyLDExIEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OmRp
ZERlbGV0ZUNvb2tpZSh1aW50NjRfdCBjYWxsYmFja0lELCBjb25zdCBTdHJpbmcmIGVyCiAgICAg
Y2FsbGJhY2stPnNlbmRTdWNjZXNzKCk7CiB9CiAKLXZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246
OmFkZFNpbmdsZUNvb2tpZShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYg
YnJvd3NpbmdDb250ZXh0SGFuZGxlLCBjb25zdCBKU09OOjpPYmplY3QmIGNvb2tpZU9iamVjdCwg
UmVmPEFkZFNpbmdsZUNvb2tpZUNhbGxiYWNrPiYmIGNhbGxiYWNrKQordm9pZCBXZWJBdXRvbWF0
aW9uU2Vzc2lvbjo6YWRkU2luZ2xlQ29va2llKGNvbnN0IFN0cmluZyYgYnJvd3NpbmdDb250ZXh0
SGFuZGxlLCBjb25zdCBKU09OOjpPYmplY3QmIGNvb2tpZU9iamVjdCwgUmVmPEFkZFNpbmdsZUNv
b2tpZUNhbGxiYWNrPiYmIGNhbGxiYWNrKQogewogICAgIFdlYlBhZ2VQcm94eSogcGFnZSA9IHdl
YlBhZ2VQcm94eUZvckhhbmRsZShicm93c2luZ0NvbnRleHRIYW5kbGUpOwogICAgIGlmICghcGFn
ZSkKLSAgICAgICAgRkFJTF9XSVRIX1BSRURFRklORURfRVJST1IoV2luZG93Tm90Rm91bmQpOwor
ICAgICAgICBBU1lOQ19GQUlMX1dJVEhfUFJFREVGSU5FRF9FUlJPUihXaW5kb3dOb3RGb3VuZCk7
CiAKICAgICBXZWJDb3JlOjpVUkwgYWN0aXZlVVJMID0gV2ViQ29yZTo6VVJMKFdlYkNvcmU6OlVS
TCgpLCBwYWdlLT5wYWdlTG9hZFN0YXRlKCkuYWN0aXZlVVJMKCkpOwogICAgIEFTU0VSVChhY3Rp
dmVVUkwuaXNWYWxpZCgpKTsKQEAgLTExNTQsMTQgKzExNTQsMTQgQEAgdm9pZCBXZWJBdXRvbWF0
aW9uU2Vzc2lvbjo6YWRkU2luZ2xlQ29va2llKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29u
c3QgU3RyaW4KICAgICBXZWJDb3JlOjpDb29raWUgY29va2llOwogCiAgICAgaWYgKCFjb29raWVP
YmplY3QuZ2V0U3RyaW5nKFdURjo6QVNDSUlMaXRlcmFsKCJuYW1lIiksIGNvb2tpZS5uYW1lKSkK
LSAgICAgICAgRkFJTF9XSVRIX1BSRURFRklORURfRVJST1JfQU5EX0RFVEFJTFMoTWlzc2luZ1Bh
cmFtZXRlciwgIlRoZSBwYXJhbWV0ZXIgJ25hbWUnIHdhcyBub3QgZm91bmQuIik7CisgICAgICAg
IEFTWU5DX0ZBSUxfV0lUSF9QUkVERUZJTkVEX0VSUk9SX0FORF9ERVRBSUxTKE1pc3NpbmdQYXJh
bWV0ZXIsICJUaGUgcGFyYW1ldGVyICduYW1lJyB3YXMgbm90IGZvdW5kLiIpOwogCiAgICAgaWYg
KCFjb29raWVPYmplY3QuZ2V0U3RyaW5nKFdURjo6QVNDSUlMaXRlcmFsKCJ2YWx1ZSIpLCBjb29r
aWUudmFsdWUpKQotICAgICAgICBGQUlMX1dJVEhfUFJFREVGSU5FRF9FUlJPUl9BTkRfREVUQUlM
UyhNaXNzaW5nUGFyYW1ldGVyLCAiVGhlIHBhcmFtZXRlciAndmFsdWUnIHdhcyBub3QgZm91bmQu
Iik7CisgICAgICAgIEFTWU5DX0ZBSUxfV0lUSF9QUkVERUZJTkVEX0VSUk9SX0FORF9ERVRBSUxT
KE1pc3NpbmdQYXJhbWV0ZXIsICJUaGUgcGFyYW1ldGVyICd2YWx1ZScgd2FzIG5vdCBmb3VuZC4i
KTsKIAogICAgIFN0cmluZyBkb21haW47CiAgICAgaWYgKCFjb29raWVPYmplY3QuZ2V0U3RyaW5n
KFdURjo6QVNDSUlMaXRlcmFsKCJkb21haW4iKSwgZG9tYWluKSkKLSAgICAgICAgRkFJTF9XSVRI
X1BSRURFRklORURfRVJST1JfQU5EX0RFVEFJTFMoTWlzc2luZ1BhcmFtZXRlciwgIlRoZSBwYXJh
bWV0ZXIgJ2RvbWFpbicgd2FzIG5vdCBmb3VuZC4iKTsKKyAgICAgICAgQVNZTkNfRkFJTF9XSVRI
X1BSRURFRklORURfRVJST1JfQU5EX0RFVEFJTFMoTWlzc2luZ1BhcmFtZXRlciwgIlRoZSBwYXJh
bWV0ZXIgJ2RvbWFpbicgd2FzIG5vdCBmb3VuZC4iKTsKIAogICAgIC8vIEluaGVyaXQgdGhlIGRv
bWFpbi9ob3N0IGZyb20gdGhlIG1haW4gZnJhbWUncyBVUkwgaWYgaXQgaXMgbm90IGV4cGxpY2l0
bHkgc2V0LgogICAgIGlmIChkb21haW4uaXNFbXB0eSgpKQpAQCAtMTE3NSwyMiArMTE3NSwyMiBA
QCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjphZGRTaW5nbGVDb29raWUoRXJyb3JTdHJpbmcm
IGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbgogICAgIGNvb2tpZS5kb21haW4gPSBkb21haW47CiAK
ICAgICBpZiAoIWNvb2tpZU9iamVjdC5nZXRTdHJpbmcoV1RGOjpBU0NJSUxpdGVyYWwoInBhdGgi
KSwgY29va2llLnBhdGgpKQotICAgICAgICBGQUlMX1dJVEhfUFJFREVGSU5FRF9FUlJPUl9BTkRf
REVUQUlMUyhNaXNzaW5nUGFyYW1ldGVyLCAiVGhlIHBhcmFtZXRlciAncGF0aCcgd2FzIG5vdCBm
b3VuZC4iKTsKKyAgICAgICAgQVNZTkNfRkFJTF9XSVRIX1BSRURFRklORURfRVJST1JfQU5EX0RF
VEFJTFMoTWlzc2luZ1BhcmFtZXRlciwgIlRoZSBwYXJhbWV0ZXIgJ3BhdGgnIHdhcyBub3QgZm91
bmQuIik7CiAKICAgICBkb3VibGUgZXhwaXJlczsKICAgICBpZiAoIWNvb2tpZU9iamVjdC5nZXRE
b3VibGUoV1RGOjpBU0NJSUxpdGVyYWwoImV4cGlyZXMiKSwgZXhwaXJlcykpCi0gICAgICAgIEZB
SUxfV0lUSF9QUkVERUZJTkVEX0VSUk9SX0FORF9ERVRBSUxTKE1pc3NpbmdQYXJhbWV0ZXIsICJU
aGUgcGFyYW1ldGVyICdleHBpcmVzJyB3YXMgbm90IGZvdW5kLiIpOworICAgICAgICBBU1lOQ19G
QUlMX1dJVEhfUFJFREVGSU5FRF9FUlJPUl9BTkRfREVUQUlMUyhNaXNzaW5nUGFyYW1ldGVyLCAi
VGhlIHBhcmFtZXRlciAnZXhwaXJlcycgd2FzIG5vdCBmb3VuZC4iKTsKIAogICAgIGNvb2tpZS5l
eHBpcmVzID0gZXhwaXJlcyAqIDEwMDAuMDsKIAogICAgIGlmICghY29va2llT2JqZWN0LmdldEJv
b2xlYW4oV1RGOjpBU0NJSUxpdGVyYWwoInNlY3VyZSIpLCBjb29raWUuc2VjdXJlKSkKLSAgICAg
ICAgRkFJTF9XSVRIX1BSRURFRklORURfRVJST1JfQU5EX0RFVEFJTFMoTWlzc2luZ1BhcmFtZXRl
ciwgIlRoZSBwYXJhbWV0ZXIgJ3NlY3VyZScgd2FzIG5vdCBmb3VuZC4iKTsKKyAgICAgICAgQVNZ
TkNfRkFJTF9XSVRIX1BSRURFRklORURfRVJST1JfQU5EX0RFVEFJTFMoTWlzc2luZ1BhcmFtZXRl
ciwgIlRoZSBwYXJhbWV0ZXIgJ3NlY3VyZScgd2FzIG5vdCBmb3VuZC4iKTsKIAogICAgIGlmICgh
Y29va2llT2JqZWN0LmdldEJvb2xlYW4oV1RGOjpBU0NJSUxpdGVyYWwoInNlc3Npb24iKSwgY29v
a2llLnNlc3Npb24pKQotICAgICAgICBGQUlMX1dJVEhfUFJFREVGSU5FRF9FUlJPUl9BTkRfREVU
QUlMUyhNaXNzaW5nUGFyYW1ldGVyLCAiVGhlIHBhcmFtZXRlciAnc2Vzc2lvbicgd2FzIG5vdCBm
b3VuZC4iKTsKKyAgICAgICAgQVNZTkNfRkFJTF9XSVRIX1BSRURFRklORURfRVJST1JfQU5EX0RF
VEFJTFMoTWlzc2luZ1BhcmFtZXRlciwgIlRoZSBwYXJhbWV0ZXIgJ3Nlc3Npb24nIHdhcyBub3Qg
Zm91bmQuIik7CiAKICAgICBpZiAoIWNvb2tpZU9iamVjdC5nZXRCb29sZWFuKFdURjo6QVNDSUlM
aXRlcmFsKCJodHRwT25seSIpLCBjb29raWUuaHR0cE9ubHkpKQotICAgICAgICBGQUlMX1dJVEhf
UFJFREVGSU5FRF9FUlJPUl9BTkRfREVUQUlMUyhNaXNzaW5nUGFyYW1ldGVyLCAiVGhlIHBhcmFt
ZXRlciAnaHR0cE9ubHknIHdhcyBub3QgZm91bmQuIik7CisgICAgICAgIEFTWU5DX0ZBSUxfV0lU
SF9QUkVERUZJTkVEX0VSUk9SX0FORF9ERVRBSUxTKE1pc3NpbmdQYXJhbWV0ZXIsICJUaGUgcGFy
YW1ldGVyICdodHRwT25seScgd2FzIG5vdCBmb3VuZC4iKTsKIAogICAgIFdlYkNvb2tpZU1hbmFn
ZXJQcm94eSogY29va2llTWFuYWdlciA9IG1fcHJvY2Vzc1Bvb2wtPnN1cHBsZW1lbnQ8V2ViQ29v
a2llTWFuYWdlclByb3h5PigpOwogCkBAIC0xMjA4LDcgKzEyMDgsNyBAQCB2b2lkIFdlYkF1dG9t
YXRpb25TZXNzaW9uOjpkZWxldGVBbGxDb29raWVzKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywg
Y29uc3QgU3RyaQogewogICAgIFdlYlBhZ2VQcm94eSogcGFnZSA9IHdlYlBhZ2VQcm94eUZvckhh
bmRsZShicm93c2luZ0NvbnRleHRIYW5kbGUpOwogICAgIGlmICghcGFnZSkKLSAgICAgICAgRkFJ
TF9XSVRIX1BSRURFRklORURfRVJST1IoV2luZG93Tm90Rm91bmQpOworICAgICAgICBTWU5DX0ZB
SUxfV0lUSF9QUkVERUZJTkVEX0VSUk9SKFdpbmRvd05vdEZvdW5kKTsKIAogICAgIFdlYkNvcmU6
OlVSTCBhY3RpdmVVUkwgPSBXZWJDb3JlOjpVUkwoV2ViQ29yZTo6VVJMKCksIHBhZ2UtPnBhZ2VM
b2FkU3RhdGUoKS5hY3RpdmVVUkwoKSk7CiAgICAgQVNTRVJUKGFjdGl2ZVVSTC5pc1ZhbGlkKCkp
OwpAQCAtMTIzNCwxOSArMTIzNCwxOSBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpzZXRT
ZXNzaW9uUGVybWlzc2lvbnMoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdAogICAgIGZv
ciAoYXV0byBpdCA9IHBlcm1pc3Npb25zLmJlZ2luKCk7IGl0ICE9IHBlcm1pc3Npb25zLmVuZCgp
OyArK2l0KSB7CiAgICAgICAgIFJlZlB0cjxKU09OOjpPYmplY3Q+IHBlcm1pc3Npb247CiAgICAg
ICAgIGlmICghaXQtPmdldCgpLT5hc09iamVjdChwZXJtaXNzaW9uKSkKLSAgICAgICAgICAgIEZB
SUxfV0lUSF9QUkVERUZJTkVEX0VSUk9SX0FORF9ERVRBSUxTKEludmFsaWRQYXJhbWV0ZXIsICJU
aGUgcGFyYW1ldGVyICdwZXJtaXNzaW9ucycgaXMgaW52YWxpZC4iKTsKKyAgICAgICAgICAgIFNZ
TkNfRkFJTF9XSVRIX1BSRURFRklORURfRVJST1JfQU5EX0RFVEFJTFMoSW52YWxpZFBhcmFtZXRl
ciwgIlRoZSBwYXJhbWV0ZXIgJ3Blcm1pc3Npb25zJyBpcyBpbnZhbGlkLiIpOwogCiAgICAgICAg
IFN0cmluZyBwZXJtaXNzaW9uTmFtZTsKICAgICAgICAgaWYgKCFwZXJtaXNzaW9uLT5nZXRTdHJp
bmcoV1RGOjpBU0NJSUxpdGVyYWwoInBlcm1pc3Npb24iKSwgcGVybWlzc2lvbk5hbWUpKQotICAg
ICAgICAgICAgRkFJTF9XSVRIX1BSRURFRklORURfRVJST1JfQU5EX0RFVEFJTFMoSW52YWxpZFBh
cmFtZXRlciwgIlRoZSBwYXJhbWV0ZXIgJ3Blcm1pc3Npb24nIGlzIG1pc3Npbmcgb3IgaW52YWxp
ZC4iKTsKKyAgICAgICAgICAgIFNZTkNfRkFJTF9XSVRIX1BSRURFRklORURfRVJST1JfQU5EX0RF
VEFJTFMoSW52YWxpZFBhcmFtZXRlciwgIlRoZSBwYXJhbWV0ZXIgJ3Blcm1pc3Npb24nIGlzIG1p
c3Npbmcgb3IgaW52YWxpZC4iKTsKIAogICAgICAgICBhdXRvIHBhcnNlZFBlcm1pc3Npb25OYW1l
ID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbkhlbHBlcnM6OnBhcnNlRW51bVZhbHVl
RnJvbVN0cmluZzxJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpTZXNzaW9uUGVybWlz
c2lvbj4ocGVybWlzc2lvbk5hbWUpOwogICAgICAgICBpZiAoIXBhcnNlZFBlcm1pc3Npb25OYW1l
KQotICAgICAgICAgICAgRkFJTF9XSVRIX1BSRURFRklORURfRVJST1JfQU5EX0RFVEFJTFMoSW52
YWxpZFBhcmFtZXRlciwgIlRoZSBwYXJhbWV0ZXIgJ3Blcm1pc3Npb24nIGhhcyBhbiB1bmtub3du
IHZhbHVlLiIpOworICAgICAgICAgICAgU1lOQ19GQUlMX1dJVEhfUFJFREVGSU5FRF9FUlJPUl9B
TkRfREVUQUlMUyhJbnZhbGlkUGFyYW1ldGVyLCAiVGhlIHBhcmFtZXRlciAncGVybWlzc2lvbicg
aGFzIGFuIHVua25vd24gdmFsdWUuIik7CiAKICAgICAgICAgYm9vbCBwZXJtaXNzaW9uVmFsdWU7
CiAgICAgICAgIGlmICghcGVybWlzc2lvbi0+Z2V0Qm9vbGVhbihXVEY6OkFTQ0lJTGl0ZXJhbCgi
dmFsdWUiKSwgcGVybWlzc2lvblZhbHVlKSkKLSAgICAgICAgICAgIEZBSUxfV0lUSF9QUkVERUZJ
TkVEX0VSUk9SX0FORF9ERVRBSUxTKEludmFsaWRQYXJhbWV0ZXIsICJUaGUgcGFyYW1ldGVyICd2
YWx1ZScgaXMgbWlzc2luZyBvciBpbnZhbGlkLiIpOworICAgICAgICAgICAgU1lOQ19GQUlMX1dJ
VEhfUFJFREVGSU5FRF9FUlJPUl9BTkRfREVUQUlMUyhJbnZhbGlkUGFyYW1ldGVyLCAiVGhlIHBh
cmFtZXRlciAndmFsdWUnIGlzIG1pc3Npbmcgb3IgaW52YWxpZC4iKTsKIAogICAgICAgICBzd2l0
Y2ggKHBhcnNlZFBlcm1pc3Npb25OYW1lLnZhbHVlKCkpIHsKICAgICAgICAgY2FzZSBJbnNwZWN0
b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpTZXNzaW9uUGVybWlzc2lvbjo6R2V0VXNlck1lZGlh
OgpAQCAtMTI4MSwzMiArMTI4MSwzMiBAQCBzdGF0aWMgV2ViRXZlbnQ6Ok1vZGlmaWVycyBwcm90
b2NvbE1vZGlmaWVyVG9XZWJFdmVudE1vZGlmaWVyKEluc3BlY3Rvcjo6UHJvdG9jbwogfQogI2Vu
ZGlmIC8vIFVTRShBUFBLSVQpIHx8IFBMQVRGT1JNKEdUSykKIAotdm9pZCBXZWJBdXRvbWF0aW9u
U2Vzc2lvbjo6cGVyZm9ybU1vdXNlSW50ZXJhY3Rpb24oSW5zcGVjdG9yOjpFcnJvclN0cmluZyYg
ZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgaGFuZGxlLCBjb25zdCBKU09OOjpPYmplY3QmIHJl
cXVlc3RlZFBvc2l0aW9uT2JqZWN0LCBjb25zdCBTdHJpbmcmIG1vdXNlQnV0dG9uU3RyaW5nLCBj
b25zdCBTdHJpbmcmIG1vdXNlSW50ZXJhY3Rpb25TdHJpbmcsIGNvbnN0IEpTT046OkFycmF5JiBr
ZXlNb2RpZmllclN0cmluZ3MsIFJlZjxQZXJmb3JtTW91c2VJbnRlcmFjdGlvbkNhbGxiYWNrPiYm
IGNhbGxiYWNrKQordm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6cGVyZm9ybU1vdXNlSW50ZXJh
Y3Rpb24oY29uc3QgU3RyaW5nJiBoYW5kbGUsIGNvbnN0IEpTT046Ok9iamVjdCYgcmVxdWVzdGVk
UG9zaXRpb25PYmplY3QsIGNvbnN0IFN0cmluZyYgbW91c2VCdXR0b25TdHJpbmcsIGNvbnN0IFN0
cmluZyYgbW91c2VJbnRlcmFjdGlvblN0cmluZywgY29uc3QgSlNPTjo6QXJyYXkmIGtleU1vZGlm
aWVyU3RyaW5ncywgUmVmPFBlcmZvcm1Nb3VzZUludGVyYWN0aW9uQ2FsbGJhY2s+JiYgY2FsbGJh
Y2spCiB7CiAjaWYgIVVTRShBUFBLSVQpICYmICFQTEFURk9STShHVEspCi0gICAgRkFJTF9XSVRI
X1BSRURFRklORURfRVJST1IoTm90SW1wbGVtZW50ZWQpOworICAgIEFTWU5DX0ZBSUxfV0lUSF9Q
UkVERUZJTkVEX0VSUk9SKE5vdEltcGxlbWVudGVkKTsKICNlbHNlCiAgICAgV2ViUGFnZVByb3h5
KiBwYWdlID0gd2ViUGFnZVByb3h5Rm9ySGFuZGxlKGhhbmRsZSk7CiAgICAgaWYgKCFwYWdlKQot
ICAgICAgICBGQUlMX1dJVEhfUFJFREVGSU5FRF9FUlJPUihXaW5kb3dOb3RGb3VuZCk7CisgICAg
ICAgIEFTWU5DX0ZBSUxfV0lUSF9QUkVERUZJTkVEX0VSUk9SKFdpbmRvd05vdEZvdW5kKTsKIAog
ICAgIGZsb2F0IHg7CiAgICAgaWYgKCFyZXF1ZXN0ZWRQb3NpdGlvbk9iamVjdC5nZXREb3VibGUo
V1RGOjpBU0NJSUxpdGVyYWwoIngiKSwgeCkpCi0gICAgICAgIEZBSUxfV0lUSF9QUkVERUZJTkVE
X0VSUk9SX0FORF9ERVRBSUxTKE1pc3NpbmdQYXJhbWV0ZXIsICJUaGUgcGFyYW1ldGVyICd4JyB3
YXMgbm90IGZvdW5kLiIpOworICAgICAgICBBU1lOQ19GQUlMX1dJVEhfUFJFREVGSU5FRF9FUlJP
Ul9BTkRfREVUQUlMUyhNaXNzaW5nUGFyYW1ldGVyLCAiVGhlIHBhcmFtZXRlciAneCcgd2FzIG5v
dCBmb3VuZC4iKTsKIAogICAgIGZsb2F0IHk7CiAgICAgaWYgKCFyZXF1ZXN0ZWRQb3NpdGlvbk9i
amVjdC5nZXREb3VibGUoV1RGOjpBU0NJSUxpdGVyYWwoInkiKSwgeSkpCi0gICAgICAgIEZBSUxf
V0lUSF9QUkVERUZJTkVEX0VSUk9SX0FORF9ERVRBSUxTKE1pc3NpbmdQYXJhbWV0ZXIsICJUaGUg
cGFyYW1ldGVyICd5JyB3YXMgbm90IGZvdW5kLiIpOworICAgICAgICBBU1lOQ19GQUlMX1dJVEhf
UFJFREVGSU5FRF9FUlJPUl9BTkRfREVUQUlMUyhNaXNzaW5nUGFyYW1ldGVyLCAiVGhlIHBhcmFt
ZXRlciAneScgd2FzIG5vdCBmb3VuZC4iKTsKIAogICAgIFdlYkV2ZW50OjpNb2RpZmllcnMga2V5
TW9kaWZpZXJzID0gKFdlYkV2ZW50OjpNb2RpZmllcnMpMDsKICAgICBmb3IgKGF1dG8gaXQgPSBr
ZXlNb2RpZmllclN0cmluZ3MuYmVnaW4oKTsgaXQgIT0ga2V5TW9kaWZpZXJTdHJpbmdzLmVuZCgp
OyArK2l0KSB7CiAgICAgICAgIFN0cmluZyBtb2RpZmllclN0cmluZzsKICAgICAgICAgaWYgKCFp
dC0+Z2V0KCktPmFzU3RyaW5nKG1vZGlmaWVyU3RyaW5nKSkKLSAgICAgICAgICAgIEZBSUxfV0lU
SF9QUkVERUZJTkVEX0VSUk9SX0FORF9ERVRBSUxTKEludmFsaWRQYXJhbWV0ZXIsICJUaGUgcGFy
YW1ldGVyICdtb2RpZmllcnMnIGlzIGludmFsaWQuIik7CisgICAgICAgICAgICBBU1lOQ19GQUlM
X1dJVEhfUFJFREVGSU5FRF9FUlJPUl9BTkRfREVUQUlMUyhJbnZhbGlkUGFyYW1ldGVyLCAiVGhl
IHBhcmFtZXRlciAnbW9kaWZpZXJzJyBpcyBpbnZhbGlkLiIpOwogCiAgICAgICAgIGF1dG8gcGFy
c2VkTW9kaWZpZXIgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uSGVscGVyczo6cGFy
c2VFbnVtVmFsdWVGcm9tU3RyaW5nPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246Oktl
eU1vZGlmaWVyPihtb2RpZmllclN0cmluZyk7CiAgICAgICAgIGlmICghcGFyc2VkTW9kaWZpZXIp
Ci0gICAgICAgICAgICBGQUlMX1dJVEhfUFJFREVGSU5FRF9FUlJPUl9BTkRfREVUQUlMUyhJbnZh
bGlkUGFyYW1ldGVyLCAiQSBtb2RpZmllciBpbiB0aGUgJ21vZGlmaWVycycgYXJyYXkgaXMgaW52
YWxpZC4iKTsKKyAgICAgICAgICAgIEFTWU5DX0ZBSUxfV0lUSF9QUkVERUZJTkVEX0VSUk9SX0FO
RF9ERVRBSUxTKEludmFsaWRQYXJhbWV0ZXIsICJBIG1vZGlmaWVyIGluIHRoZSAnbW9kaWZpZXJz
JyBhcnJheSBpcyBpbnZhbGlkLiIpOwogICAgICAgICBXZWJFdmVudDo6TW9kaWZpZXJzIGVudW1W
YWx1ZSA9IHByb3RvY29sTW9kaWZpZXJUb1dlYkV2ZW50TW9kaWZpZXIocGFyc2VkTW9kaWZpZXIu
dmFsdWUoKSk7CiAgICAgICAgIGtleU1vZGlmaWVycyA9IChXZWJFdmVudDo6TW9kaWZpZXJzKShl
bnVtVmFsdWUgfCBrZXlNb2RpZmllcnMpOwogICAgIH0KQEAgLTEzMjAsMTEgKzEzMjAsMTEgQEAg
dm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6cGVyZm9ybU1vdXNlSW50ZXJhY3Rpb24oSW5zcGVj
dG9yOjpFcnJvclN0cmluZyYgZXJyb3IKIAogICAgICAgICBhdXRvIHBhcnNlZEludGVyYWN0aW9u
ID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbkhlbHBlcnM6OnBhcnNlRW51bVZhbHVl
RnJvbVN0cmluZzxJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpNb3VzZUludGVyYWN0
aW9uPihtb3VzZUludGVyYWN0aW9uU3RyaW5nKTsKICAgICAgICAgaWYgKCFwYXJzZWRJbnRlcmFj
dGlvbikKLSAgICAgICAgICAgIHJldHVybiBjYWxsYmFjay0+c2VuZEZhaWx1cmUoU1RSSU5HX0ZP
Ul9QUkVERUZJTkVEX0VSUk9SX05BTUVfQU5EX0RFVEFJTFMoSW52YWxpZFBhcmFtZXRlciwgIlRo
ZSBwYXJhbWV0ZXIgJ2ludGVyYWN0aW9uJyBpcyBpbnZhbGlkLiIpKTsKKyAgICAgICAgICAgIEFT
WU5DX0ZBSUxfV0lUSF9QUkVERUZJTkVEX0VSUk9SX0FORF9ERVRBSUxTKEludmFsaWRQYXJhbWV0
ZXIsICJUaGUgcGFyYW1ldGVyICdpbnRlcmFjdGlvbicgaXMgaW52YWxpZC4iKTsKIAogICAgICAg
ICBhdXRvIHBhcnNlZEJ1dHRvbiA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb25IZWxw
ZXJzOjpwYXJzZUVudW1WYWx1ZUZyb21TdHJpbmc8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21h
dGlvbjo6TW91c2VCdXR0b24+KG1vdXNlQnV0dG9uU3RyaW5nKTsKICAgICAgICAgaWYgKCFwYXJz
ZWRCdXR0b24pCi0gICAgICAgICAgICByZXR1cm4gY2FsbGJhY2stPnNlbmRGYWlsdXJlKFNUUklO
R19GT1JfUFJFREVGSU5FRF9FUlJPUl9OQU1FX0FORF9ERVRBSUxTKEludmFsaWRQYXJhbWV0ZXIs
ICJUaGUgcGFyYW1ldGVyICdidXR0b24nIGlzIGludmFsaWQuIikpOworICAgICAgICAgICAgQVNZ
TkNfRkFJTF9XSVRIX1BSRURFRklORURfRVJST1JfQU5EX0RFVEFJTFMoSW52YWxpZFBhcmFtZXRl
ciwgIlRoZSBwYXJhbWV0ZXIgJ2J1dHRvbicgaXMgaW52YWxpZC4iKTsKIAogICAgICAgICBwbGF0
Zm9ybVNpbXVsYXRlTW91c2VJbnRlcmFjdGlvbihwYWdlLCB2aWV3UG9zaXRpb24sIHBhcnNlZElu
dGVyYWN0aW9uLnZhbHVlKCksIHBhcnNlZEJ1dHRvbi52YWx1ZSgpLCBrZXlNb2RpZmllcnMpOwog
CkBAIC0xMzM2LDE3ICsxMzM2LDE3IEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OnBlcmZv
cm1Nb3VzZUludGVyYWN0aW9uKEluc3BlY3Rvcjo6RXJyb3JTdHJpbmcmIGVycm9yCiAjZW5kaWYg
Ly8gVVNFKEFQUEtJVCkgfHwgUExBVEZPUk0oR1RLKQogfQogCi12b2lkIFdlYkF1dG9tYXRpb25T
ZXNzaW9uOjpwZXJmb3JtS2V5Ym9hcmRJbnRlcmFjdGlvbnMoRXJyb3JTdHJpbmcmIGVycm9yU3Ry
aW5nLCBjb25zdCBTdHJpbmcmIGhhbmRsZSwgY29uc3QgSlNPTjo6QXJyYXkmIGludGVyYWN0aW9u
cywgUmVmPFBlcmZvcm1LZXlib2FyZEludGVyYWN0aW9uc0NhbGxiYWNrPiYmIGNhbGxiYWNrKQor
dm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6cGVyZm9ybUtleWJvYXJkSW50ZXJhY3Rpb25zKGNv
bnN0IFN0cmluZyYgaGFuZGxlLCBjb25zdCBKU09OOjpBcnJheSYgaW50ZXJhY3Rpb25zLCBSZWY8
UGVyZm9ybUtleWJvYXJkSW50ZXJhY3Rpb25zQ2FsbGJhY2s+JiYgY2FsbGJhY2spCiB7CiAjaWYg
IVBMQVRGT1JNKENPQ09BKSAmJiAhUExBVEZPUk0oR1RLKQotICAgIEZBSUxfV0lUSF9QUkVERUZJ
TkVEX0VSUk9SKE5vdEltcGxlbWVudGVkKTsKKyAgICBBU1lOQ19GQUlMX1dJVEhfUFJFREVGSU5F
RF9FUlJPUihOb3RJbXBsZW1lbnRlZCk7CiAjZWxzZQogICAgIFdlYlBhZ2VQcm94eSogcGFnZSA9
IHdlYlBhZ2VQcm94eUZvckhhbmRsZShoYW5kbGUpOwogICAgIGlmICghcGFnZSkKLSAgICAgICAg
RkFJTF9XSVRIX1BSRURFRklORURfRVJST1IoV2luZG93Tm90Rm91bmQpOworICAgICAgICBBU1lO
Q19GQUlMX1dJVEhfUFJFREVGSU5FRF9FUlJPUihXaW5kb3dOb3RGb3VuZCk7CiAKICAgICBpZiAo
IWludGVyYWN0aW9ucy5sZW5ndGgoKSkKLSAgICAgICAgRkFJTF9XSVRIX1BSRURFRklORURfRVJS
T1JfQU5EX0RFVEFJTFMoSW52YWxpZFBhcmFtZXRlciwgIlRoZSBwYXJhbWV0ZXIgJ2ludGVyYWN0
aW9ucycgd2FzIG5vdCBmb3VuZCBvciBlbXB0eS4iKTsKKyAgICAgICAgQVNZTkNfRkFJTF9XSVRI
X1BSRURFRklORURfRVJST1JfQU5EX0RFVEFJTFMoSW52YWxpZFBhcmFtZXRlciwgIlRoZSBwYXJh
bWV0ZXIgJ2ludGVyYWN0aW9ucycgd2FzIG5vdCBmb3VuZCBvciBlbXB0eS4iKTsKIAogICAgIC8v
IFZhbGlkYXRlIGFsbCBvZiB0aGUgcGFyYW1ldGVycyBiZWZvcmUgcGVyZm9ybWluZyBhbnkgaW50
ZXJhY3Rpb25zIHdpdGggdGhlIGJyb3dzaW5nIGNvbnRleHQgdW5kZXIgdGVzdC4KICAgICBWZWN0
b3I8V1RGOjpGdW5jdGlvbjx2b2lkKCk+PiBhY3Rpb25zVG9QZXJmb3JtOwpAQCAtMTM1NSwyMSAr
MTM1NSwyMSBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpwZXJmb3JtS2V5Ym9hcmRJbnRl
cmFjdGlvbnMoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLAogICAgIGZvciAoYXV0byBpbnRlcmFj
dGlvbiA6IGludGVyYWN0aW9ucykgewogICAgICAgICBSZWZQdHI8SlNPTjo6T2JqZWN0PiBpbnRl
cmFjdGlvbk9iamVjdDsKICAgICAgICAgaWYgKCFpbnRlcmFjdGlvbi0+YXNPYmplY3QoaW50ZXJh
Y3Rpb25PYmplY3QpKQotICAgICAgICAgICAgRkFJTF9XSVRIX1BSRURFRklORURfRVJST1JfQU5E
X0RFVEFJTFMoSW52YWxpZFBhcmFtZXRlciwgIkFuIGludGVyYWN0aW9uIGluIHRoZSAnaW50ZXJh
Y3Rpb25zJyBwYXJhbWV0ZXIgd2FzIGludmFsaWQuIik7CisgICAgICAgICAgICBBU1lOQ19GQUlM
X1dJVEhfUFJFREVGSU5FRF9FUlJPUl9BTkRfREVUQUlMUyhJbnZhbGlkUGFyYW1ldGVyLCAiQW4g
aW50ZXJhY3Rpb24gaW4gdGhlICdpbnRlcmFjdGlvbnMnIHBhcmFtZXRlciB3YXMgaW52YWxpZC4i
KTsKIAogICAgICAgICBTdHJpbmcgaW50ZXJhY3Rpb25UeXBlU3RyaW5nOwogICAgICAgICBpZiAo
IWludGVyYWN0aW9uT2JqZWN0LT5nZXRTdHJpbmcoQVNDSUlMaXRlcmFsKCJ0eXBlIiksIGludGVy
YWN0aW9uVHlwZVN0cmluZykpCi0gICAgICAgICAgICBGQUlMX1dJVEhfUFJFREVGSU5FRF9FUlJP
Ul9BTkRfREVUQUlMUyhJbnZhbGlkUGFyYW1ldGVyLCAiQW4gaW50ZXJhY3Rpb24gaW4gdGhlICdp
bnRlcmFjdGlvbnMnIHBhcmFtZXRlciBpcyBtaXNzaW5nIHRoZSAndHlwZScga2V5LiIpOworICAg
ICAgICAgICAgQVNZTkNfRkFJTF9XSVRIX1BSRURFRklORURfRVJST1JfQU5EX0RFVEFJTFMoSW52
YWxpZFBhcmFtZXRlciwgIkFuIGludGVyYWN0aW9uIGluIHRoZSAnaW50ZXJhY3Rpb25zJyBwYXJh
bWV0ZXIgaXMgbWlzc2luZyB0aGUgJ3R5cGUnIGtleS4iKTsKICAgICAgICAgYXV0byBpbnRlcmFj
dGlvblR5cGUgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uSGVscGVyczo6cGFyc2VF
bnVtVmFsdWVGcm9tU3RyaW5nPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OktleWJv
YXJkSW50ZXJhY3Rpb25UeXBlPihpbnRlcmFjdGlvblR5cGVTdHJpbmcpOwogICAgICAgICBpZiAo
IWludGVyYWN0aW9uVHlwZSkKLSAgICAgICAgICAgIEZBSUxfV0lUSF9QUkVERUZJTkVEX0VSUk9S
X0FORF9ERVRBSUxTKEludmFsaWRQYXJhbWV0ZXIsICJBbiBpbnRlcmFjdGlvbiBpbiB0aGUgJ2lu
dGVyYWN0aW9ucycgcGFyYW1ldGVyIGhhcyBhbiBpbnZhbGlkICd0eXBlJyBrZXkuIik7CisgICAg
ICAgICAgICBBU1lOQ19GQUlMX1dJVEhfUFJFREVGSU5FRF9FUlJPUl9BTkRfREVUQUlMUyhJbnZh
bGlkUGFyYW1ldGVyLCAiQW4gaW50ZXJhY3Rpb24gaW4gdGhlICdpbnRlcmFjdGlvbnMnIHBhcmFt
ZXRlciBoYXMgYW4gaW52YWxpZCAndHlwZScga2V5LiIpOwogCiAgICAgICAgIFN0cmluZyB2aXJ0
dWFsS2V5U3RyaW5nOwogICAgICAgICBib29sIGZvdW5kVmlydHVhbEtleSA9IGludGVyYWN0aW9u
T2JqZWN0LT5nZXRTdHJpbmcoQVNDSUlMaXRlcmFsKCJrZXkiKSwgdmlydHVhbEtleVN0cmluZyk7
CiAgICAgICAgIGlmIChmb3VuZFZpcnR1YWxLZXkpIHsKICAgICAgICAgICAgIGF1dG8gdmlydHVh
bEtleSA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb25IZWxwZXJzOjpwYXJzZUVudW1W
YWx1ZUZyb21TdHJpbmc8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtl
eT4odmlydHVhbEtleVN0cmluZyk7CiAgICAgICAgICAgICBpZiAoIXZpcnR1YWxLZXkpCi0gICAg
ICAgICAgICAgICAgRkFJTF9XSVRIX1BSRURFRklORURfRVJST1JfQU5EX0RFVEFJTFMoSW52YWxp
ZFBhcmFtZXRlciwgIkFuIGludGVyYWN0aW9uIGluIHRoZSAnaW50ZXJhY3Rpb25zJyBwYXJhbWV0
ZXIgaGFzIGFuIGludmFsaWQgJ2tleScgdmFsdWUuIik7CisgICAgICAgICAgICAgICAgQVNZTkNf
RkFJTF9XSVRIX1BSRURFRklORURfRVJST1JfQU5EX0RFVEFJTFMoSW52YWxpZFBhcmFtZXRlciwg
IkFuIGludGVyYWN0aW9uIGluIHRoZSAnaW50ZXJhY3Rpb25zJyBwYXJhbWV0ZXIgaGFzIGFuIGlu
dmFsaWQgJ2tleScgdmFsdWUuIik7CiAKICAgICAgICAgICAgIGFjdGlvbnNUb1BlcmZvcm0udW5j
aGVja2VkQXBwZW5kKFt0aGlzLCBwYWdlLCBpbnRlcmFjdGlvblR5cGUsIHZpcnR1YWxLZXldIHsK
ICAgICAgICAgICAgICAgICBwbGF0Zm9ybVNpbXVsYXRlS2V5U3Ryb2tlKCpwYWdlLCBpbnRlcmFj
dGlvblR5cGUudmFsdWUoKSwgdmlydHVhbEtleS52YWx1ZSgpKTsKQEAgLTEzODMsNyArMTM4Myw3
IEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OnBlcmZvcm1LZXlib2FyZEludGVyYWN0aW9u
cyhFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsCiAgICAgICAgICAgICBjYXNlIEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkF1dG9tYXRpb246OktleWJvYXJkSW50ZXJhY3Rpb25UeXBlOjpLZXlQcmVzczoK
ICAgICAgICAgICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6S2V5Ym9h
cmRJbnRlcmFjdGlvblR5cGU6OktleVJlbGVhc2U6CiAgICAgICAgICAgICAgICAgLy8gJ0tleVBy
ZXNzJyBhbmQgJ0tleVJlbGVhc2UnIGFyZSBtZWFudCBmb3IgYSB2aXJ0dWFsIGtleSBhbmQgYXJl
IG5vdCBzdXBwb3J0ZWQgZm9yIGEgc3RyaW5nIChzZXF1ZW5jZSBvZiBjb2RlcG9pbnRzKS4KLSAg
ICAgICAgICAgICAgICBGQUlMX1dJVEhfUFJFREVGSU5FRF9FUlJPUl9BTkRfREVUQUlMUyhJbnZh
bGlkUGFyYW1ldGVyLCAiQW4gaW50ZXJhY3Rpb24gaW4gdGhlICdpbnRlcmFjdGlvbnMnIHBhcmFt
ZXRlciBoYXMgYW4gaW52YWxpZCAna2V5JyB2YWx1ZS4iKTsKKyAgICAgICAgICAgICAgICBBU1lO
Q19GQUlMX1dJVEhfUFJFREVGSU5FRF9FUlJPUl9BTkRfREVUQUlMUyhJbnZhbGlkUGFyYW1ldGVy
LCAiQW4gaW50ZXJhY3Rpb24gaW4gdGhlICdpbnRlcmFjdGlvbnMnIHBhcmFtZXRlciBoYXMgYW4g
aW52YWxpZCAna2V5JyB2YWx1ZS4iKTsKIAogICAgICAgICAgICAgY2FzZSBJbnNwZWN0b3I6OlBy
b3RvY29sOjpBdXRvbWF0aW9uOjpLZXlib2FyZEludGVyYWN0aW9uVHlwZTo6SW5zZXJ0QnlLZXk6
CiAgICAgICAgICAgICAgICAgYWN0aW9uc1RvUGVyZm9ybS51bmNoZWNrZWRBcHBlbmQoW3RoaXMs
IHBhZ2UsIGtleVNlcXVlbmNlXSB7CkBAIC0xMzk0LDEyICsxMzk0LDEyIEBAIHZvaWQgV2ViQXV0
b21hdGlvblNlc3Npb246OnBlcmZvcm1LZXlib2FyZEludGVyYWN0aW9ucyhFcnJvclN0cmluZyYg
ZXJyb3JTdHJpbmcsCiAgICAgICAgIH0KIAogICAgICAgICBpZiAoIWZvdW5kVmlydHVhbEtleSAm
JiAhZm91bmRLZXlTZXF1ZW5jZSkKLSAgICAgICAgICAgIEZBSUxfV0lUSF9QUkVERUZJTkVEX0VS
Uk9SX0FORF9ERVRBSUxTKE1pc3NpbmdQYXJhbWV0ZXIsICJBbiBpbnRlcmFjdGlvbiBpbiB0aGUg
J2ludGVyYWN0aW9ucycgcGFyYW1ldGVyIGlzIG1pc3NpbmcgYm90aCAna2V5JyBhbmQgJ3RleHQn
LiBPbmUgbXVzdCBiZSBwcm92aWRlZC4iKTsKKyAgICAgICAgICAgIEFTWU5DX0ZBSUxfV0lUSF9Q
UkVERUZJTkVEX0VSUk9SX0FORF9ERVRBSUxTKE1pc3NpbmdQYXJhbWV0ZXIsICJBbiBpbnRlcmFj
dGlvbiBpbiB0aGUgJ2ludGVyYWN0aW9ucycgcGFyYW1ldGVyIGlzIG1pc3NpbmcgYm90aCAna2V5
JyBhbmQgJ3RleHQnLiBPbmUgbXVzdCBiZSBwcm92aWRlZC4iKTsKICAgICB9CiAKICAgICBBU1NF
UlQoYWN0aW9uc1RvUGVyZm9ybS5zaXplKCkpOwogICAgIGlmICghYWN0aW9uc1RvUGVyZm9ybS5z
aXplKCkpCi0gICAgICAgIEZBSUxfV0lUSF9QUkVERUZJTkVEX0VSUk9SX0FORF9ERVRBSUxTKElu
dGVybmFsRXJyb3IsICJObyBhY3Rpb25zIHRvIHBlcmZvcm0uIik7CisgICAgICAgIEFTWU5DX0ZB
SUxfV0lUSF9QUkVERUZJTkVEX0VSUk9SX0FORF9ERVRBSUxTKEludGVybmFsRXJyb3IsICJObyBh
Y3Rpb25zIHRvIHBlcmZvcm0uIik7CiAKICAgICBhdXRvJiBjYWxsYmFja0luTWFwID0gbV9wZW5k
aW5nS2V5Ym9hcmRFdmVudHNGbHVzaGVkQ2FsbGJhY2tzUGVyUGFnZS5hZGQocGFnZS0+cGFnZUlE
KCksIG51bGxwdHIpLml0ZXJhdG9yLT52YWx1ZTsKICAgICBpZiAoY2FsbGJhY2tJbk1hcCkKQEAg
LTE0MTQsMTUgKzE0MTQsMTUgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6cGVyZm9ybUtl
eWJvYXJkSW50ZXJhY3Rpb25zKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywKICNlbmRpZiAvLyBQ
TEFURk9STShDT0NPQSkgfHwgUExBVEZPUk0oR1RLKQogfQogCi12b2lkIFdlYkF1dG9tYXRpb25T
ZXNzaW9uOjp0YWtlU2NyZWVuc2hvdChFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0
cmluZyYgaGFuZGxlLCBjb25zdCBTdHJpbmcqIG9wdGlvbmFsRnJhbWVIYW5kbGUsIGNvbnN0IFN0
cmluZyogb3B0aW9uYWxOb2RlSGFuZGxlLCBjb25zdCBib29sKiBvcHRpb25hbFNjcm9sbEludG9W
aWV3SWZOZWVkZWQsIGNvbnN0IGJvb2wqIG9wdGlvbmFsQ2xpcFRvVmlld3BvcnQsIFJlZjxUYWtl
U2NyZWVuc2hvdENhbGxiYWNrPiYmIGNhbGxiYWNrKQordm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lv
bjo6dGFrZVNjcmVlbnNob3QoY29uc3QgU3RyaW5nJiBoYW5kbGUsIGNvbnN0IFN0cmluZyogb3B0
aW9uYWxGcmFtZUhhbmRsZSwgY29uc3QgU3RyaW5nKiBvcHRpb25hbE5vZGVIYW5kbGUsIGNvbnN0
IGJvb2wqIG9wdGlvbmFsU2Nyb2xsSW50b1ZpZXdJZk5lZWRlZCwgY29uc3QgYm9vbCogb3B0aW9u
YWxDbGlwVG9WaWV3cG9ydCwgUmVmPFRha2VTY3JlZW5zaG90Q2FsbGJhY2s+JiYgY2FsbGJhY2sp
CiB7CiAgICAgV2ViUGFnZVByb3h5KiBwYWdlID0gd2ViUGFnZVByb3h5Rm9ySGFuZGxlKGhhbmRs
ZSk7CiAgICAgaWYgKCFwYWdlKQotICAgICAgICBGQUlMX1dJVEhfUFJFREVGSU5FRF9FUlJPUihX
aW5kb3dOb3RGb3VuZCk7CisgICAgICAgIEFTWU5DX0ZBSUxfV0lUSF9QUkVERUZJTkVEX0VSUk9S
KFdpbmRvd05vdEZvdW5kKTsKIAogICAgIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQg
PSB3ZWJGcmFtZUlERm9ySGFuZGxlKG9wdGlvbmFsRnJhbWVIYW5kbGUgPyAqb3B0aW9uYWxGcmFt
ZUhhbmRsZSA6IGVtcHR5U3RyaW5nKCkpOwogICAgIGlmICghZnJhbWVJRCkKLSAgICAgICAgRkFJ
TF9XSVRIX1BSRURFRklORURfRVJST1IoRnJhbWVOb3RGb3VuZCk7CisgICAgICAgIEFTWU5DX0ZB
SUxfV0lUSF9QUkVERUZJTkVEX0VSUk9SKEZyYW1lTm90Rm91bmQpOwogCiAgICAgYm9vbCBzY3Jv
bGxJbnRvVmlld0lmTmVlZGVkID0gb3B0aW9uYWxTY3JvbGxJbnRvVmlld0lmTmVlZGVkID8gKm9w
dGlvbmFsU2Nyb2xsSW50b1ZpZXdJZk5lZWRlZCA6IGZhbHNlOwogICAgIFN0cmluZyBub2RlSGFu
ZGxlID0gb3B0aW9uYWxOb2RlSGFuZGxlID8gKm9wdGlvbmFsTm9kZUhhbmRsZSA6IGVtcHR5U3Ry
aW5nKCk7CkBAIC0xNDQ2LDEwICsxNDQ2LDggQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6
ZGlkVGFrZVNjcmVlbnNob3QodWludDY0X3QgY2FsbGJhY2tJRCwgY29uc3QgU2hhcmVhYmwKICAg
ICB9CiAKICAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gYmFzZTY0RW5jb2RlZERhdGEgPSBwbGF0
Zm9ybUdldEJhc2U2NEVuY29kZWRQTkdEYXRhKGltYWdlRGF0YUhhbmRsZSk7Ci0gICAgaWYgKCFi
YXNlNjRFbmNvZGVkRGF0YSkgewotICAgICAgICBjYWxsYmFjay0+c2VuZEZhaWx1cmUoU1RSSU5H
X0ZPUl9QUkVERUZJTkVEX0VSUk9SX05BTUUoSW50ZXJuYWxFcnJvcikpOwotICAgICAgICByZXR1
cm47Ci0gICAgfQorICAgIGlmICghYmFzZTY0RW5jb2RlZERhdGEpCisgICAgICAgIEFTWU5DX0ZB
SUxfV0lUSF9QUkVERUZJTkVEX0VSUk9SKEludGVybmFsRXJyb3IpOwogCiAgICAgY2FsbGJhY2st
PnNlbmRTdWNjZXNzKGJhc2U2NEVuY29kZWREYXRhLnZhbHVlKCkpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5o
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lv
bi5oCmluZGV4IDRmNTc5ZGJkNmE2YzViZjQzOGNkMDc4ZTdiNDBkMWEwMjE2NDBjZGEuLjU3NDg0
NTkzNTRhY2IwOTdjZjI5NmJmYmNlOGIwYzYwZThiMTNhNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uaAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmgK
QEAgLTExNyw0MSArMTE3LDQxIEBAIHB1YmxpYzoKICAgICAvLyBhbmQgdGhlIC0tcGxhdGZvcm0g
YXJndW1lbnQgcGFzc2VkIHRvIHRoZSBwcm90b2NvbCBiaW5kaW5ncyBnZW5lcmF0b3IuCiAKICAg
ICAvLyBQbGF0Zm9ybTogR2VuZXJpYwotICAgIHZvaWQgZ2V0QnJvd3NpbmdDb250ZXh0cyhJbnNw
ZWN0b3I6OkVycm9yU3RyaW5nJiwgUmVmPEdldEJyb3dzaW5nQ29udGV4dHNDYWxsYmFjaz4mJikg
ZmluYWw7Ci0gICAgdm9pZCBnZXRCcm93c2luZ0NvbnRleHQoSW5zcGVjdG9yOjpFcnJvclN0cmlu
ZyYsIGNvbnN0IFN0cmluZyYsIFJlZjxHZXRCcm93c2luZ0NvbnRleHRDYWxsYmFjaz4mJikgZmlu
YWw7CisgICAgdm9pZCBnZXRCcm93c2luZ0NvbnRleHRzKFJlZjxHZXRCcm93c2luZ0NvbnRleHRz
Q2FsbGJhY2s+JiYpIGZpbmFsOworICAgIHZvaWQgZ2V0QnJvd3NpbmdDb250ZXh0KGNvbnN0IFN0
cmluZyYsIFJlZjxHZXRCcm93c2luZ0NvbnRleHRDYWxsYmFjaz4mJikgZmluYWw7CiAgICAgdm9p
ZCBjcmVhdGVCcm93c2luZ0NvbnRleHQoSW5zcGVjdG9yOjpFcnJvclN0cmluZyYsIFN0cmluZyop
IG92ZXJyaWRlOwogICAgIHZvaWQgY2xvc2VCcm93c2luZ0NvbnRleHQoSW5zcGVjdG9yOjpFcnJv
clN0cmluZyYsIGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwogICAgIHZvaWQgc3dpdGNoVG9Ccm93
c2luZ0NvbnRleHQoSW5zcGVjdG9yOjpFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgYnJvd3Np
bmdDb250ZXh0SGFuZGxlLCBjb25zdCBTdHJpbmcqIG9wdGlvbmFsRnJhbWVIYW5kbGUpIG92ZXJy
aWRlOwotICAgIHZvaWQgc2V0V2luZG93RnJhbWVPZkJyb3dzaW5nQ29udGV4dChJbnNwZWN0b3I6
OkVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBoYW5kbGUsIGNvbnN0IEpTT046Ok9iamVjdCog
b3JpZ2luLCBjb25zdCBKU09OOjpPYmplY3QqIHNpemUsIFJlZjxTZXRXaW5kb3dGcmFtZU9mQnJv
d3NpbmdDb250ZXh0Q2FsbGJhY2s+JiYpIGZpbmFsOwotICAgIHZvaWQgbmF2aWdhdGVCcm93c2lu
Z0NvbnRleHQoSW5zcGVjdG9yOjpFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgaGFuZGxlLCBj
b25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nKiBvcHRpb25hbFBhZ2VMb2FkU3RyYXRlZ3lT
dHJpbmcsIGNvbnN0IGludCogb3B0aW9uYWxQYWdlTG9hZFRpbWVvdXQsIFJlZjxOYXZpZ2F0ZUJy
b3dzaW5nQ29udGV4dENhbGxiYWNrPiYmKSBvdmVycmlkZTsKLSAgICB2b2lkIGdvQmFja0luQnJv
d3NpbmdDb250ZXh0KEluc3BlY3Rvcjo6RXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBjb25z
dCBTdHJpbmcqIG9wdGlvbmFsUGFnZUxvYWRTdHJhdGVneVN0cmluZywgY29uc3QgaW50KiBvcHRp
b25hbFBhZ2VMb2FkVGltZW91dCwgUmVmPEdvQmFja0luQnJvd3NpbmdDb250ZXh0Q2FsbGJhY2s+
JiYpIG92ZXJyaWRlOwotICAgIHZvaWQgZ29Gb3J3YXJkSW5Ccm93c2luZ0NvbnRleHQoSW5zcGVj
dG9yOjpFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyogb3B0aW9uYWxQ
YWdlTG9hZFN0cmF0ZWd5U3RyaW5nLCBjb25zdCBpbnQqIG9wdGlvbmFsUGFnZUxvYWRUaW1lb3V0
LCBSZWY8R29Gb3J3YXJkSW5Ccm93c2luZ0NvbnRleHRDYWxsYmFjaz4mJikgb3ZlcnJpZGU7Ci0g
ICAgdm9pZCByZWxvYWRCcm93c2luZ0NvbnRleHQoSW5zcGVjdG9yOjpFcnJvclN0cmluZyYsIGNv
bnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyogb3B0aW9uYWxQYWdlTG9hZFN0cmF0ZWd5U3RyaW5n
LCBjb25zdCBpbnQqIG9wdGlvbmFsUGFnZUxvYWRUaW1lb3V0LCBSZWY8UmVsb2FkQnJvd3NpbmdD
b250ZXh0Q2FsbGJhY2s+JiYpIG92ZXJyaWRlOwotICAgIHZvaWQgd2FpdEZvck5hdmlnYXRpb25U
b0NvbXBsZXRlKEluc3BlY3Rvcjo6RXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGJyb3dzaW5n
Q29udGV4dEhhbmRsZSwgY29uc3QgU3RyaW5nKiBvcHRpb25hbEZyYW1lSGFuZGxlLCBjb25zdCBT
dHJpbmcqIG9wdGlvbmFsUGFnZUxvYWRTdHJhdGVneVN0cmluZywgY29uc3QgaW50KiBvcHRpb25h
bFBhZ2VMb2FkVGltZW91dCwgUmVmPFdhaXRGb3JOYXZpZ2F0aW9uVG9Db21wbGV0ZUNhbGxiYWNr
PiYmKSBvdmVycmlkZTsKLSAgICB2b2lkIGV2YWx1YXRlSmF2YVNjcmlwdEZ1bmN0aW9uKEluc3Bl
Y3Rvcjo6RXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGJyb3dzaW5nQ29udGV4dEhhbmRsZSwg
Y29uc3QgU3RyaW5nKiBvcHRpb25hbEZyYW1lSGFuZGxlLCBjb25zdCBTdHJpbmcmIGZ1bmN0aW9u
LCBjb25zdCBKU09OOjpBcnJheSYgYXJndW1lbnRzLCBjb25zdCBib29sKiBvcHRpb25hbEV4cGVj
dHNJbXBsaWNpdENhbGxiYWNrQXJndW1lbnQsIGNvbnN0IGludCogb3B0aW9uYWxDYWxsYmFja1Rp
bWVvdXQsIFJlZjxJbnNwZWN0b3I6OkF1dG9tYXRpb25CYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6
OkV2YWx1YXRlSmF2YVNjcmlwdEZ1bmN0aW9uQ2FsbGJhY2s+JiYpIG92ZXJyaWRlOwotICAgIHZv
aWQgcGVyZm9ybU1vdXNlSW50ZXJhY3Rpb24oSW5zcGVjdG9yOjpFcnJvclN0cmluZyYsIGNvbnN0
IFN0cmluZyYgaGFuZGxlLCBjb25zdCBKU09OOjpPYmplY3QmIHJlcXVlc3RlZFBvc2l0aW9uLCBj
b25zdCBTdHJpbmcmIG1vdXNlQnV0dG9uLCBjb25zdCBTdHJpbmcmIG1vdXNlSW50ZXJhY3Rpb24s
IGNvbnN0IEpTT046OkFycmF5JiBrZXlNb2RpZmllcnMsIFJlZjxQZXJmb3JtTW91c2VJbnRlcmFj
dGlvbkNhbGxiYWNrPiYmKSBmaW5hbDsKLSAgICB2b2lkIHBlcmZvcm1LZXlib2FyZEludGVyYWN0
aW9ucyhJbnNwZWN0b3I6OkVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBoYW5kbGUsIGNvbnN0
IEpTT046OkFycmF5JiBpbnRlcmFjdGlvbnMsIFJlZjxQZXJmb3JtS2V5Ym9hcmRJbnRlcmFjdGlv
bnNDYWxsYmFjaz4mJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB0YWtlU2NyZWVuc2hvdChJbnNwZWN0
b3I6OkVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBoYW5kbGUsIGNvbnN0IFN0cmluZyogb3B0
aW9uYWxGcmFtZUhhbmRsZSwgY29uc3QgU3RyaW5nKiBvcHRpb25hbE5vZGVIYW5kbGUsIGNvbnN0
IGJvb2wqIG9wdGlvbmFsU2Nyb2xsSW50b1ZpZXdJZk5lZWRlZCwgY29uc3QgYm9vbCogb3B0aW9u
YWxDbGlwVG9WaWV3cG9ydCwgUmVmPFRha2VTY3JlZW5zaG90Q2FsbGJhY2s+JiYpIG92ZXJyaWRl
OwotICAgIHZvaWQgcmVzb2x2ZUNoaWxkRnJhbWVIYW5kbGUoSW5zcGVjdG9yOjpFcnJvclN0cmlu
ZyYsIGNvbnN0IFN0cmluZyYgYnJvd3NpbmdDb250ZXh0SGFuZGxlLCBjb25zdCBTdHJpbmcqIG9w
dGlvbmFsRnJhbWVIYW5kbGUsIGNvbnN0IGludCogb3B0aW9uYWxPcmRpbmFsLCBjb25zdCBTdHJp
bmcqIG9wdGlvbmFsTmFtZSwgY29uc3QgU3RyaW5nKiBvcHRpb25hbE5vZGVIYW5kbGUsIFJlZjxS
ZXNvbHZlQ2hpbGRGcmFtZUhhbmRsZUNhbGxiYWNrPiYmKSBvdmVycmlkZTsKLSAgICB2b2lkIHJl
c29sdmVQYXJlbnRGcmFtZUhhbmRsZShJbnNwZWN0b3I6OkVycm9yU3RyaW5nJiwgY29uc3QgU3Ry
aW5nJiBicm93c2luZ0NvbnRleHRIYW5kbGUsIGNvbnN0IFN0cmluZyYgZnJhbWVIYW5kbGUsIFJl
ZjxSZXNvbHZlUGFyZW50RnJhbWVIYW5kbGVDYWxsYmFjaz4mJikgb3ZlcnJpZGU7Ci0gICAgdm9p
ZCBjb21wdXRlRWxlbWVudExheW91dChJbnNwZWN0b3I6OkVycm9yU3RyaW5nJiwgY29uc3QgU3Ry
aW5nJiBicm93c2luZ0NvbnRleHRIYW5kbGUsIGNvbnN0IFN0cmluZyYgZnJhbWVIYW5kbGUsIGNv
bnN0IFN0cmluZyYgbm9kZUhhbmRsZSwgY29uc3QgYm9vbCogb3B0aW9uYWxTY3JvbGxJbnRvVmll
d0lmTmVlZGVkLCBjb25zdCBTdHJpbmcmIGNvb3JkaW5hdGVTeXN0ZW0sIFJlZjxJbnNwZWN0b3I6
OkF1dG9tYXRpb25CYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6OkNvbXB1dGVFbGVtZW50TGF5b3V0
Q2FsbGJhY2s+JiYpIG92ZXJyaWRlOwotICAgIHZvaWQgc2VsZWN0T3B0aW9uRWxlbWVudChJbnNw
ZWN0b3I6OkVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBicm93c2luZ0NvbnRleHRIYW5kbGUs
IGNvbnN0IFN0cmluZyYgZnJhbWVIYW5kbGUsIGNvbnN0IFN0cmluZyYgbm9kZUhhbmRsZSwgUmVm
PEluc3BlY3Rvcjo6QXV0b21hdGlvbkJhY2tlbmREaXNwYXRjaGVySGFuZGxlcjo6U2VsZWN0T3B0
aW9uRWxlbWVudENhbGxiYWNrPiYmKSBvdmVycmlkZTsKKyAgICB2b2lkIHNldFdpbmRvd0ZyYW1l
T2ZCcm93c2luZ0NvbnRleHQoY29uc3QgU3RyaW5nJiBoYW5kbGUsIGNvbnN0IEpTT046Ok9iamVj
dCogb3JpZ2luLCBjb25zdCBKU09OOjpPYmplY3QqIHNpemUsIFJlZjxTZXRXaW5kb3dGcmFtZU9m
QnJvd3NpbmdDb250ZXh0Q2FsbGJhY2s+JiYpIGZpbmFsOworICAgIHZvaWQgbmF2aWdhdGVCcm93
c2luZ0NvbnRleHQoY29uc3QgU3RyaW5nJiBoYW5kbGUsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25z
dCBTdHJpbmcqIG9wdGlvbmFsUGFnZUxvYWRTdHJhdGVneVN0cmluZywgY29uc3QgaW50KiBvcHRp
b25hbFBhZ2VMb2FkVGltZW91dCwgUmVmPE5hdmlnYXRlQnJvd3NpbmdDb250ZXh0Q2FsbGJhY2s+
JiYpIG92ZXJyaWRlOworICAgIHZvaWQgZ29CYWNrSW5Ccm93c2luZ0NvbnRleHQoY29uc3QgU3Ry
aW5nJiwgY29uc3QgU3RyaW5nKiBvcHRpb25hbFBhZ2VMb2FkU3RyYXRlZ3lTdHJpbmcsIGNvbnN0
IGludCogb3B0aW9uYWxQYWdlTG9hZFRpbWVvdXQsIFJlZjxHb0JhY2tJbkJyb3dzaW5nQ29udGV4
dENhbGxiYWNrPiYmKSBvdmVycmlkZTsKKyAgICB2b2lkIGdvRm9yd2FyZEluQnJvd3NpbmdDb250
ZXh0KGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyogb3B0aW9uYWxQYWdlTG9hZFN0cmF0ZWd5
U3RyaW5nLCBjb25zdCBpbnQqIG9wdGlvbmFsUGFnZUxvYWRUaW1lb3V0LCBSZWY8R29Gb3J3YXJk
SW5Ccm93c2luZ0NvbnRleHRDYWxsYmFjaz4mJikgb3ZlcnJpZGU7CisgICAgdm9pZCByZWxvYWRC
cm93c2luZ0NvbnRleHQoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nKiBvcHRpb25hbFBhZ2VM
b2FkU3RyYXRlZ3lTdHJpbmcsIGNvbnN0IGludCogb3B0aW9uYWxQYWdlTG9hZFRpbWVvdXQsIFJl
ZjxSZWxvYWRCcm93c2luZ0NvbnRleHRDYWxsYmFjaz4mJikgb3ZlcnJpZGU7CisgICAgdm9pZCB3
YWl0Rm9yTmF2aWdhdGlvblRvQ29tcGxldGUoY29uc3QgU3RyaW5nJiBicm93c2luZ0NvbnRleHRI
YW5kbGUsIGNvbnN0IFN0cmluZyogb3B0aW9uYWxGcmFtZUhhbmRsZSwgY29uc3QgU3RyaW5nKiBv
cHRpb25hbFBhZ2VMb2FkU3RyYXRlZ3lTdHJpbmcsIGNvbnN0IGludCogb3B0aW9uYWxQYWdlTG9h
ZFRpbWVvdXQsIFJlZjxXYWl0Rm9yTmF2aWdhdGlvblRvQ29tcGxldGVDYWxsYmFjaz4mJikgb3Zl
cnJpZGU7CisgICAgdm9pZCBldmFsdWF0ZUphdmFTY3JpcHRGdW5jdGlvbihjb25zdCBTdHJpbmcm
IGJyb3dzaW5nQ29udGV4dEhhbmRsZSwgY29uc3QgU3RyaW5nKiBvcHRpb25hbEZyYW1lSGFuZGxl
LCBjb25zdCBTdHJpbmcmIGZ1bmN0aW9uLCBjb25zdCBKU09OOjpBcnJheSYgYXJndW1lbnRzLCBj
b25zdCBib29sKiBvcHRpb25hbEV4cGVjdHNJbXBsaWNpdENhbGxiYWNrQXJndW1lbnQsIGNvbnN0
IGludCogb3B0aW9uYWxDYWxsYmFja1RpbWVvdXQsIFJlZjxJbnNwZWN0b3I6OkF1dG9tYXRpb25C
YWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6OkV2YWx1YXRlSmF2YVNjcmlwdEZ1bmN0aW9uQ2FsbGJh
Y2s+JiYpIG92ZXJyaWRlOworICAgIHZvaWQgcGVyZm9ybU1vdXNlSW50ZXJhY3Rpb24oY29uc3Qg
U3RyaW5nJiBoYW5kbGUsIGNvbnN0IEpTT046Ok9iamVjdCYgcmVxdWVzdGVkUG9zaXRpb24sIGNv
bnN0IFN0cmluZyYgbW91c2VCdXR0b24sIGNvbnN0IFN0cmluZyYgbW91c2VJbnRlcmFjdGlvbiwg
Y29uc3QgSlNPTjo6QXJyYXkmIGtleU1vZGlmaWVycywgUmVmPFBlcmZvcm1Nb3VzZUludGVyYWN0
aW9uQ2FsbGJhY2s+JiYpIGZpbmFsOworICAgIHZvaWQgcGVyZm9ybUtleWJvYXJkSW50ZXJhY3Rp
b25zKGNvbnN0IFN0cmluZyYgaGFuZGxlLCBjb25zdCBKU09OOjpBcnJheSYgaW50ZXJhY3Rpb25z
LCBSZWY8UGVyZm9ybUtleWJvYXJkSW50ZXJhY3Rpb25zQ2FsbGJhY2s+JiYpIG92ZXJyaWRlOwor
ICAgIHZvaWQgdGFrZVNjcmVlbnNob3QoY29uc3QgU3RyaW5nJiBoYW5kbGUsIGNvbnN0IFN0cmlu
Zyogb3B0aW9uYWxGcmFtZUhhbmRsZSwgY29uc3QgU3RyaW5nKiBvcHRpb25hbE5vZGVIYW5kbGUs
IGNvbnN0IGJvb2wqIG9wdGlvbmFsU2Nyb2xsSW50b1ZpZXdJZk5lZWRlZCwgY29uc3QgYm9vbCog
b3B0aW9uYWxDbGlwVG9WaWV3cG9ydCwgUmVmPFRha2VTY3JlZW5zaG90Q2FsbGJhY2s+JiYpIG92
ZXJyaWRlOworICAgIHZvaWQgcmVzb2x2ZUNoaWxkRnJhbWVIYW5kbGUoY29uc3QgU3RyaW5nJiBi
cm93c2luZ0NvbnRleHRIYW5kbGUsIGNvbnN0IFN0cmluZyogb3B0aW9uYWxGcmFtZUhhbmRsZSwg
Y29uc3QgaW50KiBvcHRpb25hbE9yZGluYWwsIGNvbnN0IFN0cmluZyogb3B0aW9uYWxOYW1lLCBj
b25zdCBTdHJpbmcqIG9wdGlvbmFsTm9kZUhhbmRsZSwgUmVmPFJlc29sdmVDaGlsZEZyYW1lSGFu
ZGxlQ2FsbGJhY2s+JiYpIG92ZXJyaWRlOworICAgIHZvaWQgcmVzb2x2ZVBhcmVudEZyYW1lSGFu
ZGxlKGNvbnN0IFN0cmluZyYgYnJvd3NpbmdDb250ZXh0SGFuZGxlLCBjb25zdCBTdHJpbmcmIGZy
YW1lSGFuZGxlLCBSZWY8UmVzb2x2ZVBhcmVudEZyYW1lSGFuZGxlQ2FsbGJhY2s+JiYpIG92ZXJy
aWRlOworICAgIHZvaWQgY29tcHV0ZUVsZW1lbnRMYXlvdXQoY29uc3QgU3RyaW5nJiBicm93c2lu
Z0NvbnRleHRIYW5kbGUsIGNvbnN0IFN0cmluZyYgZnJhbWVIYW5kbGUsIGNvbnN0IFN0cmluZyYg
bm9kZUhhbmRsZSwgY29uc3QgYm9vbCogb3B0aW9uYWxTY3JvbGxJbnRvVmlld0lmTmVlZGVkLCBj
b25zdCBTdHJpbmcmIGNvb3JkaW5hdGVTeXN0ZW0sIFJlZjxJbnNwZWN0b3I6OkF1dG9tYXRpb25C
YWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6OkNvbXB1dGVFbGVtZW50TGF5b3V0Q2FsbGJhY2s+JiYp
IG92ZXJyaWRlOworICAgIHZvaWQgc2VsZWN0T3B0aW9uRWxlbWVudChjb25zdCBTdHJpbmcmIGJy
b3dzaW5nQ29udGV4dEhhbmRsZSwgY29uc3QgU3RyaW5nJiBmcmFtZUhhbmRsZSwgY29uc3QgU3Ry
aW5nJiBub2RlSGFuZGxlLCBSZWY8SW5zcGVjdG9yOjpBdXRvbWF0aW9uQmFja2VuZERpc3BhdGNo
ZXJIYW5kbGVyOjpTZWxlY3RPcHRpb25FbGVtZW50Q2FsbGJhY2s+JiYpIG92ZXJyaWRlOwogICAg
IHZvaWQgaXNTaG93aW5nSmF2YVNjcmlwdERpYWxvZyhJbnNwZWN0b3I6OkVycm9yU3RyaW5nJiwg
Y29uc3QgU3RyaW5nJiBicm93c2luZ0NvbnRleHRIYW5kbGUsIGJvb2wqIHJlc3VsdCkgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBkaXNtaXNzQ3VycmVudEphdmFTY3JpcHREaWFsb2coSW5zcGVjdG9yOjpF
cnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgYnJvd3NpbmdDb250ZXh0SGFuZGxlKSBvdmVycmlk
ZTsKICAgICB2b2lkIGFjY2VwdEN1cnJlbnRKYXZhU2NyaXB0RGlhbG9nKEluc3BlY3Rvcjo6RXJy
b3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGJyb3dzaW5nQ29udGV4dEhhbmRsZSkgb3ZlcnJpZGU7
CiAgICAgdm9pZCBtZXNzYWdlT2ZDdXJyZW50SmF2YVNjcmlwdERpYWxvZyhJbnNwZWN0b3I6OkVy
cm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBicm93c2luZ0NvbnRleHRIYW5kbGUsIFN0cmluZyog
dGV4dCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRVc2VySW5wdXRGb3JDdXJyZW50SmF2YVNjcmlw
dFByb21wdChJbnNwZWN0b3I6OkVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBicm93c2luZ0Nv
bnRleHRIYW5kbGUsIGNvbnN0IFN0cmluZyYgdGV4dCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRG
aWxlc1RvU2VsZWN0Rm9yRmlsZVVwbG9hZChJbnNwZWN0b3I6OkVycm9yU3RyaW5nJiwgY29uc3Qg
U3RyaW5nJiBicm93c2luZ0NvbnRleHRIYW5kbGUsIGNvbnN0IEpTT046OkFycmF5JiBmaWxlbmFt
ZXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0QWxsQ29va2llcyhJbnNwZWN0b3I6OkVycm9yU3Ry
aW5nJiwgY29uc3QgU3RyaW5nJiBicm93c2luZ0NvbnRleHRIYW5kbGUsIFJlZjxHZXRBbGxDb29r
aWVzQ2FsbGJhY2s+JiYpIG92ZXJyaWRlOwotICAgIHZvaWQgZGVsZXRlU2luZ2xlQ29va2llKElu
c3BlY3Rvcjo6RXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGJyb3dzaW5nQ29udGV4dEhhbmRs
ZSwgY29uc3QgU3RyaW5nJiBjb29raWVOYW1lLCBSZWY8RGVsZXRlU2luZ2xlQ29va2llQ2FsbGJh
Y2s+JiYpIG92ZXJyaWRlOwotICAgIHZvaWQgYWRkU2luZ2xlQ29va2llKEluc3BlY3Rvcjo6RXJy
b3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGJyb3dzaW5nQ29udGV4dEhhbmRsZSwgY29uc3QgSlNP
Tjo6T2JqZWN0JiBjb29raWUsIFJlZjxBZGRTaW5nbGVDb29raWVDYWxsYmFjaz4mJikgb3ZlcnJp
ZGU7CisgICAgdm9pZCBnZXRBbGxDb29raWVzKGNvbnN0IFN0cmluZyYgYnJvd3NpbmdDb250ZXh0
SGFuZGxlLCBSZWY8R2V0QWxsQ29va2llc0NhbGxiYWNrPiYmKSBvdmVycmlkZTsKKyAgICB2b2lk
IGRlbGV0ZVNpbmdsZUNvb2tpZShjb25zdCBTdHJpbmcmIGJyb3dzaW5nQ29udGV4dEhhbmRsZSwg
Y29uc3QgU3RyaW5nJiBjb29raWVOYW1lLCBSZWY8RGVsZXRlU2luZ2xlQ29va2llQ2FsbGJhY2s+
JiYpIG92ZXJyaWRlOworICAgIHZvaWQgYWRkU2luZ2xlQ29va2llKGNvbnN0IFN0cmluZyYgYnJv
d3NpbmdDb250ZXh0SGFuZGxlLCBjb25zdCBKU09OOjpPYmplY3QmIGNvb2tpZSwgUmVmPEFkZFNp
bmdsZUNvb2tpZUNhbGxiYWNrPiYmKSBvdmVycmlkZTsKICAgICB2b2lkIGRlbGV0ZUFsbENvb2tp
ZXMoSW5zcGVjdG9yOjpFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgYnJvd3NpbmdDb250ZXh0
SGFuZGxlKSBvdmVycmlkZTsKICAgICB2b2lkIGdldFNlc3Npb25QZXJtaXNzaW9ucyhJbnNwZWN0
b3I6OkVycm9yU3RyaW5nJiwgUmVmUHRyPEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2Nv
bDo6QXV0b21hdGlvbjo6U2Vzc2lvblBlcm1pc3Npb25EYXRhPj4mIG91dF9wZXJtaXNzaW9ucykg
b3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRTZXNzaW9uUGVybWlzc2lvbnMoSW5zcGVjdG9yOjpFcnJv
clN0cmluZyYsIGNvbnN0IEpTT046OkFycmF5JiBpbl9wZXJtaXNzaW9ucykgb3ZlcnJpZGU7CiAK
ICAgICAvLyBQbGF0Zm9ybTogbWFjT1MKICNpZiBQTEFURk9STShNQUMpCi0gICAgdm9pZCBpbnNw
ZWN0QnJvd3NpbmdDb250ZXh0KEluc3BlY3Rvcjo6RXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcm
LCBjb25zdCBib29sKiBvcHRpb25hbEVuYWJsZUF1dG9DYXB0dXJpbmcsIFJlZjxJbnNwZWN0QnJv
d3NpbmdDb250ZXh0Q2FsbGJhY2s+JiYpIG92ZXJyaWRlOworICAgIHZvaWQgaW5zcGVjdEJyb3dz
aW5nQ29udGV4dChjb25zdCBTdHJpbmcmLCBjb25zdCBib29sKiBvcHRpb25hbEVuYWJsZUF1dG9D
YXB0dXJpbmcsIFJlZjxJbnNwZWN0QnJvd3NpbmdDb250ZXh0Q2FsbGJhY2s+JiYpIG92ZXJyaWRl
OwogI2VuZGlmCiAKICAgICAvLyBFdmVudCBTaW11bGF0aW9uIFN1cHBvcnQuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9u
TWFjcm9zLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRp
b25TZXNzaW9uTWFjcm9zLmgKaW5kZXggZDYzOTg3NjljZWJkMWYzMTJiOWI0ZDQxZGVmMDMwMTkw
NmY0ODIzZS4uMmM1ZGIxOTdiYTU2M2UwNzMxZDljN2M5ZjVhNjM2MTI1MGQ2ODcwNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vz
c2lvbk1hY3Jvcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2Vi
QXV0b21hdGlvblNlc3Npb25NYWNyb3MuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDE3LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zOSwxNCArMzksMjYgQEAKICNkZWZpbmUgU1RSSU5H
X0ZPUl9QUkVERUZJTkVEX0VSUk9SX01FU1NBR0VfQU5EX0RFVEFJTFMoZXJyb3JNZXNzYWdlLCBk
ZXRhaWxzU3RyaW5nKSBtYWtlU3RyaW5nKEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb25I
ZWxwZXJzOjpnZXRFbnVtQ29uc3RhbnRWYWx1ZShWQUxJREFURURfRVJST1JfTUVTU0FHRShlcnJv
ck1lc3NhZ2UpKSwgZXJyb3JOYW1lQW5kRGV0YWlsc1NlcGFyYXRvciwgZGV0YWlsc1N0cmluZykK
IAogLy8gQ29udmVuaWVuY2UgbWFjcm9zIGZvciBmaWxsaW5nIGluIHRoZSBlcnJvciBzdHJpbmcg
b2Ygc3luY2hyb25vdXMgY29tbWFuZHMgaW4gYmFpbG91dCBicmFuY2hlcy4KLSNkZWZpbmUgRkFJ
TF9XSVRIX1BSRURFRklORURfRVJST1IoZXJyb3JOYW1lKSBcCisjZGVmaW5lIFNZTkNfRkFJTF9X
SVRIX1BSRURFRklORURfRVJST1IoZXJyb3JOYW1lKSBcCiBkbyB7IFwKICAgICBlcnJvclN0cmlu
ZyA9IFNUUklOR19GT1JfUFJFREVGSU5FRF9FUlJPUl9OQU1FKGVycm9yTmFtZSk7IFwKICAgICBy
ZXR1cm47IFwKIH0gd2hpbGUgKGZhbHNlKQogCi0jZGVmaW5lIEZBSUxfV0lUSF9QUkVERUZJTkVE
X0VSUk9SX0FORF9ERVRBSUxTKGVycm9yTmFtZSwgZGV0YWlsc1N0cmluZykgXAorI2RlZmluZSBT
WU5DX0ZBSUxfV0lUSF9QUkVERUZJTkVEX0VSUk9SX0FORF9ERVRBSUxTKGVycm9yTmFtZSwgZGV0
YWlsc1N0cmluZykgXAogZG8geyBcCiAgICAgZXJyb3JTdHJpbmcgPSBTVFJJTkdfRk9SX1BSRURF
RklORURfRVJST1JfTkFNRV9BTkRfREVUQUlMUyhlcnJvck5hbWUsIGRldGFpbHNTdHJpbmcpOyBc
CiAgICAgcmV0dXJuOyBcCiB9IHdoaWxlIChmYWxzZSkKKworI2RlZmluZSBBU1lOQ19GQUlMX1dJ
VEhfUFJFREVGSU5FRF9FUlJPUihlcnJvck5hbWUpIFwKK2RvIHsgXAorICAgIGNhbGxiYWNrLT5z
ZW5kRmFpbHVyZShTVFJJTkdfRk9SX1BSRURFRklORURfRVJST1JfTkFNRShlcnJvck5hbWUpKTsg
XAorICAgIHJldHVybjsgXAorfSB3aGlsZSAoZmFsc2UpCisKKyNkZWZpbmUgQVNZTkNfRkFJTF9X
SVRIX1BSRURFRklORURfRVJST1JfQU5EX0RFVEFJTFMoZXJyb3JOYW1lLCBkZXRhaWxzU3RyaW5n
KSBcCitkbyB7IFwKKyAgICBjYWxsYmFjay0+c2VuZEZhaWx1cmUoU1RSSU5HX0ZPUl9QUkVERUZJ
TkVEX0VSUk9SX05BTUVfQU5EX0RFVEFJTFMoZXJyb3JOYW1lLCBkZXRhaWxzU3RyaW5nKSk7IFwK
KyAgICByZXR1cm47IFwKK30gd2hpbGUgKGZhbHNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQXV0b21hdGlvbi9tYWMvV2ViQXV0b21hdGlvblNlc3Npb25NYWMubW0gYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL21hYy9XZWJBdXRvbWF0aW9uU2Vzc2lv
bk1hYy5tbQppbmRleCBlNDk4NjUxODJiYzRhMjYwOTk0NjE5MjE3NmExYjY0MWYxZmFlZjUyLi4z
YjVlNTU4YzY0YzNkYTc2N2E5ODllZDY0MjBhNzc1ZjJjMWE2MTMyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL21hYy9XZWJBdXRvbWF0aW9uU2Vzc2lvbk1h
Yy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL21hYy9XZWJBdXRv
bWF0aW9uU2Vzc2lvbk1hYy5tbQpAQCAtNDQsMTEgKzQ0LDExIEBAIG5hbWVzcGFjZSBXZWJLaXQg
ewogCiAjcHJhZ21hIG1hcmsgQ29tbWFuZHMgZm9yIFBsYXRmb3JtOiAnbWFjT1MnCiAKLXZvaWQg
V2ViQXV0b21hdGlvblNlc3Npb246Omluc3BlY3RCcm93c2luZ0NvbnRleHQoSW5zcGVjdG9yOjpF
cnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgaGFuZGxlLCBjb25zdCBib29s
KiBvcHRpb25hbEVuYWJsZUF1dG9DYXB0dXJpbmcsIFJlZjxJbnNwZWN0QnJvd3NpbmdDb250ZXh0
Q2FsbGJhY2s+JiYgY2FsbGJhY2spCit2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjppbnNwZWN0
QnJvd3NpbmdDb250ZXh0KGNvbnN0IFN0cmluZyYgaGFuZGxlLCBjb25zdCBib29sKiBvcHRpb25h
bEVuYWJsZUF1dG9DYXB0dXJpbmcsIFJlZjxJbnNwZWN0QnJvd3NpbmdDb250ZXh0Q2FsbGJhY2s+
JiYgY2FsbGJhY2spCiB7CiAgICAgV2ViUGFnZVByb3h5KiBwYWdlID0gd2ViUGFnZVByb3h5Rm9y
SGFuZGxlKGhhbmRsZSk7CiAgICAgaWYgKCFwYWdlKQotICAgICAgICBGQUlMX1dJVEhfUFJFREVG
SU5FRF9FUlJPUihXaW5kb3dOb3RGb3VuZCk7CisgICAgICAgIEFTWU5DX0ZBSUxfV0lUSF9QUkVE
RUZJTkVEX0VSUk9SKFdpbmRvd05vdEZvdW5kKTsKIAogICAgIGlmIChhdXRvIGNhbGxiYWNrID0g
bV9wZW5kaW5nSW5zcGVjdG9yQ2FsbGJhY2tzUGVyUGFnZS50YWtlKHBhZ2UtPnBhZ2VJRCgpKSkK
ICAgICAgICAgY2FsbGJhY2stPnNlbmRGYWlsdXJlKFNUUklOR19GT1JfUFJFREVGSU5FRF9FUlJP
Ul9OQU1FKFRpbWVvdXQpKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>