<?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>148612</bug_id>
          
          <creation_ts>2015-08-29 15:41:54 -0700</creation_ts>
          <short_desc>Web Inspector: tighten up lifetimes for InspectorController-owned objects; add brace initializers to agents</short_desc>
          <delta_ts>2015-09-01 10:52:41 -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>
          
          <blocked>148481</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Blaze Burg">bburg</reporter>
          <assigned_to name="Blaze Burg">bburg</assigned_to>
          <cc>bburg</cc>
    
    <cc>commit-queue</cc>
    
    <cc>graouts</cc>
    
    <cc>joepeck</cc>
    
    <cc>mattbaker</cc>
    
    <cc>mkwst</cc>
    
    <cc>nvasilyev</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1122006</commentid>
    <comment_count>0</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2015-08-29 15:41:54 -0700</bug_when>
    <thetext>Morally, they are owned by InspectorController. InstrumentingAgents has to be Ref&lt;&gt; because of sharing with instrumentation cookies for now.

While I touch every file, might as well clean up to be consistently using brace initializers in the declaration.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1122007</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2015-08-29 15:42:58 -0700</bug_when>
    <thetext>&lt;rdar://problem/22490698&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1122008</commentid>
    <comment_count>2</comment_count>
      <attachid>260227</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2015-08-29 15:50:19 -0700</bug_when>
    <thetext>Created attachment 260227
Proposed Fix

Depends on other bugs, so it won&apos;t apply yet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1122225</commentid>
    <comment_count>3</comment_count>
      <attachid>260227</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2015-08-31 11:27:16 -0700</bug_when>
    <thetext>Comment on attachment 260227
Proposed Fix

View in context: https://bugs.webkit.org/attachment.cgi?id=260227&amp;action=review

r=me

&gt; Source/JavaScriptCore/inspector/agents/JSGlobalObjectDebuggerAgent.h:58
&gt; +    InspectorConsoleAgent* m_consoleAgent  { nullptr };

Nit: double space</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1122562</commentid>
    <comment_count>4</comment_count>
      <attachid>260366</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2015-09-01 10:03:31 -0700</bug_when>
    <thetext>Created attachment 260366
Proposed Fix (rebased for EWS)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1122583</commentid>
    <comment_count>5</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2015-09-01 10:52:41 -0700</bug_when>
    <thetext>Committed r189218: &lt;http://trac.webkit.org/changeset/189218&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>260227</attachid>
            <date>2015-08-29 15:50:19 -0700</date>
            <delta_ts>2015-09-01 10:03:25 -0700</delta_ts>
            <desc>Proposed Fix</desc>
            <filename>bug-148612-20150829155004.patch</filename>
            <type>text/plain</type>
            <size>151610</size>
            <attacher name="Blaze Burg">bburg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg5MTM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
NzhmZDUzM2E2YTFkZjU2ODA4YWNmMjc3ODhjM2M2OGU0ZDhiMmE1Li45NDlkODY0Nzk1ZGQ3Mjc5
MDdlZDMyMjU5MTFlNzQ2MmJlMDkyMmI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
NSArMSw2NiBAQAogMjAxNS0wOC0yOSAgQnJpYW4gQnVyZyAgPGJidXJnQGFwcGxlLmNvbT4KIAor
ICAgICAgICBXZWIgSW5zcGVjdG9yOiB0aWdodGVuIHVwIGxpZmV0aW1lcyBmb3IgSW5zcGVjdG9y
Q29udHJvbGxlci1vd25lZCBvYmplY3RzOyBhZGQgYnJhY2UgaW5pdGlhbGl6ZXJzIHRvIGFnZW50
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ4NjEy
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQm90aCBJ
bmplY3RlZFNjcmlwdE1hbmFnZXIgYW5kIEFnZW50UmVnaXN0cnkgKHRodXMgYWxsIGFnZW50cykg
YXJlCisgICAgICAgIG93bmVkIGJ5IEpTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlci4g
U28sIHVzZSByZWZlcmVuY2VzLgorCisgICAgICAgIEFkZCBicmFjZSBpbml0YWxpemVycyBmb3Ig
c2NhbGFyIGFuZCBwb2ludGVyIG1lbWJlcnMgaW4gYWdlbnQgY2xhc3Nlcy4KKworICAgICAgICAq
IGluc3BlY3Rvci9Db25zb2xlTWVzc2FnZS5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6OkNvbnNv
bGVNZXNzYWdlOjphZGRUb0Zyb250ZW5kKToKKyAgICAgICAgKEluc3BlY3Rvcjo6Q29uc29sZU1l
c3NhZ2U6OnVwZGF0ZVJlcGVhdENvdW50SW5Db25zb2xlKToKKyAgICAgICAgKEluc3BlY3Rvcjo6
Q29uc29sZU1lc3NhZ2U6OkNvbnNvbGVNZXNzYWdlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvQ29u
c29sZU1lc3NhZ2UuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSlNHbG9iYWxPYmplY3RJbnNwZWN0
b3JDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6SlNHbG9iYWxPYmplY3RJbnNw
ZWN0b3JDb250cm9sbGVyOjpKU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXIpOgorICAg
ICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQWdlbnQuY3BwOgorICAgICAgICAoSW5z
cGVjdG9yOjpJbnNwZWN0b3JBZ2VudDo6SW5zcGVjdG9yQWdlbnQpOgorICAgICAgICAqIGluc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9yQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRz
L0luc3BlY3RvckNvbnNvbGVBZ2VudC5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3Rv
ckNvbnNvbGVBZ2VudDo6SW5zcGVjdG9yQ29uc29sZUFnZW50KToKKyAgICAgICAgKEluc3BlY3Rv
cjo6SW5zcGVjdG9yQ29uc29sZUFnZW50OjplbmFibGUpOgorICAgICAgICAoSW5zcGVjdG9yOjpJ
bnNwZWN0b3JDb25zb2xlQWdlbnQ6OmNsZWFyTWVzc2FnZXMpOgorICAgICAgICAoSW5zcGVjdG9y
OjpJbnNwZWN0b3JDb25zb2xlQWdlbnQ6OmFkZE1lc3NhZ2VUb0NvbnNvbGUpOgorICAgICAgICAo
SW5zcGVjdG9yOjpJbnNwZWN0b3JDb25zb2xlQWdlbnQ6OmFkZENvbnNvbGVNZXNzYWdlKToKKyAg
ICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNvbnNvbGVBZ2VudC5oOgorICAgICAg
ICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHA6CisgICAgICAg
IChJbnNwZWN0b3I6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6Okluc3BlY3RvckRlYnVnZ2VyQWdl
bnQpOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpyZW1vdmVC
cmVha3BvaW50KToKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6
Z2V0RnVuY3Rpb25EZXRhaWxzKToKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yRGVidWdn
ZXJBZ2VudDo6ZXZhbHVhdGVPbkNhbGxGcmFtZSk6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3Bl
Y3RvckRlYnVnZ2VyQWdlbnQ6OmRpZFBhdXNlKToKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVj
dG9yRGVidWdnZXJBZ2VudDo6YnJlYWtwb2ludEFjdGlvblByb2JlKToKKyAgICAgICAgKEluc3Bl
Y3Rvcjo6SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6ZGlkQ29udGludWUpOgorICAgICAgICAoSW5z
cGVjdG9yOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpjbGVhckV4Y2VwdGlvblZhbHVlKToKKyAg
ICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuaDoKKyAgICAg
ICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclJ1bnRpbWVBZ2VudC5jcHA6CisgICAgICAg
IChJbnNwZWN0b3I6Okluc3BlY3RvclJ1bnRpbWVBZ2VudDo6SW5zcGVjdG9yUnVudGltZUFnZW50
KToKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yUnVudGltZUFnZW50OjpjYWxsRnVuY3Rp
b25Pbik6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvclJ1bnRpbWVBZ2VudDo6Z2V0UHJv
cGVydGllcyk6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvclJ1bnRpbWVBZ2VudDo6Z2V0
RGlzcGxheWFibGVQcm9wZXJ0aWVzKToKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yUnVu
dGltZUFnZW50OjpnZXRDb2xsZWN0aW9uRW50cmllcyk6CisgICAgICAgIChJbnNwZWN0b3I6Oklu
c3BlY3RvclJ1bnRpbWVBZ2VudDo6c2F2ZVJlc3VsdCk6CisgICAgICAgIChJbnNwZWN0b3I6Oklu
c3BlY3RvclJ1bnRpbWVBZ2VudDo6cmVsZWFzZU9iamVjdCk6CisgICAgICAgIChJbnNwZWN0b3I6
Okluc3BlY3RvclJ1bnRpbWVBZ2VudDo6cmVsZWFzZU9iamVjdEdyb3VwKToKKyAgICAgICAgKiBp
bnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclJ1bnRpbWVBZ2VudC5oOgorICAgICAgICAqIGluc3Bl
Y3Rvci9hZ2VudHMvSlNHbG9iYWxPYmplY3RDb25zb2xlQWdlbnQuY3BwOgorICAgICAgICAoSW5z
cGVjdG9yOjpKU0dsb2JhbE9iamVjdENvbnNvbGVBZ2VudDo6SlNHbG9iYWxPYmplY3RDb25zb2xl
QWdlbnQpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSlNHbG9iYWxPYmplY3RDb25zb2xl
QWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0pTR2xvYmFsT2JqZWN0RGVidWdn
ZXJBZ2VudC5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6OkpTR2xvYmFsT2JqZWN0RGVidWdnZXJB
Z2VudDo6SlNHbG9iYWxPYmplY3REZWJ1Z2dlckFnZW50KToKKyAgICAgICAgKEluc3BlY3Rvcjo6
SlNHbG9iYWxPYmplY3REZWJ1Z2dlckFnZW50OjppbmplY3RlZFNjcmlwdEZvckV2YWwpOgorICAg
ICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSlNHbG9iYWxPYmplY3REZWJ1Z2dlckFnZW50Lmg6Cisg
ICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9KU0dsb2JhbE9iamVjdFJ1bnRpbWVBZ2VudC5jcHA6
CisgICAgICAgIChJbnNwZWN0b3I6OkpTR2xvYmFsT2JqZWN0UnVudGltZUFnZW50OjpKU0dsb2Jh
bE9iamVjdFJ1bnRpbWVBZ2VudCk6CisgICAgICAgIChJbnNwZWN0b3I6OkpTR2xvYmFsT2JqZWN0
UnVudGltZUFnZW50OjppbmplY3RlZFNjcmlwdEZvckV2YWwpOgorICAgICAgICAqIGluc3BlY3Rv
ci9hZ2VudHMvSlNHbG9iYWxPYmplY3RSdW50aW1lQWdlbnQuaDoKKworMjAxNS0wOC0yOSAgQnJp
YW4gQnVyZyAgPGJidXJnQGFwcGxlLmNvbT4KKwogICAgICAgICBXZWIgSW5zcGVjdG9yOiBhZ2Vu
dHMgc2hvdWxkIHNlbmQgbWVzc2FnZXMgdGhyb3VnaCBGcm9udGVuZFJvdXRlciBpbnN0ZWFkIG9m
IEZyb250ZW5kQ2hhbm5lbAogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTQ4NDkyCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBlZTYwNTNkNzRiNDc5NDg5N2QzNDYzZGM4
N2FiMDZiN2UxZDJkNGZkLi4yMmU2MDkwODFjYTJhMjViZjRiNTA4NzU3ZmEyYTQ0NDBkNjViNDhh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMTgzIEBACiAyMDE1LTA4LTI5ICBCcmlhbiBCdXJnICA8
YmJ1cmdAYXBwbGUuY29tPgogCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IHRpZ2h0ZW4gdXAgbGlm
ZXRpbWVzIGZvciBJbnNwZWN0b3JDb250cm9sbGVyLW93bmVkIG9iamVjdHM7IGFkZCBicmFjZSBp
bml0aWFsaXplcnMgdG8gYWdlbnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNDg2MTIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBCb3RoIEluamVjdGVkU2NyaXB0TWFuYWdlciBhbmQgQWdlbnRSZWdpc3Ry
eSAodGh1cyBhbGwgYWdlbnRzKSBhcmUKKyAgICAgICAgb3duZWQgYnkgW1dvcmtlcl1JbnNwZWN0
b3JDb250cm9sbGVyLiBTbywgdXNlIHJlZmVyZW5jZXMuCisKKyAgICAgICAgSW5zdHJ1bWVudGlu
Z0FnZW50cyBpcyBtb3JhbGx5IG93bmVkIGJ5IEluc3BlY3RvckNvbnRyb2xsZXIgYXMgd2VsbCwg
YnV0CisgICAgICAgIG11c3QgYmUgYSBSZWYgZm9yIG5vdyBzaW5jZSBpbnN0cnVtZW50YXRpb24g
Y29va2llcyB0YWtlIGEgc3Ryb25nIHJlZmVyZW5jZS4KKworICAgICAgICBBZGQgYnJhY2UgaW5p
dGFsaXplcnMgZm9yIHNjYWxhciBhbmQgcG9pbnRlciBtZW1iZXJzIGluIGFnZW50IGNsYXNzZXMu
CisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBubyBiZWhhdmlvciBjaGFuZ2UuCisKKyAgICAgICAg
KiBpbnNwZWN0b3IvSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudDo6SW5zcGVjdG9yQXBwbGlj
YXRpb25DYWNoZUFnZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckFwcGxpY2F0aW9u
Q2FjaGVBZ2VudDo6d2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50OjplbmFibGUpOgorICAgICAgICAq
IGluc3BlY3Rvci9JbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQuaDoKKyAgICAgICAgKiBp
bnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yQ1NTQWdlbnQ6Okluc3BlY3RvckNTU0FnZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvckNTU0FnZW50OjplbmFibGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdl
bnQ6OmRpc2FibGUpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5oOgor
ICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDb25zb2xlSW5zdHJ1bWVudGF0aW9uLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmFkZE1lc3NhZ2VUb0Nv
bnNvbGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpjb25z
b2xlQ291bnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpz
dGFydFByb2ZpbGluZyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OnN0b3BQcm9maWxpbmcpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDb250cm9s
bGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6Okluc3BlY3Rv
ckNvbnRyb2xsZXIpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6Y29u
bmVjdEZyb250ZW5kKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6OmRp
c2Nvbm5lY3RGcm9udGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVy
OjpkaXNjb25uZWN0QWxsRnJvbnRlbmRzKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9y
Q29udHJvbGxlci5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6SW5zcGVjdG9yRE9NQWdlbnQp
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5k
QW5kQmFja2VuZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6d2lsbERl
c3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9N
QWdlbnQ6OmZvY3VzTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6
YnVpbGRPYmplY3RGb3JFdmVudExpc3RlbmVyKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ckRPTUFnZW50Ojpub2RlRm9yT2JqZWN0SWQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
RE9NQWdlbnQ6OnJlc29sdmVOb2RlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRE9N
QWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50OjpJbnNwZWN0
b3JET01EZWJ1Z2dlckFnZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTURlYnVn
Z2VyQWdlbnQ6On5JbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50KToKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6OmRlYnVnZ2VyV2FzRW5hYmxlZCk6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50OjpkaXNhYmxlKToKKyAgICAgICAg
KiBpbnNwZWN0b3IvSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudC5oOgorICAgICAgICAqIGluc3Bl
Y3Rvci9JbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yRE9NU3RvcmFnZUFnZW50OjpJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50Ojp+SW5zcGVjdG9yRE9NU3RvcmFn
ZUFnZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50Lmg6
CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckRhdGFiYXNlQWdlbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yRGF0YWJhc2VBZ2VudDo6SW5zcGVjdG9yRGF0YWJhc2VBZ2Vu
dCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JEYXRhYmFzZUFnZW50Ojp+SW5zcGVjdG9y
RGF0YWJhc2VBZ2VudCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckRhdGFiYXNlQWdl
bnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5kZXhlZERCQWdlbnQ6Okluc3BlY3RvckluZGV4
ZWREQkFnZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckluZGV4ZWREQkFnZW50Ojpy
ZXF1ZXN0RGF0YSk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50
Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246Omluc3RydW1lbnRpbmdB
Z2VudHNGb3JQYWdlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6aW5zdHJ1bWVudGluZ0FnZW50c0Zvcldvcmtlckdsb2JhbFNjb3BlKToKKyAgICAgICAgKiBp
bnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb246Om1vdXNlRGlkTW92ZU92ZXJFbGVtZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6c2NyaXB0c0VuYWJsZWQpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRTY3JvbGwpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjptYXJrUmVzb3VyY2VB
c0NhY2hlZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRp
ZExvYWRSZXNvdXJjZUZyb21NZW1vcnlDYWNoZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb246OndpbGxSdW5KYXZhU2NyaXB0RGlhbG9nKToKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6c2Vzc2lvbkNyZWF0ZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzZXNzaW9uTG9hZGVkKToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6c2Vzc2lvbk1vZGlmaWVk
KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6c2VnbWVudENy
ZWF0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzZWdt
ZW50Q29tcGxldGVkKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6c2VnbWVudExvYWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OnNlZ21lbnRVbmxvYWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OmNhcHR1cmVTdGFydGVkKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6Y2FwdHVyZVN0b3BwZWQpOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpwbGF5YmFja1N0YXJ0ZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpwbGF5YmFja1BhdXNlZCk6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnBsYXliYWNrRmluaXNoZWQpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpwbGF5YmFja0hpdFBvc2l0
aW9uKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6Okluc3BlY3RvckxheWVy
VHJlZUFnZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckxheWVyVHJlZUFnZW50Ojpl
bmFibGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6OmRpc2Fi
bGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6OmxheWVyc0Zv
ck5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6OmlkRm9y
Tm9kZSk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckxheWVyVHJlZUFnZW50Lmg6Cisg
ICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JQYWdlQWdlbnQ6Okluc3BlY3RvclBhZ2VBZ2VudCk6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JQYWdlQWdlbnQ6OnRpbWVzdGFtcCk6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JQYWdlQWdlbnQ6OmVuYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JQYWdlQWdlbnQ6OmRpc2FibGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUGFnZUFn
ZW50OjpmcmFtZVN0YXJ0ZWRMb2FkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclBh
Z2VBZ2VudDo6c25hcHNob3ROb2RlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yUGFn
ZUFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclJlcGxheUFnZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJlcGxheUFnZW50OjpJbnNwZWN0b3JSZXBsYXlB
Z2VudCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JSZXBsYXlBZ2VudDo6ZGlkQ3JlYXRl
RnJvbnRlbmRBbmRCYWNrZW5kKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJlcGxheUFn
ZW50Ojp3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZCk6CisgICAgICAgICogaW5zcGVjdG9y
L0luc3BlY3RvclJlcGxheUFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclJl
c291cmNlQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUmVzb3VyY2VBZ2Vu
dDo6SW5zcGVjdG9yUmVzb3VyY2VBZ2VudCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JS
ZXNvdXJjZUFnZW50Ojp+SW5zcGVjdG9yUmVzb3VyY2VBZ2VudCk6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JSZXNvdXJjZUFnZW50Ojp0aW1lc3RhbXApOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6ZW5hYmxlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvclJlc291cmNlQWdlbnQ6OmRpc2FibGUpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0
b3JSZXNvdXJjZUFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5l
QWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6ZGlk
Q3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclRp
bWVsaW5lQWdlbnQ6OndpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKToKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OmludGVybmFsU3RhcnQpOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6aW50ZXJuYWxTdG9wKToKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OnRpbWVzdGFtcCk6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpzdGFydEZyb21Db25zb2xlKToKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OndpbGxDYWxsRnVuY3Rpb24pOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6d2lsbEV2YWx1YXRlU2Ny
aXB0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclRpbWVsaW5lQWdlbnQ6Okluc3BlY3Rv
clRpbWVsaW5lQWdlbnQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JUaW1lbGluZUFn
ZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvcldlYkFnZW50QmFzZS5oOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQWdlbnRCYXNlOjpJbnNwZWN0b3JBZ2VudEJhc2UpOgor
ICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JXb3JrZXJBZ2VudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JXb3JrZXJBZ2VudDo6SW5zcGVjdG9yV29ya2VyQWdlbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yV29ya2VyQWdlbnQ6On5JbnNwZWN0b3JXb3JrZXJBZ2Vu
dCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvcldvcmtlckFnZW50Lmg6CisgICAgICAg
ICogaW5zcGVjdG9yL0luc3RydW1lbnRpbmdBZ2VudHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SW5zdHJ1bWVudGluZ0FnZW50czo6SW5zdHJ1bWVudGluZ0FnZW50cyk6IERlbGV0ZWQuCisgICAg
ICAgICogaW5zcGVjdG9yL0luc3RydW1lbnRpbmdBZ2VudHMuaDoKKyAgICAgICAgKFdlYkNvcmU6
Okluc3RydW1lbnRpbmdBZ2VudHM6OmNyZWF0ZSk6CisgICAgICAgICogaW5zcGVjdG9yL1BhZ2VD
b25zb2xlQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZUNvbnNvbGVBZ2VudDo6UGFn
ZUNvbnNvbGVBZ2VudCk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlQ29uc29sZUFnZW50OjphZGRJ
bnNwZWN0ZWROb2RlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvUGFnZUNvbnNvbGVBZ2VudC5oOgor
ICAgICAgICAqIGluc3BlY3Rvci9QYWdlRGVidWdnZXJBZ2VudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpQYWdlRGVidWdnZXJBZ2VudDo6UGFnZURlYnVnZ2VyQWdlbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6UGFnZURlYnVnZ2VyQWdlbnQ6OmVuYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpQYWdl
RGVidWdnZXJBZ2VudDo6ZGlzYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlRGVidWdnZXJB
Z2VudDo6aW5qZWN0ZWRTY3JpcHRGb3JFdmFsKToKKyAgICAgICAgKiBpbnNwZWN0b3IvUGFnZURl
YnVnZ2VyQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvUGFnZVJ1bnRpbWVBZ2VudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpQYWdlUnVudGltZUFnZW50OjpQYWdlUnVudGltZUFnZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OlBhZ2VSdW50aW1lQWdlbnQ6OmluamVjdGVkU2NyaXB0Rm9yRXZh
bCk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlUnVudGltZUFnZW50Ojpub3RpZnlDb250ZXh0Q3Jl
YXRlZCk6CisgICAgICAgICogaW5zcGVjdG9yL1BhZ2VSdW50aW1lQWdlbnQuaDoKKyAgICAgICAg
KiBpbnNwZWN0b3IvV2ViQ29uc29sZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkNv
bnNvbGVBZ2VudDo6V2ViQ29uc29sZUFnZW50KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkNvbnNv
bGVBZ2VudDo6ZnJhbWVXaW5kb3dEaXNjYXJkZWQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29u
c29sZUFnZW50OjpkaWRGaW5pc2hYSFJMb2FkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkNv
bnNvbGVBZ2VudDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkNv
bnNvbGVBZ2VudDo6ZGlkRmFpbExvYWRpbmcpOgorICAgICAgICAqIGluc3BlY3Rvci9XZWJDb25z
b2xlQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvV2ViRGVidWdnZXJBZ2VudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJEZWJ1Z2dlckFnZW50OjpXZWJEZWJ1Z2dlckFnZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OldlYkRlYnVnZ2VyQWdlbnQ6OmVuYWJsZSk6CisgICAgICAgIChXZWJD
b3JlOjpXZWJEZWJ1Z2dlckFnZW50OjpkaXNhYmxlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvV2Vi
RGVidWdnZXJBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9Xb3JrZXJDb25zb2xlQWdlbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyQ29uc29sZUFnZW50OjpXb3JrZXJDb25zb2xl
QWdlbnQpOgorICAgICAgICAqIGluc3BlY3Rvci9Xb3JrZXJDb25zb2xlQWdlbnQuaDoKKyAgICAg
ICAgKiBpbnNwZWN0b3IvV29ya2VyRGVidWdnZXJBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpXb3JrZXJEZWJ1Z2dlckFnZW50OjpXb3JrZXJEZWJ1Z2dlckFnZW50KToKKyAgICAgICAgKFdl
YkNvcmU6OldvcmtlckRlYnVnZ2VyQWdlbnQ6OmluamVjdGVkU2NyaXB0Rm9yRXZhbCk6CisgICAg
ICAgICogaW5zcGVjdG9yL1dvcmtlckRlYnVnZ2VyQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0
b3IvV29ya2VySW5zcGVjdG9yQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3Jr
ZXJJbnNwZWN0b3JDb250cm9sbGVyOjpXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyKToKKyAgICAg
ICAgKiBpbnNwZWN0b3IvV29ya2VySW5zcGVjdG9yQ29udHJvbGxlci5oOgorICAgICAgICAqIGlu
c3BlY3Rvci9Xb3JrZXJSdW50aW1lQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2Vy
UnVudGltZUFnZW50OjpXb3JrZXJSdW50aW1lQWdlbnQpOgorICAgICAgICAoV2ViQ29yZTo6V29y
a2VyUnVudGltZUFnZW50OjppbmplY3RlZFNjcmlwdEZvckV2YWwpOgorICAgICAgICAqIGluc3Bl
Y3Rvci9Xb3JrZXJSdW50aW1lQWdlbnQuaDoKKworMjAxNS0wOC0yOSAgQnJpYW4gQnVyZyAgPGJi
dXJnQGFwcGxlLmNvbT4KKwogICAgICAgICBXZWIgSW5zcGVjdG9yOiBhZ2VudHMgc2hvdWxkIHNl
bmQgbWVzc2FnZXMgdGhyb3VnaCBGcm9udGVuZFJvdXRlciBpbnN0ZWFkIG9mIEZyb250ZW5kQ2hh
bm5lbAogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ4
NDkyCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvQ29uc29s
ZU1lc3NhZ2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9Db25zb2xlTWVz
c2FnZS5jcHAKaW5kZXggOWFjMGRkZWUyZGM5MGJhZjgxOGZhZTNhMmQ0MTZkZDU4YWE5MTQ0NS4u
NmVmNjdjYWVjYmQ3MWQ5NjI2OTlkMWFkYTg3ZDdhZjM5OTdiNWQzYiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9Db25zb2xlTWVzc2FnZS5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9Db25zb2xlTWVzc2FnZS5jcHAKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA3LCAyMDA4LCAyMDE0IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNywgMjAwOCwgMjAxNCwg
MjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIw
MDggTWF0dCBMaWxlayA8d2Via2l0QG1hdHRsaWxlay5jb20+CiAgKiBDb3B5cmlnaHQgKEMpIDIw
MDksIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCkBAIC00OSw5ICs0
OSw2IEBAIENvbnNvbGVNZXNzYWdlOjpDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlIHNvdXJj
ZSwgTWVzc2FnZVR5cGUgdHlwZSwgTWVzc2FnZUxlCiAgICAgLCBtX2xldmVsKGxldmVsKQogICAg
ICwgbV9tZXNzYWdlKG1lc3NhZ2UpCiAgICAgLCBtX3VybCgpCi0gICAgLCBtX2xpbmUoMCkKLSAg
ICAsIG1fY29sdW1uKDApCi0gICAgLCBtX3JlcGVhdENvdW50KDEpCiAgICAgLCBtX3JlcXVlc3RJ
ZChJZGVudGlmaWVyc0ZhY3Rvcnk6OnJlcXVlc3RJZChyZXF1ZXN0SWRlbnRpZmllcikpCiB7CiB9
CkBAIC02NCw3ICs2MSw2IEBAIENvbnNvbGVNZXNzYWdlOjpDb25zb2xlTWVzc2FnZShNZXNzYWdl
U291cmNlIHNvdXJjZSwgTWVzc2FnZVR5cGUgdHlwZSwgTWVzc2FnZUxlCiAgICAgLCBtX3VybCh1
cmwpCiAgICAgLCBtX2xpbmUobGluZSkKICAgICAsIG1fY29sdW1uKGNvbHVtbikKLSAgICAsIG1f
cmVwZWF0Q291bnQoMSkKICAgICAsIG1fcmVxdWVzdElkKElkZW50aWZpZXJzRmFjdG9yeTo6cmVx
dWVzdElkKHJlcXVlc3RJZGVudGlmaWVyKSkKIHsKICAgICBhdXRvZ2VuZXJhdGVNZXRhZGF0YShz
dGF0ZSk7CkBAIC03Niw5ICs3Miw2IEBAIENvbnNvbGVNZXNzYWdlOjpDb25zb2xlTWVzc2FnZShN
ZXNzYWdlU291cmNlIHNvdXJjZSwgTWVzc2FnZVR5cGUgdHlwZSwgTWVzc2FnZUxlCiAgICAgLCBt
X2xldmVsKGxldmVsKQogICAgICwgbV9tZXNzYWdlKG1lc3NhZ2UpCiAgICAgLCBtX3VybCgpCi0g
ICAgLCBtX2xpbmUoMCkKLSAgICAsIG1fY29sdW1uKDApCi0gICAgLCBtX3JlcGVhdENvdW50KDEp
CiAgICAgLCBtX3JlcXVlc3RJZChJZGVudGlmaWVyc0ZhY3Rvcnk6OnJlcXVlc3RJZChyZXF1ZXN0
SWRlbnRpZmllcikpCiB7CiAgICAgbV9jYWxsU3RhY2sgPSBjYWxsU3RhY2s7CkBAIC05OCw5ICs5
MSw2IEBAIENvbnNvbGVNZXNzYWdlOjpDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlIHNvdXJj
ZSwgTWVzc2FnZVR5cGUgdHlwZSwgTWVzc2FnZUxlCiAgICAgLCBtX21lc3NhZ2UobWVzc2FnZSkK
ICAgICAsIG1fYXJndW1lbnRzKGFyZ3VtZW50cykKICAgICAsIG1fdXJsKCkKLSAgICAsIG1fbGlu
ZSgwKQotICAgICwgbV9jb2x1bW4oMCkKLSAgICAsIG1fcmVwZWF0Q291bnQoMSkKICAgICAsIG1f
cmVxdWVzdElkKElkZW50aWZpZXJzRmFjdG9yeTo6cmVxdWVzdElkKHJlcXVlc3RJZGVudGlmaWVy
KSkKIHsKICAgICBhdXRvZ2VuZXJhdGVNZXRhZGF0YShzdGF0ZSk7CkBAIC0xNzksNyArMTY5LDcg
QEAgc3RhdGljIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNvbnNvbGU6OkNvbnNvbGVNZXNzYWdlOjpM
ZXZlbCBtZXNzYWdlTGV2ZWxWYWx1ZShNZXMKICAgICByZXR1cm4gSW5zcGVjdG9yOjpQcm90b2Nv
bDo6Q29uc29sZTo6Q29uc29sZU1lc3NhZ2U6OkxldmVsOjpMb2c7CiB9CiAKLXZvaWQgQ29uc29s
ZU1lc3NhZ2U6OmFkZFRvRnJvbnRlbmQoQ29uc29sZUZyb250ZW5kRGlzcGF0Y2hlciogY29uc29s
ZUZyb250ZW5kRGlzcGF0Y2hlciwgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiBpbmplY3RlZFNjcmlw
dE1hbmFnZXIsIGJvb2wgZ2VuZXJhdGVQcmV2aWV3KQordm9pZCBDb25zb2xlTWVzc2FnZTo6YWRk
VG9Gcm9udGVuZChDb25zb2xlRnJvbnRlbmREaXNwYXRjaGVyJiBjb25zb2xlRnJvbnRlbmREaXNw
YXRjaGVyLCBJbmplY3RlZFNjcmlwdE1hbmFnZXImIGluamVjdGVkU2NyaXB0TWFuYWdlciwgYm9v
bCBnZW5lcmF0ZVByZXZpZXcpCiB7CiAgICAgUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNvbnNv
bGU6OkNvbnNvbGVNZXNzYWdlPiBqc29uT2JqID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6Q29uc29s
ZTo6Q29uc29sZU1lc3NhZ2U6OmNyZWF0ZSgpCiAgICAgICAgIC5zZXRTb3VyY2UobWVzc2FnZVNv
dXJjZVZhbHVlKG1fc291cmNlKSkKQEAgLTE5OCw3ICsxODgsNyBAQCB2b2lkIENvbnNvbGVNZXNz
YWdlOjphZGRUb0Zyb250ZW5kKENvbnNvbGVGcm9udGVuZERpc3BhdGNoZXIqIGNvbnNvbGVGcm9u
dGVuZERpcwogICAgICAgICBqc29uT2JqLT5zZXROZXR3b3JrUmVxdWVzdElkKG1fcmVxdWVzdElk
KTsKIAogICAgIGlmIChtX2FyZ3VtZW50cyAmJiBtX2FyZ3VtZW50cy0+YXJndW1lbnRDb3VudCgp
KSB7Ci0gICAgICAgIEluamVjdGVkU2NyaXB0IGluamVjdGVkU2NyaXB0ID0gaW5qZWN0ZWRTY3Jp
cHRNYW5hZ2VyLT5pbmplY3RlZFNjcmlwdEZvcihtX2FyZ3VtZW50cy0+Z2xvYmFsU3RhdGUoKSk7
CisgICAgICAgIEluamVjdGVkU2NyaXB0IGluamVjdGVkU2NyaXB0ID0gaW5qZWN0ZWRTY3JpcHRN
YW5hZ2VyLmluamVjdGVkU2NyaXB0Rm9yKG1fYXJndW1lbnRzLT5nbG9iYWxTdGF0ZSgpKTsKICAg
ICAgICAgaWYgKCFpbmplY3RlZFNjcmlwdC5oYXNOb1ZhbHVlKCkpIHsKICAgICAgICAgICAgIFJl
ZjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1l
OjpSZW1vdGVPYmplY3Q+PiBqc29uQXJncyA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PElu
c3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD46OmNyZWF0ZSgpOwogICAg
ICAgICAgICAgaWYgKG1fdHlwZSA9PSBNZXNzYWdlVHlwZTo6VGFibGUgJiYgZ2VuZXJhdGVQcmV2
aWV3ICYmIG1fYXJndW1lbnRzLT5hcmd1bWVudENvdW50KCkpIHsKQEAgLTIyOSwxMiArMjE5LDEy
IEBAIHZvaWQgQ29uc29sZU1lc3NhZ2U6OmFkZFRvRnJvbnRlbmQoQ29uc29sZUZyb250ZW5kRGlz
cGF0Y2hlciogY29uc29sZUZyb250ZW5kRGlzCiAgICAgaWYgKG1fY2FsbFN0YWNrKQogICAgICAg
ICBqc29uT2JqLT5zZXRTdGFja1RyYWNlKG1fY2FsbFN0YWNrLT5idWlsZEluc3BlY3RvckFycmF5
KCkpOwogCi0gICAgY29uc29sZUZyb250ZW5kRGlzcGF0Y2hlci0+bWVzc2FnZUFkZGVkKFdURjo6
bW92ZShqc29uT2JqKSk7CisgICAgY29uc29sZUZyb250ZW5kRGlzcGF0Y2hlci5tZXNzYWdlQWRk
ZWQoV1RGOjptb3ZlKGpzb25PYmopKTsKIH0KIAotdm9pZCBDb25zb2xlTWVzc2FnZTo6dXBkYXRl
UmVwZWF0Q291bnRJbkNvbnNvbGUoQ29uc29sZUZyb250ZW5kRGlzcGF0Y2hlciogY29uc29sZUZy
b250ZW5kRGlzcGF0Y2hlcikKK3ZvaWQgQ29uc29sZU1lc3NhZ2U6OnVwZGF0ZVJlcGVhdENvdW50
SW5Db25zb2xlKENvbnNvbGVGcm9udGVuZERpc3BhdGNoZXImIGNvbnNvbGVGcm9udGVuZERpc3Bh
dGNoZXIpCiB7Ci0gICAgY29uc29sZUZyb250ZW5kRGlzcGF0Y2hlci0+bWVzc2FnZVJlcGVhdENv
dW50VXBkYXRlZChtX3JlcGVhdENvdW50KTsKKyAgICBjb25zb2xlRnJvbnRlbmREaXNwYXRjaGVy
Lm1lc3NhZ2VSZXBlYXRDb3VudFVwZGF0ZWQobV9yZXBlYXRDb3VudCk7CiB9CiAKIGJvb2wgQ29u
c29sZU1lc3NhZ2U6OmlzRXF1YWwoQ29uc29sZU1lc3NhZ2UqIG1zZykgY29uc3QKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvQ29uc29sZU1lc3NhZ2UuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvQ29uc29sZU1lc3NhZ2UuaAppbmRleCBhNzNl
Mjg2MzBhZmM5ZDc4ZDliOTQwOTQ2OGZhNDg0NTM5OTE5Y2U5Li4yMjk2ZjFjMjhlZmI4ODdjMzA1
Y2Y1NTI5M2UyZWVhNzNmZTAyOWE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL0NvbnNvbGVNZXNzYWdlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9Db25zb2xlTWVzc2FnZS5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAwNywgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMDcsIDIwMDgsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICogQ29weXJpZ2h0IChDKSAyMDA4IE1hdHQgTGlsZWsgPHdlYmtpdEBtYXR0bGlsZWsuY29t
PgogICogQ29weXJpZ2h0IChDKSAyMDA5LCAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgpAQCAtNTUsOCArNTUsOCBAQCBwdWJsaWM6CiAgICAgQ29uc29sZU1lc3NhZ2Uo
TWVzc2FnZVNvdXJjZSwgTWVzc2FnZVR5cGUsIE1lc3NhZ2VMZXZlbCwgY29uc3QgU3RyaW5nJiBt
ZXNzYWdlLCBQYXNzUmVmUHRyPFNjcmlwdEFyZ3VtZW50cz4sIEpTQzo6RXhlY1N0YXRlKiwgdW5z
aWduZWQgbG9uZyByZXF1ZXN0SWRlbnRpZmllciA9IDApOwogICAgIH5Db25zb2xlTWVzc2FnZSgp
OwogCi0gICAgdm9pZCBhZGRUb0Zyb250ZW5kKENvbnNvbGVGcm9udGVuZERpc3BhdGNoZXIqLCBJ
bmplY3RlZFNjcmlwdE1hbmFnZXIqLCBib29sIGdlbmVyYXRlUHJldmlldyk7Ci0gICAgdm9pZCB1
cGRhdGVSZXBlYXRDb3VudEluQ29uc29sZShDb25zb2xlRnJvbnRlbmREaXNwYXRjaGVyKik7Cisg
ICAgdm9pZCBhZGRUb0Zyb250ZW5kKENvbnNvbGVGcm9udGVuZERpc3BhdGNoZXImLCBJbmplY3Rl
ZFNjcmlwdE1hbmFnZXImLCBib29sIGdlbmVyYXRlUHJldmlldyk7CisgICAgdm9pZCB1cGRhdGVS
ZXBlYXRDb3VudEluQ29uc29sZShDb25zb2xlRnJvbnRlbmREaXNwYXRjaGVyJik7CiAKICAgICBN
ZXNzYWdlU291cmNlIHNvdXJjZSgpIGNvbnN0IHsgcmV0dXJuIG1fc291cmNlOyB9CiAgICAgY29u
c3QgU3RyaW5nJiBtZXNzYWdlKCkgY29uc3QgeyByZXR1cm4gbV9tZXNzYWdlOyB9CkBAIC04NCw5
ICs4NCw5IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPFNjcmlwdEFyZ3VtZW50cz4gbV9hcmd1bWVu
dHM7CiAgICAgUmVmUHRyPFNjcmlwdENhbGxTdGFjaz4gbV9jYWxsU3RhY2s7CiAgICAgU3RyaW5n
IG1fdXJsOwotICAgIHVuc2lnbmVkIG1fbGluZTsKLSAgICB1bnNpZ25lZCBtX2NvbHVtbjsKLSAg
ICB1bnNpZ25lZCBtX3JlcGVhdENvdW50OworICAgIHVuc2lnbmVkIG1fbGluZSB7IDAgfTsKKyAg
ICB1bnNpZ25lZCBtX2NvbHVtbiB7IDAgfTsKKyAgICB1bnNpZ25lZCBtX3JlcGVhdENvdW50IHsg
MSB9OwogICAgIFN0cmluZyBtX3JlcXVlc3RJZDsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVy
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNHbG9iYWxPYmplY3RJbnNw
ZWN0b3JDb250cm9sbGVyLmNwcAppbmRleCA0NjZmMTY4YjFkNjU5ZmIyYTQxN2Y4NDk3MjMwNGI4
Y2FhNjBmOWQzLi5kYmQyZTc2YzZhMTYxNmVjNDBiOTgyMzZjYTY5ZjBlZmM4ZDRjMjMwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTR2xvYmFsT2JqZWN0SW5z
cGVjdG9yQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9KU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXIuY3BwCkBAIC02OSw5ICs2OSw5IEBA
IEpTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlcjo6SlNHbG9iYWxPYmplY3RJbnNwZWN0
b3JDb250cm9sbGVyKEpTR2xvYmFsT2JqCiAgICAgLCBtX2JhY2tlbmREaXNwYXRjaGVyKEJhY2tl
bmREaXNwYXRjaGVyOjpjcmVhdGUobV9mcm9udGVuZFJvdXRlci5jb3B5UmVmKCkpKQogewogICAg
IGF1dG8gaW5zcGVjdG9yQWdlbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvckFnZW50Pigq
dGhpcyk7Ci0gICAgYXV0byBydW50aW1lQWdlbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEpTR2xvYmFs
T2JqZWN0UnVudGltZUFnZW50PihtX2luamVjdGVkU2NyaXB0TWFuYWdlci5nZXQoKSwgbV9nbG9i
YWxPYmplY3QpOwotICAgIGF1dG8gY29uc29sZUFnZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxKU0ds
b2JhbE9iamVjdENvbnNvbGVBZ2VudD4obV9pbmplY3RlZFNjcmlwdE1hbmFnZXIuZ2V0KCkpOwot
ICAgIGF1dG8gZGVidWdnZXJBZ2VudCA9IHN0ZDo6bWFrZV91bmlxdWU8SlNHbG9iYWxPYmplY3RE
ZWJ1Z2dlckFnZW50PihtX2luamVjdGVkU2NyaXB0TWFuYWdlci5nZXQoKSwgbV9nbG9iYWxPYmpl
Y3QsIGNvbnNvbGVBZ2VudC5nZXQoKSk7CisgICAgYXV0byBydW50aW1lQWdlbnQgPSBzdGQ6Om1h
a2VfdW5pcXVlPEpTR2xvYmFsT2JqZWN0UnVudGltZUFnZW50PigqbV9pbmplY3RlZFNjcmlwdE1h
bmFnZXIsIG1fZ2xvYmFsT2JqZWN0KTsKKyAgICBhdXRvIGNvbnNvbGVBZ2VudCA9IHN0ZDo6bWFr
ZV91bmlxdWU8SlNHbG9iYWxPYmplY3RDb25zb2xlQWdlbnQ+KCptX2luamVjdGVkU2NyaXB0TWFu
YWdlcik7CisgICAgYXV0byBkZWJ1Z2dlckFnZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxKU0dsb2Jh
bE9iamVjdERlYnVnZ2VyQWdlbnQ+KCptX2luamVjdGVkU2NyaXB0TWFuYWdlciwgbV9nbG9iYWxP
YmplY3QsIGNvbnNvbGVBZ2VudC5nZXQoKSk7CiAKICAgICBtX2luc3BlY3RvckFnZW50ID0gaW5z
cGVjdG9yQWdlbnQuZ2V0KCk7CiAgICAgbV9kZWJ1Z2dlckFnZW50ID0gZGVidWdnZXJBZ2VudC5n
ZXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRz
L0luc3BlY3RvckFnZW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3RvckFnZW50LmNwcAppbmRleCAxMzk3ODcyZjg5ZDUzMDZkNmNjY2YyMjQ0MTdi
NTFkNmU4MzQxMDcwLi44MWU4YmI3YmFhNGIxNjkzODgxNTgxNWQ5ZjQzMDk2ZGJjMGM2OTBjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0
b3JBZ2VudC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9yQWdlbnQuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAwNy0yMDEwLCAyMDE1IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MDctMjAxMCwgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmln
aHQgKEMpIDIwMDggTWF0dCBMaWxlayA8d2Via2l0QG1hdHRsaWxlay5jb20+CiAgKiBDb3B5cmln
aHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCkBAIC00MCw3
ICs0MCw2IEBAIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogSW5zcGVjdG9yQWdlbnQ6Okluc3BlY3Rv
ckFnZW50KEluc3BlY3RvckVudmlyb25tZW50JiBlbnZpcm9ubWVudCkKICAgICA6IEluc3BlY3Rv
ckFnZW50QmFzZShBU0NJSUxpdGVyYWwoIkluc3BlY3RvciIpKQogICAgICwgbV9lbnZpcm9ubWVu
dChlbnZpcm9ubWVudCkKLSAgICAsIG1fZW5hYmxlZChmYWxzZSkKIHsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQWdlbnQu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckFnZW50
LmgKaW5kZXggNmI4YmY1ODhkMjIzMTliY2Q3MDg0NjZkMmM3ZjcxMTVlYmQyYWYyMy4uMWU4ZmI2
OTBlYjU1ZmZiY2U0NWQwMTE4Yjk1YzQ0ZGI2MDcxMDlmZSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQWdlbnQuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JBZ2VudC5oCkBAIC03
NSw3ICs3NSw3IEBAIHByaXZhdGU6CiAjaWYgRU5BQkxFKElOU1BFQ1RPUl9BTFRFUk5BVEVfRElT
UEFUQ0hFUlMpCiAgICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PFN0cmluZz4+
IG1fcGVuZGluZ0V4dHJhRG9tYWluc0RhdGE7CiAjZW5kaWYKLSAgICBib29sIG1fZW5hYmxlZDsK
KyAgICBib29sIG1fZW5hYmxlZCB7IGZhbHNlIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBJbnNw
ZWN0b3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRz
L0luc3BlY3RvckNvbnNvbGVBZ2VudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL2FnZW50cy9JbnNwZWN0b3JDb25zb2xlQWdlbnQuY3BwCmluZGV4IDE3Njc1MDdlODEzMWEw
MmVkMTYyZjk5OTU3Y2Q0YzlmN2Q2OWYzYTEuLjgwYzk1ZGRmZjJiNmM0YmM2YzdhMzFhYzBjYmIx
NjdjMTljOTdmMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3RvckNvbnNvbGVBZ2VudC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ29uc29sZUFnZW50LmNwcApAQCAtNDIsMTIg
KzQyLDkgQEAgbmFtZXNwYWNlIEluc3BlY3RvciB7CiBzdGF0aWMgY29uc3QgdW5zaWduZWQgbWF4
aW11bUNvbnNvbGVNZXNzYWdlcyA9IDEwMDA7CiBzdGF0aWMgY29uc3QgaW50IGV4cGlyZUNvbnNv
bGVNZXNzYWdlc1N0ZXAgPSAxMDA7CiAKLUluc3BlY3RvckNvbnNvbGVBZ2VudDo6SW5zcGVjdG9y
Q29uc29sZUFnZW50KEluamVjdGVkU2NyaXB0TWFuYWdlciogaW5qZWN0ZWRTY3JpcHRNYW5hZ2Vy
KQorSW5zcGVjdG9yQ29uc29sZUFnZW50OjpJbnNwZWN0b3JDb25zb2xlQWdlbnQoSW5qZWN0ZWRT
Y3JpcHRNYW5hZ2VyJiBpbmplY3RlZFNjcmlwdE1hbmFnZXIpCiAgICAgOiBJbnNwZWN0b3JBZ2Vu
dEJhc2UoQVNDSUlMaXRlcmFsKCJDb25zb2xlIikpCiAgICAgLCBtX2luamVjdGVkU2NyaXB0TWFu
YWdlcihpbmplY3RlZFNjcmlwdE1hbmFnZXIpCi0gICAgLCBtX3ByZXZpb3VzTWVzc2FnZShudWxs
cHRyKQotICAgICwgbV9leHBpcmVkQ29uc29sZU1lc3NhZ2VDb3VudCgwKQotICAgICwgbV9lbmFi
bGVkKGZhbHNlKQogewogfQogCkBAIC03OSwxMiArNzYsMTIgQEAgdm9pZCBJbnNwZWN0b3JDb25z
b2xlQWdlbnQ6OmVuYWJsZShFcnJvclN0cmluZyYpCiAKICAgICBpZiAobV9leHBpcmVkQ29uc29s
ZU1lc3NhZ2VDb3VudCkgewogICAgICAgICBDb25zb2xlTWVzc2FnZSBleHBpcmVkTWVzc2FnZShN
ZXNzYWdlU291cmNlOjpPdGhlciwgTWVzc2FnZVR5cGU6OkxvZywgTWVzc2FnZUxldmVsOjpXYXJu
aW5nLCBTdHJpbmc6OmZvcm1hdCgiJWQgY29uc29sZSBtZXNzYWdlcyBhcmUgbm90IHNob3duLiIs
IG1fZXhwaXJlZENvbnNvbGVNZXNzYWdlQ291bnQpKTsKLSAgICAgICAgZXhwaXJlZE1lc3NhZ2Uu
YWRkVG9Gcm9udGVuZChtX2Zyb250ZW5kRGlzcGF0Y2hlci5nZXQoKSwgbV9pbmplY3RlZFNjcmlw
dE1hbmFnZXIsIGZhbHNlKTsKKyAgICAgICAgZXhwaXJlZE1lc3NhZ2UuYWRkVG9Gcm9udGVuZCgq
bV9mcm9udGVuZERpc3BhdGNoZXIsIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLCBmYWxzZSk7CiAg
ICAgfQogCiAgICAgc2l6ZV90IG1lc3NhZ2VDb3VudCA9IG1fY29uc29sZU1lc3NhZ2VzLnNpemUo
KTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1lc3NhZ2VDb3VudDsgKytpKQotICAgICAg
ICBtX2NvbnNvbGVNZXNzYWdlc1tpXS0+YWRkVG9Gcm9udGVuZChtX2Zyb250ZW5kRGlzcGF0Y2hl
ci5nZXQoKSwgbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIsIGZhbHNlKTsKKyAgICAgICAgbV9jb25z
b2xlTWVzc2FnZXNbaV0tPmFkZFRvRnJvbnRlbmQoKm1fZnJvbnRlbmREaXNwYXRjaGVyLCBtX2lu
amVjdGVkU2NyaXB0TWFuYWdlciwgZmFsc2UpOwogfQogCiB2b2lkIEluc3BlY3RvckNvbnNvbGVB
Z2VudDo6ZGlzYWJsZShFcnJvclN0cmluZyYpCkBAIC0xMDEsNyArOTgsNyBAQCB2b2lkIEluc3Bl
Y3RvckNvbnNvbGVBZ2VudDo6Y2xlYXJNZXNzYWdlcyhFcnJvclN0cmluZyYpCiAgICAgbV9leHBp
cmVkQ29uc29sZU1lc3NhZ2VDb3VudCA9IDA7CiAgICAgbV9wcmV2aW91c01lc3NhZ2UgPSBudWxs
cHRyOwogCi0gICAgbV9pbmplY3RlZFNjcmlwdE1hbmFnZXItPnJlbGVhc2VPYmplY3RHcm91cChB
U0NJSUxpdGVyYWwoImNvbnNvbGUiKSk7CisgICAgbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIucmVs
ZWFzZU9iamVjdEdyb3VwKEFTQ0lJTGl0ZXJhbCgiY29uc29sZSIpKTsKIAogICAgIGlmIChtX2Zy
b250ZW5kRGlzcGF0Y2hlciAmJiBtX2VuYWJsZWQpCiAgICAgICAgIG1fZnJvbnRlbmREaXNwYXRj
aGVyLT5tZXNzYWdlc0NsZWFyZWQoKTsKQEAgLTExOCw3ICsxMTUsNyBAQCB2b2lkIEluc3BlY3Rv
ckNvbnNvbGVBZ2VudDo6cmVzZXQoKQogCiB2b2lkIEluc3BlY3RvckNvbnNvbGVBZ2VudDo6YWRk
TWVzc2FnZVRvQ29uc29sZShzdGQ6OnVuaXF1ZV9wdHI8Q29uc29sZU1lc3NhZ2U+IG1lc3NhZ2Up
CiB7Ci0gICAgaWYgKCFtX2luamVjdGVkU2NyaXB0TWFuYWdlci0+aW5zcGVjdG9yRW52aXJvbm1l
bnQoKS5kZXZlbG9wZXJFeHRyYXNFbmFibGVkKCkpCisgICAgaWYgKCFtX2luamVjdGVkU2NyaXB0
TWFuYWdlci5pbnNwZWN0b3JFbnZpcm9ubWVudCgpLmRldmVsb3BlckV4dHJhc0VuYWJsZWQoKSkK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKG1lc3NhZ2UtPnR5cGUoKSA9PSBNZXNzYWdlVHlw
ZTo6Q2xlYXIpIHsKQEAgLTIwMCwxOCArMTk3LDE4IEBAIHN0YXRpYyBib29sIGlzR3JvdXBNZXNz
YWdlKE1lc3NhZ2VUeXBlIHR5cGUpCiAKIHZvaWQgSW5zcGVjdG9yQ29uc29sZUFnZW50OjphZGRD
b25zb2xlTWVzc2FnZShzdGQ6OnVuaXF1ZV9wdHI8Q29uc29sZU1lc3NhZ2U+IGNvbnNvbGVNZXNz
YWdlKQogewotICAgIEFTU0VSVChtX2luamVjdGVkU2NyaXB0TWFuYWdlci0+aW5zcGVjdG9yRW52
aXJvbm1lbnQoKS5kZXZlbG9wZXJFeHRyYXNFbmFibGVkKCkpOworICAgIEFTU0VSVChtX2luamVj
dGVkU2NyaXB0TWFuYWdlci5pbnNwZWN0b3JFbnZpcm9ubWVudCgpLmRldmVsb3BlckV4dHJhc0Vu
YWJsZWQoKSk7CiAgICAgQVNTRVJUX0FSRyhjb25zb2xlTWVzc2FnZSwgY29uc29sZU1lc3NhZ2Up
OwogCiAgICAgaWYgKG1fcHJldmlvdXNNZXNzYWdlICYmICFpc0dyb3VwTWVzc2FnZShtX3ByZXZp
b3VzTWVzc2FnZS0+dHlwZSgpKSAmJiBtX3ByZXZpb3VzTWVzc2FnZS0+aXNFcXVhbChjb25zb2xl
TWVzc2FnZS5nZXQoKSkpIHsKICAgICAgICAgbV9wcmV2aW91c01lc3NhZ2UtPmluY3JlbWVudENv
dW50KCk7CiAgICAgICAgIGlmIChtX2Zyb250ZW5kRGlzcGF0Y2hlciAmJiBtX2VuYWJsZWQpCi0g
ICAgICAgICAgICBtX3ByZXZpb3VzTWVzc2FnZS0+dXBkYXRlUmVwZWF0Q291bnRJbkNvbnNvbGUo
bV9mcm9udGVuZERpc3BhdGNoZXIuZ2V0KCkpOworICAgICAgICAgICAgbV9wcmV2aW91c01lc3Nh
Z2UtPnVwZGF0ZVJlcGVhdENvdW50SW5Db25zb2xlKCptX2Zyb250ZW5kRGlzcGF0Y2hlcik7CiAg
ICAgfSBlbHNlIHsKICAgICAgICAgbV9wcmV2aW91c01lc3NhZ2UgPSBjb25zb2xlTWVzc2FnZS5n
ZXQoKTsKICAgICAgICAgbV9jb25zb2xlTWVzc2FnZXMuYXBwZW5kKFdURjo6bW92ZShjb25zb2xl
TWVzc2FnZSkpOwogICAgICAgICBpZiAobV9mcm9udGVuZERpc3BhdGNoZXIgJiYgbV9lbmFibGVk
KQotICAgICAgICAgICAgbV9wcmV2aW91c01lc3NhZ2UtPmFkZFRvRnJvbnRlbmQobV9mcm9udGVu
ZERpc3BhdGNoZXIuZ2V0KCksIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLCB0cnVlKTsKKyAgICAg
ICAgICAgIG1fcHJldmlvdXNNZXNzYWdlLT5hZGRUb0Zyb250ZW5kKCptX2Zyb250ZW5kRGlzcGF0
Y2hlciwgbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIsIHRydWUpOwogICAgIH0KIAogICAgIGlmICgh
bV9mcm9udGVuZERpc3BhdGNoZXIgJiYgbV9jb25zb2xlTWVzc2FnZXMuc2l6ZSgpID49IG1heGlt
dW1Db25zb2xlTWVzc2FnZXMpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNvbnNvbGVBZ2VudC5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ29uc29sZUFnZW50LmgKaW5kZXggYWJh
MDZhMmMxNDgxYWYyMDdlZjdmOWNmNTFlZjY3OTVhZTAxZDk2My4uZDEyMTQ3ZTI2ZjAxMzUxNDcx
ZWJmNTczOGY1OTVhY2Q0ODFiMDZjNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ29uc29sZUFnZW50LmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ29uc29sZUFnZW50LmgKQEAg
LTUyLDcgKzUyLDcgQEAgY2xhc3MgSlNfRVhQT1JUX1BSSVZBVEUgSW5zcGVjdG9yQ29uc29sZUFn
ZW50IDogcHVibGljIEluc3BlY3RvckFnZW50QmFzZSwgcHVibGkKICAgICBXVEZfTUFLRV9OT05D
T1BZQUJMRShJbnNwZWN0b3JDb25zb2xlQWdlbnQpOwogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwogcHVibGljOgotICAgIEluc3BlY3RvckNvbnNvbGVBZ2VudChJbmplY3RlZFNjcmlwdE1h
bmFnZXIqKTsKKyAgICBJbnNwZWN0b3JDb25zb2xlQWdlbnQoSW5qZWN0ZWRTY3JpcHRNYW5hZ2Vy
Jik7CiAgICAgdmlydHVhbCB+SW5zcGVjdG9yQ29uc29sZUFnZW50KCk7CiAKICAgICB2aXJ0dWFs
IHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEZyb250ZW5kUm91dGVyKiwgQmFja2Vu
ZERpc3BhdGNoZXIqKSBvdmVycmlkZTsKQEAgLTgwLDE1ICs4MCwxNSBAQCBwdWJsaWM6CiBwcm90
ZWN0ZWQ6CiAgICAgdm9pZCBhZGRDb25zb2xlTWVzc2FnZShzdGQ6OnVuaXF1ZV9wdHI8Q29uc29s
ZU1lc3NhZ2U+KTsKIAotICAgIEluamVjdGVkU2NyaXB0TWFuYWdlciogbV9pbmplY3RlZFNjcmlw
dE1hbmFnZXI7CisgICAgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyJiBtX2luamVjdGVkU2NyaXB0TWFu
YWdlcjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8Q29uc29sZUZyb250ZW5kRGlzcGF0Y2hlcj4gbV9m
cm9udGVuZERpc3BhdGNoZXI7CiAgICAgUmVmUHRyPENvbnNvbGVCYWNrZW5kRGlzcGF0Y2hlcj4g
bV9iYWNrZW5kRGlzcGF0Y2hlcjsKLSAgICBDb25zb2xlTWVzc2FnZSogbV9wcmV2aW91c01lc3Nh
Z2U7CisgICAgQ29uc29sZU1lc3NhZ2UqIG1fcHJldmlvdXNNZXNzYWdlIHsgbnVsbHB0ciB9Owog
ICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Q29uc29sZU1lc3NhZ2U+PiBtX2NvbnNvbGVNZXNz
YWdlczsKLSAgICBpbnQgbV9leHBpcmVkQ29uc29sZU1lc3NhZ2VDb3VudDsKKyAgICBpbnQgbV9l
eHBpcmVkQ29uc29sZU1lc3NhZ2VDb3VudCB7IDAgfTsKICAgICBIYXNoTWFwPFN0cmluZywgdW5z
aWduZWQ+IG1fY291bnRzOwogICAgIEhhc2hNYXA8U3RyaW5nLCBkb3VibGU+IG1fdGltZXM7Ci0g
ICAgYm9vbCBtX2VuYWJsZWQ7CisgICAgYm9vbCBtX2VuYWJsZWQgeyBmYWxzZSB9OwogfTsKIAog
fSAvLyBuYW1lc3BhY2UgSW5zcGVjdG9yCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3Bw
CmluZGV4IDg2MWEyZDk4NWZjMmY0NWI4YTIzNjJjYjgyZTQ5YmU5NGY5MDk2MDQuLmRmZmVhNjlk
ZTczYjFkYWE4ZmE0MGFkMmZmODg4YzI1ZWUyNjYxNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRlYnVn
Z2VyQWdlbnQuY3BwCkBAIC01NSw3ICs1NSw3IEBAIHN0YXRpYyBTdHJpbmcgb2JqZWN0R3JvdXBG
b3JCcmVha3BvaW50QWN0aW9uKGNvbnN0IFNjcmlwdEJyZWFrcG9pbnRBY3Rpb24mIGFjdGlvCiAg
ICAgcmV0dXJuIG1ha2VTdHJpbmcob2JqZWN0R3JvdXAsIFN0cmluZzo6bnVtYmVyKGFjdGlvbi5p
ZGVudGlmaWVyKSk7CiB9CiAKLUluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6Okluc3BlY3RvckRlYnVn
Z2VyQWdlbnQoSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiBpbmplY3RlZFNjcmlwdE1hbmFnZXIpCitJ
bnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50KEluamVjdGVkU2Ny
aXB0TWFuYWdlciYgaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKQogICAgIDogSW5zcGVjdG9yQWdlbnRC
YXNlKEFTQ0lJTGl0ZXJhbCgiRGVidWdnZXIiKSkKICAgICAsIG1faW5qZWN0ZWRTY3JpcHRNYW5h
Z2VyKGluamVjdGVkU2NyaXB0TWFuYWdlcikKICAgICAsIG1fY29udGludWVUb0xvY2F0aW9uQnJl
YWtwb2ludElEKEpTQzo6bm9CcmVha3BvaW50SUQpCkBAIC0zODIsNyArMzgyLDcgQEAgdm9pZCBJ
bnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpyZW1vdmVCcmVha3BvaW50KEVycm9yU3RyaW5nJiwgY29u
c3QgU3RyaW5nJiBicmVha3AKIAogICAgICAgICBjb25zdCBCcmVha3BvaW50QWN0aW9ucyYgYnJl
YWtwb2ludEFjdGlvbnMgPSBzY3JpcHREZWJ1Z1NlcnZlcigpLmdldEFjdGlvbnNGb3JCcmVha3Bv
aW50KGJyZWFrcG9pbnRJRCk7CiAgICAgICAgIGZvciAoYXV0byYgYWN0aW9uIDogYnJlYWtwb2lu
dEFjdGlvbnMpCi0gICAgICAgICAgICBtX2luamVjdGVkU2NyaXB0TWFuYWdlci0+cmVsZWFzZU9i
amVjdEdyb3VwKG9iamVjdEdyb3VwRm9yQnJlYWtwb2ludEFjdGlvbihhY3Rpb24pKTsKKyAgICAg
ICAgICAgIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLnJlbGVhc2VPYmplY3RHcm91cChvYmplY3RH
cm91cEZvckJyZWFrcG9pbnRBY3Rpb24oYWN0aW9uKSk7CiAKICAgICAgICAgc2NyaXB0RGVidWdT
ZXJ2ZXIoKS5yZW1vdmVCcmVha3BvaW50KGJyZWFrcG9pbnRJRCk7CiAgICAgfQpAQCAtNDYyLDcg
KzQ2Miw3IEBAIHZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6Z2V0U2NyaXB0U291cmNlKEVy
cm9yU3RyaW5nJiBlcnJvciwgY29uc3QgU3RyaW5nJiBzCiAKIHZvaWQgSW5zcGVjdG9yRGVidWdn
ZXJBZ2VudDo6Z2V0RnVuY3Rpb25EZXRhaWxzKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29u
c3QgU3RyaW5nJiBmdW5jdGlvbklkLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGVidWdn
ZXI6OkZ1bmN0aW9uRGV0YWlscz4mIGRldGFpbHMpCiB7Ci0gICAgSW5qZWN0ZWRTY3JpcHQgaW5q
ZWN0ZWRTY3JpcHQgPSBtX2luamVjdGVkU2NyaXB0TWFuYWdlci0+aW5qZWN0ZWRTY3JpcHRGb3JP
YmplY3RJZChmdW5jdGlvbklkKTsKKyAgICBJbmplY3RlZFNjcmlwdCBpbmplY3RlZFNjcmlwdCA9
IG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmluamVjdGVkU2NyaXB0Rm9yT2JqZWN0SWQoZnVuY3Rp
b25JZCk7CiAgICAgaWYgKGluamVjdGVkU2NyaXB0Lmhhc05vVmFsdWUoKSkgewogICAgICAgICBl
cnJvclN0cmluZyA9IEFTQ0lJTGl0ZXJhbCgiRnVuY3Rpb24gb2JqZWN0IGlkIGlzIG9ic29sZXRl
Iik7CiAgICAgICAgIHJldHVybjsKQEAgLTU1Myw3ICs1NTMsNyBAQCB2b2lkIEluc3BlY3RvckRl
YnVnZ2VyQWdlbnQ6OnNldFBhdXNlT25FeGNlcHRpb25zKEVycm9yU3RyaW5nJiBlcnJvclN0cmlu
ZywgY29ucwogCiB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmV2YWx1YXRlT25DYWxsRnJh
bWUoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIGNhbGxGcmFtZUlkLCBj
b25zdCBTdHJpbmcmIGV4cHJlc3Npb24sIGNvbnN0IFN0cmluZyogY29uc3Qgb2JqZWN0R3JvdXAs
IGNvbnN0IGJvb2wqIGNvbnN0IGluY2x1ZGVDb21tYW5kTGluZUFQSSwgY29uc3QgYm9vbCogY29u
c3QgZG9Ob3RQYXVzZU9uRXhjZXB0aW9uc0FuZE11dGVDb25zb2xlLCBjb25zdCBib29sKiBjb25z
dCByZXR1cm5CeVZhbHVlLCBjb25zdCBib29sKiBnZW5lcmF0ZVByZXZpZXcsIGNvbnN0IGJvb2wq
IHNhdmVSZXN1bHQsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpSZW1vdGVP
YmplY3Q+JiByZXN1bHQsIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1dDxib29sPiogd2Fz
VGhyb3duLCBJbnNwZWN0b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8aW50Piogc2F2ZWRSZXN1bHRJ
bmRleCkKIHsKLSAgICBJbmplY3RlZFNjcmlwdCBpbmplY3RlZFNjcmlwdCA9IG1faW5qZWN0ZWRT
Y3JpcHRNYW5hZ2VyLT5pbmplY3RlZFNjcmlwdEZvck9iamVjdElkKGNhbGxGcmFtZUlkKTsKKyAg
ICBJbmplY3RlZFNjcmlwdCBpbmplY3RlZFNjcmlwdCA9IG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2Vy
LmluamVjdGVkU2NyaXB0Rm9yT2JqZWN0SWQoY2FsbEZyYW1lSWQpOwogICAgIGlmIChpbmplY3Rl
ZFNjcmlwdC5oYXNOb1ZhbHVlKCkpIHsKICAgICAgICAgZXJyb3JTdHJpbmcgPSBBU0NJSUxpdGVy
YWwoIkluc3BlY3RlZCBmcmFtZSBoYXMgZ29uZSIpOwogICAgICAgICByZXR1cm47CkBAIC02NjEs
NyArNjYxLDcgQEAgdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpkaWRQYXVzZShKU0M6OkV4
ZWNTdGF0ZSogc2NyaXB0U3RhdGUsIGNvbnN0IERlcHJlY2EKICAgICBtX3BhdXNlZFNjcmlwdFN0
YXRlID0gc2NyaXB0U3RhdGU7CiAgICAgbV9jdXJyZW50Q2FsbFN0YWNrID0gY2FsbEZyYW1lczsK
IAotICAgIEluamVjdGVkU2NyaXB0IGluamVjdGVkU2NyaXB0ID0gbV9pbmplY3RlZFNjcmlwdE1h
bmFnZXItPmluamVjdGVkU2NyaXB0Rm9yKHNjcmlwdFN0YXRlKTsKKyAgICBJbmplY3RlZFNjcmlw
dCBpbmplY3RlZFNjcmlwdCA9IG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmluamVjdGVkU2NyaXB0
Rm9yKHNjcmlwdFN0YXRlKTsKIAogICAgIC8vIElmIGEgaGlnaCBsZXZlbCBwYXVzZSBwYXVzZSBy
ZWFzb24gaXMgbm90IGFscmVhZHkgc2V0LCB0cnkgdG8gaW5mZXIgYSByZWFzb24gZnJvbSB0aGUg
ZGVidWdnZXIuCiAgICAgaWYgKG1fYnJlYWtSZWFzb24gPT0gRGVidWdnZXJGcm9udGVuZERpc3Bh
dGNoZXI6OlJlYXNvbjo6T3RoZXIpIHsKQEAgLTcxMiw3ICs3MTIsNyBAQCB2b2lkIEluc3BlY3Rv
ckRlYnVnZ2VyQWdlbnQ6OmRpZFBhdXNlKEpTQzo6RXhlY1N0YXRlKiBzY3JpcHRTdGF0ZSwgY29u
c3QgRGVwcmVjYQogICAgIGlmIChtX2xpc3RlbmVyKQogICAgICAgICBtX2xpc3RlbmVyLT5kaWRQ
YXVzZSgpOwogCi0gICAgUmVmUHRyPFN0b3B3YXRjaD4gc3RvcHdhdGNoID0gbV9pbmplY3RlZFNj
cmlwdE1hbmFnZXItPmluc3BlY3RvckVudmlyb25tZW50KCkuZXhlY3V0aW9uU3RvcHdhdGNoKCk7
CisgICAgUmVmUHRyPFN0b3B3YXRjaD4gc3RvcHdhdGNoID0gbV9pbmplY3RlZFNjcmlwdE1hbmFn
ZXIuaW5zcGVjdG9yRW52aXJvbm1lbnQoKS5leGVjdXRpb25TdG9wd2F0Y2goKTsKICAgICBpZiAo
c3RvcHdhdGNoICYmIHN0b3B3YXRjaC0+aXNBY3RpdmUoKSkgewogICAgICAgICBzdG9wd2F0Y2gt
PnN0b3AoKTsKICAgICAgICAgbV9kaWRQYXVzZVN0b3B3YXRjaCA9IHRydWU7CkBAIC03MjYsMTMg
KzcyNiwxMyBAQCB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmJyZWFrcG9pbnRBY3Rpb25T
b3VuZChpbnQgYnJlYWtwb2ludEFjdGlvbklkZW50aWZpZQogCiB2b2lkIEluc3BlY3RvckRlYnVn
Z2VyQWdlbnQ6OmJyZWFrcG9pbnRBY3Rpb25Qcm9iZShKU0M6OkV4ZWNTdGF0ZSogc2NyaXB0U3Rh
dGUsIGNvbnN0IFNjcmlwdEJyZWFrcG9pbnRBY3Rpb24mIGFjdGlvbiwgdW5zaWduZWQgYmF0Y2hJ
ZCwgdW5zaWduZWQgc2FtcGxlSWQsIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBzYW1w
bGUpCiB7Ci0gICAgSW5qZWN0ZWRTY3JpcHQgaW5qZWN0ZWRTY3JpcHQgPSBtX2luamVjdGVkU2Ny
aXB0TWFuYWdlci0+aW5qZWN0ZWRTY3JpcHRGb3Ioc2NyaXB0U3RhdGUpOworICAgIEluamVjdGVk
U2NyaXB0IGluamVjdGVkU2NyaXB0ID0gbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIuaW5qZWN0ZWRT
Y3JpcHRGb3Ioc2NyaXB0U3RhdGUpOwogICAgIFJlZlB0cjxQcm90b2NvbDo6UnVudGltZTo6UmVt
b3RlT2JqZWN0PiBwYXlsb2FkID0gaW5qZWN0ZWRTY3JpcHQud3JhcE9iamVjdChzYW1wbGUsIG9i
amVjdEdyb3VwRm9yQnJlYWtwb2ludEFjdGlvbihhY3Rpb24pLCB0cnVlKTsKICAgICBhdXRvIHJl
c3VsdCA9IFByb3RvY29sOjpEZWJ1Z2dlcjo6UHJvYmVTYW1wbGU6OmNyZWF0ZSgpCiAgICAgICAg
IC5zZXRQcm9iZUlkKGFjdGlvbi5pZGVudGlmaWVyKQogICAgICAgICAuc2V0QmF0Y2hJZChiYXRj
aElkKQogICAgICAgICAuc2V0U2FtcGxlSWQoc2FtcGxlSWQpCi0gICAgICAgIC5zZXRUaW1lc3Rh
bXAobV9pbmplY3RlZFNjcmlwdE1hbmFnZXItPmluc3BlY3RvckVudmlyb25tZW50KCkuZXhlY3V0
aW9uU3RvcHdhdGNoKCktPmVsYXBzZWRUaW1lKCkpCisgICAgICAgIC5zZXRUaW1lc3RhbXAobV9p
bmplY3RlZFNjcmlwdE1hbmFnZXIuaW5zcGVjdG9yRW52aXJvbm1lbnQoKS5leGVjdXRpb25TdG9w
d2F0Y2goKS0+ZWxhcHNlZFRpbWUoKSkKICAgICAgICAgLnNldFBheWxvYWQocGF5bG9hZC5yZWxl
YXNlKCkpCiAgICAgICAgIC5yZWxlYXNlKCk7CiAKQEAgLTc0MywxMiArNzQzLDEyIEBAIHZvaWQg
SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6ZGlkQ29udGludWUoKQogewogICAgIGlmIChtX2RpZFBh
dXNlU3RvcHdhdGNoKSB7CiAgICAgICAgIG1fZGlkUGF1c2VTdG9wd2F0Y2ggPSBmYWxzZTsKLSAg
ICAgICAgbV9pbmplY3RlZFNjcmlwdE1hbmFnZXItPmluc3BlY3RvckVudmlyb25tZW50KCkuZXhl
Y3V0aW9uU3RvcHdhdGNoKCktPnN0YXJ0KCk7CisgICAgICAgIG1faW5qZWN0ZWRTY3JpcHRNYW5h
Z2VyLmluc3BlY3RvckVudmlyb25tZW50KCkuZXhlY3V0aW9uU3RvcHdhdGNoKCktPnN0YXJ0KCk7
CiAgICAgfQogCiAgICAgbV9wYXVzZWRTY3JpcHRTdGF0ZSA9IG51bGxwdHI7CiAgICAgbV9jdXJy
ZW50Q2FsbFN0YWNrID0gRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUoKTsKLSAgICBtX2luamVjdGVk
U2NyaXB0TWFuYWdlci0+cmVsZWFzZU9iamVjdEdyb3VwKEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6
OmJhY2t0cmFjZU9iamVjdEdyb3VwKTsKKyAgICBtX2luamVjdGVkU2NyaXB0TWFuYWdlci5yZWxl
YXNlT2JqZWN0R3JvdXAoSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6YmFja3RyYWNlT2JqZWN0R3Jv
dXApOwogICAgIGNsZWFyQnJlYWtEZXRhaWxzKCk7CiAgICAgY2xlYXJFeGNlcHRpb25WYWx1ZSgp
OwogCkBAIC04MjEsNyArODIxLDcgQEAgdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpjbGVh
ckJyZWFrRGV0YWlscygpCiB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmNsZWFyRXhjZXB0
aW9uVmFsdWUoKQogewogICAgIGlmIChtX2hhc0V4Y2VwdGlvblZhbHVlKSB7Ci0gICAgICAgIG1f
aW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLT5jbGVhckV4Y2VwdGlvblZhbHVlKCk7CisgICAgICAgIG1f
aW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNsZWFyRXhjZXB0aW9uVmFsdWUoKTsKICAgICAgICAgbV9o
YXNFeGNlcHRpb25WYWx1ZSA9IGZhbHNlOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRlYnVnZ2Vy
QWdlbnQuaAppbmRleCA0MWFiZDA2MjdjMGM4NjM2NTg0ODVjYjY2ZGUyZTJkNjdkMDRiOTZmLi44
ZDE5NDI1MWYxNTA4MzI3OTEzOWJjMzdjOTY3ZGMyODJiOTAwY2EyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
RGVidWdnZXJBZ2VudC5oCkBAIC0xMDksOSArMTA5LDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
U2NyaXB0RGVidWdTZXJ2ZXImIHNjcmlwdERlYnVnU2VydmVyKCkgPSAwOwogCiBwcm90ZWN0ZWQ6
Ci0gICAgSW5zcGVjdG9yRGVidWdnZXJBZ2VudChJbmplY3RlZFNjcmlwdE1hbmFnZXIqKTsKKyAg
ICBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50KEluamVjdGVkU2NyaXB0TWFuYWdlciYpOwogCi0gICAg
SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiBpbmplY3RlZFNjcmlwdE1hbmFnZXIoKSBjb25zdCB7IHJl
dHVybiBtX2luamVjdGVkU2NyaXB0TWFuYWdlcjsgfQorICAgIEluamVjdGVkU2NyaXB0TWFuYWdl
ciYgaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKCkgY29uc3QgeyByZXR1cm4gbV9pbmplY3RlZFNjcmlw
dE1hbmFnZXI7IH0KICAgICB2aXJ0dWFsIEluamVjdGVkU2NyaXB0IGluamVjdGVkU2NyaXB0Rm9y
RXZhbChFcnJvclN0cmluZyYsIGNvbnN0IGludCogZXhlY3V0aW9uQ29udGV4dElkKSA9IDA7CiAK
ICAgICB2aXJ0dWFsIHZvaWQgc3RhcnRMaXN0ZW5pbmdTY3JpcHREZWJ1Z1NlcnZlcigpID0gMDsK
QEAgLTE1NCwxMSArMTU0LDExIEBAIHByaXZhdGU6CiAgICAgdHlwZWRlZiBIYXNoTWFwPFN0cmlu
ZywgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4+IEJyZWFrcG9pbnRJZGVudGlmaWVyVG9CcmVha3Bv
aW50TWFwOwogICAgIHR5cGVkZWYgSGFzaE1hcDxKU0M6OkJyZWFrcG9pbnRJRCwgU3RyaW5nPiBE
ZWJ1Z1NlcnZlckJyZWFrcG9pbnRJRFRvQnJlYWtwb2ludElkZW50aWZpZXI7CiAKLSAgICBJbmpl
Y3RlZFNjcmlwdE1hbmFnZXIqIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOworICAgIEluamVjdGVk
U2NyaXB0TWFuYWdlciYgbV9pbmplY3RlZFNjcmlwdE1hbmFnZXI7CiAgICAgc3RkOjp1bmlxdWVf
cHRyPERlYnVnZ2VyRnJvbnRlbmREaXNwYXRjaGVyPiBtX2Zyb250ZW5kRGlzcGF0Y2hlcjsKICAg
ICBSZWZQdHI8RGVidWdnZXJCYWNrZW5kRGlzcGF0Y2hlcj4gbV9iYWNrZW5kRGlzcGF0Y2hlcjsK
LSAgICBMaXN0ZW5lciogbV9saXN0ZW5lciB7bnVsbHB0cn07Ci0gICAgSlNDOjpFeGVjU3RhdGUq
IG1fcGF1c2VkU2NyaXB0U3RhdGUge251bGxwdHJ9OworICAgIExpc3RlbmVyKiBtX2xpc3RlbmVy
IHsgbnVsbHB0ciB9OworICAgIEpTQzo6RXhlY1N0YXRlKiBtX3BhdXNlZFNjcmlwdFN0YXRlIHsg
bnVsbHB0ciB9OwogICAgIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIG1fY3VycmVudENhbGxTdGFj
azsKICAgICBTY3JpcHRzTWFwIG1fc2NyaXB0czsKICAgICBCcmVha3BvaW50SWRlbnRpZmllclRv
RGVidWdTZXJ2ZXJCcmVha3BvaW50SURzTWFwIG1fYnJlYWtwb2ludElkZW50aWZpZXJUb0RlYnVn
U2VydmVyQnJlYWtwb2ludElEczsKQEAgLTE2NywxMCArMTY3LDEwIEBAIHByaXZhdGU6CiAgICAg
SlNDOjpCcmVha3BvaW50SUQgbV9jb250aW51ZVRvTG9jYXRpb25CcmVha3BvaW50SUQ7CiAgICAg
RGVidWdnZXJGcm9udGVuZERpc3BhdGNoZXI6OlJlYXNvbiBtX2JyZWFrUmVhc29uOwogICAgIFJl
ZlB0cjxJbnNwZWN0b3JPYmplY3Q+IG1fYnJlYWtBdXhEYXRhOwotICAgIGJvb2wgbV9lbmFibGVk
IHtmYWxzZX07Ci0gICAgYm9vbCBtX2phdmFTY3JpcHRQYXVzZVNjaGVkdWxlZCB7ZmFsc2V9Owot
ICAgIGJvb2wgbV9oYXNFeGNlcHRpb25WYWx1ZSB7ZmFsc2V9OwotICAgIGJvb2wgbV9kaWRQYXVz
ZVN0b3B3YXRjaCB7ZmFsc2V9OworICAgIGJvb2wgbV9lbmFibGVkIHsgZmFsc2UgfTsKKyAgICBi
b29sIG1famF2YVNjcmlwdFBhdXNlU2NoZWR1bGVkIHsgZmFsc2UgfTsKKyAgICBib29sIG1faGFz
RXhjZXB0aW9uVmFsdWUgeyBmYWxzZSB9OworICAgIGJvb2wgbV9kaWRQYXVzZVN0b3B3YXRjaCB7
IGZhbHNlIH07CiAgICAgUmVmUHRyPFdURjo6U3RvcHdhdGNoPiBtX3N0b3B3YXRjaDsKIH07CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3RvclJ1bnRpbWVBZ2VudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JSdW50aW1lQWdlbnQuY3BwCmluZGV4IGFlMThhZmNhZGNmYTM2YmRjYTM4
YzcyODRhOWYyZjI5ZGE3YjEwZjIuLjMyMTA0YTJkZjI4YTk2MGEzZDQ5ODJmZjg0YWMxOTNkMjcz
M2IzYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRz
L0luc3BlY3RvclJ1bnRpbWVBZ2VudC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUnVudGltZUFnZW50LmNwcApAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC01NiwxMiArNTYsOSBAQCBzdGF0aWMgYm9v
bCBhc0Jvb2woY29uc3QgYm9vbCogY29uc3QgYikKICAgICByZXR1cm4gYiA/ICpiIDogZmFsc2U7
CiB9CiAKLUluc3BlY3RvclJ1bnRpbWVBZ2VudDo6SW5zcGVjdG9yUnVudGltZUFnZW50KEluamVj
dGVkU2NyaXB0TWFuYWdlciogaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKQorSW5zcGVjdG9yUnVudGlt
ZUFnZW50OjpJbnNwZWN0b3JSdW50aW1lQWdlbnQoSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyJiBpbmpl
Y3RlZFNjcmlwdE1hbmFnZXIpCiAgICAgOiBJbnNwZWN0b3JBZ2VudEJhc2UoQVNDSUlMaXRlcmFs
KCJSdW50aW1lIikpCiAgICAgLCBtX2luamVjdGVkU2NyaXB0TWFuYWdlcihpbmplY3RlZFNjcmlw
dE1hbmFnZXIpCi0gICAgLCBtX3NjcmlwdERlYnVnU2VydmVyKG51bGxwdHIpCi0gICAgLCBtX2Vu
YWJsZWQoZmFsc2UpCi0gICAgLCBtX2lzVHlwZVByb2ZpbGluZ0VuYWJsZWQoZmFsc2UpCiB7CiB9
CiAKQEAgLTEzNyw3ICsxMzQsNyBAQCB2b2lkIEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6ZXZhbHVh
dGUoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIGV4cAogCiB2b2lkIElu
c3BlY3RvclJ1bnRpbWVBZ2VudDo6Y2FsbEZ1bmN0aW9uT24oRXJyb3JTdHJpbmcmIGVycm9yU3Ry
aW5nLCBjb25zdCBTdHJpbmcmIG9iamVjdElkLCBjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24sIGNv
bnN0IEluc3BlY3RvckFycmF5KiBvcHRpb25hbEFyZ3VtZW50cywgY29uc3QgYm9vbCogY29uc3Qg
ZG9Ob3RQYXVzZU9uRXhjZXB0aW9uc0FuZE11dGVDb25zb2xlLCBjb25zdCBib29sKiBjb25zdCBy
ZXR1cm5CeVZhbHVlLCBjb25zdCBib29sKiBnZW5lcmF0ZVByZXZpZXcsIFJlZlB0cjxJbnNwZWN0
b3I6OlByb3RvY29sOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+JiByZXN1bHQsIEluc3BlY3Rvcjo6
UHJvdG9jb2w6Ok9wdE91dHB1dDxib29sPiogd2FzVGhyb3duKQogewotICAgIEluamVjdGVkU2Ny
aXB0IGluamVjdGVkU2NyaXB0ID0gbV9pbmplY3RlZFNjcmlwdE1hbmFnZXItPmluamVjdGVkU2Ny
aXB0Rm9yT2JqZWN0SWQob2JqZWN0SWQpOworICAgIEluamVjdGVkU2NyaXB0IGluamVjdGVkU2Ny
aXB0ID0gbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIuaW5qZWN0ZWRTY3JpcHRGb3JPYmplY3RJZChv
YmplY3RJZCk7CiAgICAgaWYgKGluamVjdGVkU2NyaXB0Lmhhc05vVmFsdWUoKSkgewogICAgICAg
ICBlcnJvclN0cmluZyA9IEFTQ0lJTGl0ZXJhbCgiSW5zcGVjdGVkIGZyYW1lIGhhcyBnb25lIik7
CiAgICAgICAgIHJldHVybjsKQEAgLTE2Myw3ICsxNjAsNyBAQCB2b2lkIEluc3BlY3RvclJ1bnRp
bWVBZ2VudDo6Y2FsbEZ1bmN0aW9uT24oRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBT
dHJpbgogCiB2b2lkIEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6Z2V0UHJvcGVydGllcyhFcnJvclN0
cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgb2JqZWN0SWQsIGNvbnN0IGJvb2wqIGNv
bnN0IG93blByb3BlcnRpZXMsIGNvbnN0IGJvb2wqIGNvbnN0IGdlbmVyYXRlUHJldmlldywgUmVm
UHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRp
bWU6OlByb3BlcnR5RGVzY3JpcHRvcj4+JiByZXN1bHQsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3Rv
Y29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpJbnRlcm5hbFByb3BlcnR5
RGVzY3JpcHRvcj4+JiBpbnRlcm5hbFByb3BlcnRpZXMpCiB7Ci0gICAgSW5qZWN0ZWRTY3JpcHQg
aW5qZWN0ZWRTY3JpcHQgPSBtX2luamVjdGVkU2NyaXB0TWFuYWdlci0+aW5qZWN0ZWRTY3JpcHRG
b3JPYmplY3RJZChvYmplY3RJZCk7CisgICAgSW5qZWN0ZWRTY3JpcHQgaW5qZWN0ZWRTY3JpcHQg
PSBtX2luamVjdGVkU2NyaXB0TWFuYWdlci5pbmplY3RlZFNjcmlwdEZvck9iamVjdElkKG9iamVj
dElkKTsKICAgICBpZiAoaW5qZWN0ZWRTY3JpcHQuaGFzTm9WYWx1ZSgpKSB7CiAgICAgICAgIGVy
cm9yU3RyaW5nID0gQVNDSUlMaXRlcmFsKCJJbnNwZWN0ZWQgZnJhbWUgaGFzIGdvbmUiKTsKICAg
ICAgICAgcmV0dXJuOwpAQCAtMTgxLDcgKzE3OCw3IEBAIHZvaWQgSW5zcGVjdG9yUnVudGltZUFn
ZW50OjpnZXRQcm9wZXJ0aWVzKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5n
CiAKIHZvaWQgSW5zcGVjdG9yUnVudGltZUFnZW50OjpnZXREaXNwbGF5YWJsZVByb3BlcnRpZXMo
RXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIG9iamVjdElkLCBjb25zdCBi
b29sKiBjb25zdCBnZW5lcmF0ZVByZXZpZXcsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpB
cnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpQcm9wZXJ0eURlc2NyaXB0b3I+PiYg
cmVzdWx0LCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90
b2NvbDo6UnVudGltZTo6SW50ZXJuYWxQcm9wZXJ0eURlc2NyaXB0b3I+PiYgaW50ZXJuYWxQcm9w
ZXJ0aWVzKQogewotICAgIEluamVjdGVkU2NyaXB0IGluamVjdGVkU2NyaXB0ID0gbV9pbmplY3Rl
ZFNjcmlwdE1hbmFnZXItPmluamVjdGVkU2NyaXB0Rm9yT2JqZWN0SWQob2JqZWN0SWQpOworICAg
IEluamVjdGVkU2NyaXB0IGluamVjdGVkU2NyaXB0ID0gbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIu
aW5qZWN0ZWRTY3JpcHRGb3JPYmplY3RJZChvYmplY3RJZCk7CiAgICAgaWYgKGluamVjdGVkU2Ny
aXB0Lmhhc05vVmFsdWUoKSkgewogICAgICAgICBlcnJvclN0cmluZyA9IEFTQ0lJTGl0ZXJhbCgi
SW5zcGVjdGVkIGZyYW1lIGhhcyBnb25lIik7CiAgICAgICAgIHJldHVybjsKQEAgLTE5OSw3ICsx
OTYsNyBAQCB2b2lkIEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6Z2V0RGlzcGxheWFibGVQcm9wZXJ0
aWVzKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgYwogCiB2b2lkIEluc3BlY3RvclJ1bnRpbWVB
Z2VudDo6Z2V0Q29sbGVjdGlvbkVudHJpZXMoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25z
dCBTdHJpbmcmIG9iamVjdElkLCBjb25zdCBTdHJpbmcqIG9iamVjdEdyb3VwLCBjb25zdCBpbnQq
IHN0YXJ0SW5kZXgsIGNvbnN0IGludCogbnVtYmVyVG9GZXRjaCwgUmVmUHRyPEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OkNvbGxlY3Rpb25F
bnRyeT4+JiBlbnRyaWVzKQogewotICAgIEluamVjdGVkU2NyaXB0IGluamVjdGVkU2NyaXB0ID0g
bV9pbmplY3RlZFNjcmlwdE1hbmFnZXItPmluamVjdGVkU2NyaXB0Rm9yT2JqZWN0SWQob2JqZWN0
SWQpOworICAgIEluamVjdGVkU2NyaXB0IGluamVjdGVkU2NyaXB0ID0gbV9pbmplY3RlZFNjcmlw
dE1hbmFnZXIuaW5qZWN0ZWRTY3JpcHRGb3JPYmplY3RJZChvYmplY3RJZCk7CiAgICAgaWYgKGlu
amVjdGVkU2NyaXB0Lmhhc05vVmFsdWUoKSkgewogICAgICAgICBlcnJvclN0cmluZyA9IEFTQ0lJ
TGl0ZXJhbCgiSW5zcGVjdGVkIGZyYW1lIGhhcyBnb25lIik7CiAgICAgICAgIHJldHVybjsKQEAg
LTIxNyw3ICsyMTQsNyBAQCB2b2lkIEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6c2F2ZVJlc3VsdChF
cnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IEluc3BlY3RvcgogCiAgICAgU3RyaW5nIG9i
amVjdElkOwogICAgIGlmIChjYWxsQXJndW1lbnQuZ2V0U3RyaW5nKEFTQ0lJTGl0ZXJhbCgib2Jq
ZWN0SWQiKSwgb2JqZWN0SWQpKSB7Ci0gICAgICAgIGluamVjdGVkU2NyaXB0ID0gbV9pbmplY3Rl
ZFNjcmlwdE1hbmFnZXItPmluamVjdGVkU2NyaXB0Rm9yT2JqZWN0SWQob2JqZWN0SWQpOworICAg
ICAgICBpbmplY3RlZFNjcmlwdCA9IG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmluamVjdGVkU2Ny
aXB0Rm9yT2JqZWN0SWQob2JqZWN0SWQpOwogICAgICAgICBpZiAoaW5qZWN0ZWRTY3JpcHQuaGFz
Tm9WYWx1ZSgpKSB7CiAgICAgICAgICAgICBlcnJvclN0cmluZyA9IEFTQ0lJTGl0ZXJhbCgiSW5z
cGVjdGVkIGZyYW1lIGhhcyBnb25lIik7CiAgICAgICAgICAgICByZXR1cm47CkBAIC0yMzMsMTQg
KzIzMCwxNCBAQCB2b2lkIEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6c2F2ZVJlc3VsdChFcnJvclN0
cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IEluc3BlY3RvcgogCiB2b2lkIEluc3BlY3RvclJ1bnRp
bWVBZ2VudDo6cmVsZWFzZU9iamVjdChFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgb2JqZWN0
SWQpCiB7Ci0gICAgSW5qZWN0ZWRTY3JpcHQgaW5qZWN0ZWRTY3JpcHQgPSBtX2luamVjdGVkU2Ny
aXB0TWFuYWdlci0+aW5qZWN0ZWRTY3JpcHRGb3JPYmplY3RJZChvYmplY3RJZCk7CisgICAgSW5q
ZWN0ZWRTY3JpcHQgaW5qZWN0ZWRTY3JpcHQgPSBtX2luamVjdGVkU2NyaXB0TWFuYWdlci5pbmpl
Y3RlZFNjcmlwdEZvck9iamVjdElkKG9iamVjdElkKTsKICAgICBpZiAoIWluamVjdGVkU2NyaXB0
Lmhhc05vVmFsdWUoKSkKICAgICAgICAgaW5qZWN0ZWRTY3JpcHQucmVsZWFzZU9iamVjdChvYmpl
Y3RJZCk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yUnVudGltZUFnZW50OjpyZWxlYXNlT2JqZWN0R3Jv
dXAoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIG9iamVjdEdyb3VwKQogewotICAgIG1faW5q
ZWN0ZWRTY3JpcHRNYW5hZ2VyLT5yZWxlYXNlT2JqZWN0R3JvdXAob2JqZWN0R3JvdXApOworICAg
IG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLnJlbGVhc2VPYmplY3RHcm91cChvYmplY3RHcm91cCk7
CiB9CiAKIHZvaWQgSW5zcGVjdG9yUnVudGltZUFnZW50OjpydW4oRXJyb3JTdHJpbmcmKQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
UnVudGltZUFnZW50LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9J
bnNwZWN0b3JSdW50aW1lQWdlbnQuaAppbmRleCAyNWYzZDdjMTRhYWNjMDU1NzI0MGI3YjE3NmJj
ZjNjM2M1YTliMjEzLi4yZTJkNzk0MTJkZjNjMjFhYTg4YTFiNzg0Y2YwMGRjMTU2NzU3OTFjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0
b3JSdW50aW1lQWdlbnQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JSdW50aW1lQWdlbnQuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDEzLCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENv
cHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dApAQCAtNzksOSArNzksOSBAQCBwdWJsaWM6CiAgICAgYm9vbCBlbmFibGVkKCkg
Y29uc3QgeyByZXR1cm4gbV9lbmFibGVkOyB9CiAKIHByb3RlY3RlZDoKLSAgICBJbnNwZWN0b3JS
dW50aW1lQWdlbnQoSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKik7CisgICAgSW5zcGVjdG9yUnVudGlt
ZUFnZW50KEluamVjdGVkU2NyaXB0TWFuYWdlciYpOwogCi0gICAgSW5qZWN0ZWRTY3JpcHRNYW5h
Z2VyKiBpbmplY3RlZFNjcmlwdE1hbmFnZXIoKSB7IHJldHVybiBtX2luamVjdGVkU2NyaXB0TWFu
YWdlcjsgfQorICAgIEluamVjdGVkU2NyaXB0TWFuYWdlciYgaW5qZWN0ZWRTY3JpcHRNYW5hZ2Vy
KCkgeyByZXR1cm4gbV9pbmplY3RlZFNjcmlwdE1hbmFnZXI7IH0KIAogICAgIHZpcnR1YWwgSlND
OjpWTSYgZ2xvYmFsVk0oKSA9IDA7CiAgICAgdmlydHVhbCBJbmplY3RlZFNjcmlwdCBpbmplY3Rl
ZFNjcmlwdEZvckV2YWwoRXJyb3JTdHJpbmcmLCBjb25zdCBpbnQqIGV4ZWN1dGlvbkNvbnRleHRJ
ZCkgPSAwOwpAQCAtOTIsMTAgKzkyLDEwIEBAIHByb3RlY3RlZDoKIHByaXZhdGU6CiAgICAgdm9p
ZCBzZXRUeXBlUHJvZmlsZXJFbmFibGVkU3RhdGUoYm9vbCk7CiAKLSAgICBJbmplY3RlZFNjcmlw
dE1hbmFnZXIqIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOwotICAgIFNjcmlwdERlYnVnU2VydmVy
KiBtX3NjcmlwdERlYnVnU2VydmVyOwotICAgIGJvb2wgbV9lbmFibGVkOwotICAgIGJvb2wgbV9p
c1R5cGVQcm9maWxpbmdFbmFibGVkOworICAgIEluamVjdGVkU2NyaXB0TWFuYWdlciYgbV9pbmpl
Y3RlZFNjcmlwdE1hbmFnZXI7CisgICAgU2NyaXB0RGVidWdTZXJ2ZXIqIG1fc2NyaXB0RGVidWdT
ZXJ2ZXIgeyBudWxscHRyIH07CisgICAgYm9vbCBtX2VuYWJsZWQgeyBmYWxzZSB9OworICAgIGJv
b2wgbV9pc1R5cGVQcm9maWxpbmdFbmFibGVkIHsgZmFsc2UgfTsKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIEluc3BlY3RvcgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvSlNHbG9iYWxPYmplY3RDb25zb2xlQWdlbnQuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSlNHbG9iYWxPYmplY3RDb25zb2xlQWdlbnQuY3BwCmlu
ZGV4IGZlMTEyZGQxZWFlOGNhZWNlMjNjYWI4YzAzMWIwNmU2NDM5MDlmZWEuLjk2ZTFhNDlhZGYy
Zjc5YWZmMmRhYmU1YTRkYjFkNWUzOGJlYzRkMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0pTR2xvYmFsT2JqZWN0Q29uc29sZUFnZW50LmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9KU0dsb2JhbE9iamVj
dENvbnNvbGVBZ2VudC5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
NCwgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTI4LDcgKzI4LDcgQEAKIAogbmFtZXNwYWNlIEluc3BlY3RvciB7
CiAKLUpTR2xvYmFsT2JqZWN0Q29uc29sZUFnZW50OjpKU0dsb2JhbE9iamVjdENvbnNvbGVBZ2Vu
dChJbmplY3RlZFNjcmlwdE1hbmFnZXIqIGluamVjdGVkU2NyaXB0TWFuYWdlcikKK0pTR2xvYmFs
T2JqZWN0Q29uc29sZUFnZW50OjpKU0dsb2JhbE9iamVjdENvbnNvbGVBZ2VudChJbmplY3RlZFNj
cmlwdE1hbmFnZXImIGluamVjdGVkU2NyaXB0TWFuYWdlcikKICAgICA6IEluc3BlY3RvckNvbnNv
bGVBZ2VudChpbmplY3RlZFNjcmlwdE1hbmFnZXIpCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9KU0dsb2JhbE9iamVjdENvbnNvbGVBZ2Vu
dC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSlNHbG9iYWxPYmpl
Y3RDb25zb2xlQWdlbnQuaAppbmRleCAwZDc5YzVkMWJmMWJiZWU3NmI5YWJiODUzZjk5M2MxYWFj
MDY1YTQ5Li45YzI4NWUyZWZmMjM2ZWFlZGVhOWQ3MTg2NTBlMTkwOTE2ODI1NTU3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9KU0dsb2JhbE9iamVj
dENvbnNvbGVBZ2VudC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdl
bnRzL0pTR2xvYmFsT2JqZWN0Q29uc29sZUFnZW50LmgKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAxNCwgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM1LDcgKzM1LDcgQEAgY2xhc3MgSlNH
bG9iYWxPYmplY3RDb25zb2xlQWdlbnQgZmluYWwgOiBwdWJsaWMgSW5zcGVjdG9yQ29uc29sZUFn
ZW50IHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShKU0dsb2JhbE9iamVjdENvbnNvbGVBZ2Vu
dCk7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgSlNHbG9iYWxP
YmplY3RDb25zb2xlQWdlbnQoSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKik7CisgICAgSlNHbG9iYWxP
YmplY3RDb25zb2xlQWdlbnQoSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyJik7CiAgICAgdmlydHVhbCB+
SlNHbG9iYWxPYmplY3RDb25zb2xlQWdlbnQoKSB7IH0KIAogICAgIC8vIEZJWE1FOiBYSFJzIGFu
ZCBOb2RlcyBvbmx5IG1ha2VzIHNlbnNlIGRlYnVnZ2luZyBhIFdlYiBjb250ZXh0LiBDYW4gdGhp
cyBiZSBtb3ZlZCB0byBhIGRpZmZlcmVudCBhZ2VudD8KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0pTR2xvYmFsT2JqZWN0RGVidWdnZXJBZ2VudC5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9KU0dsb2JhbE9iamVj
dERlYnVnZ2VyQWdlbnQuY3BwCmluZGV4IDlhZTc2YzYyYTZjOWM1YWIwM2M3MDkxNWQyZDIzMWQ4
ZmY2NzNkZTkuLjRkMzgzMDc2NWIxOGNkNWVhYjUwZWNmYTljOWI5Zjg4NGFjMDdmZDkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0pTR2xvYmFsT2Jq
ZWN0RGVidWdnZXJBZ2VudC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvSlNHbG9iYWxPYmplY3REZWJ1Z2dlckFnZW50LmNwcApAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDE0LCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzgsNyArMzgsNyBAQCB1
c2luZyBuYW1lc3BhY2UgSlNDOwogCiBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIAotSlNHbG9iYWxP
YmplY3REZWJ1Z2dlckFnZW50OjpKU0dsb2JhbE9iamVjdERlYnVnZ2VyQWdlbnQoSW5qZWN0ZWRT
Y3JpcHRNYW5hZ2VyKiBpbmplY3RlZFNjcmlwdE1hbmFnZXIsIEpTQzo6SlNHbG9iYWxPYmplY3Qm
IGdsb2JhbE9iamVjdCwgSW5zcGVjdG9yQ29uc29sZUFnZW50KiBjb25zb2xlQWdlbnQpCitKU0ds
b2JhbE9iamVjdERlYnVnZ2VyQWdlbnQ6OkpTR2xvYmFsT2JqZWN0RGVidWdnZXJBZ2VudChJbmpl
Y3RlZFNjcmlwdE1hbmFnZXImIGluamVjdGVkU2NyaXB0TWFuYWdlciwgSlNDOjpKU0dsb2JhbE9i
amVjdCYgZ2xvYmFsT2JqZWN0LCBJbnNwZWN0b3JDb25zb2xlQWdlbnQqIGNvbnNvbGVBZ2VudCkK
ICAgICA6IEluc3BlY3RvckRlYnVnZ2VyQWdlbnQoaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKQogICAg
ICwgbV9zY3JpcHREZWJ1Z1NlcnZlcihnbG9iYWxPYmplY3QpCiAgICAgLCBtX2NvbnNvbGVBZ2Vu
dChjb25zb2xlQWdlbnQpCkBAIC02Myw3ICs2Myw3IEBAIEluamVjdGVkU2NyaXB0IEpTR2xvYmFs
T2JqZWN0RGVidWdnZXJBZ2VudDo6aW5qZWN0ZWRTY3JpcHRGb3JFdmFsKEVycm9yU3RyaW5nJiBl
CiAgICAgfQogCiAgICAgRXhlY1N0YXRlKiBleGVjID0gbV9zY3JpcHREZWJ1Z1NlcnZlci5nbG9i
YWxPYmplY3QoKS5nbG9iYWxFeGVjKCk7Ci0gICAgcmV0dXJuIGluamVjdGVkU2NyaXB0TWFuYWdl
cigpLT5pbmplY3RlZFNjcmlwdEZvcihleGVjKTsKKyAgICByZXR1cm4gaW5qZWN0ZWRTY3JpcHRN
YW5hZ2VyKCkuaW5qZWN0ZWRTY3JpcHRGb3IoZXhlYyk7CiB9CiAKIHZvaWQgSlNHbG9iYWxPYmpl
Y3REZWJ1Z2dlckFnZW50OjpicmVha3BvaW50QWN0aW9uTG9nKEpTQzo6RXhlY1N0YXRlKiBleGVj
LCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL2FnZW50cy9KU0dsb2JhbE9iamVjdERlYnVnZ2VyQWdlbnQuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0pTR2xvYmFsT2JqZWN0RGVidWdnZXJB
Z2VudC5oCmluZGV4IGFjNmI4NzE2OWY0NzVhMjgyYjYwMTBlY2JkMDE5YjM1MmQ3NTU4MGUuLjE4
YzExYTk2ODFiMTA3YWIzOTcwNGY4OTA3ZjY0NDdlNjk5NzAyZTQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0pTR2xvYmFsT2JqZWN0RGVidWdnZXJB
Z2VudC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0pTR2xv
YmFsT2JqZWN0RGVidWdnZXJBZ2VudC5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTQsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zNyw3ICszNyw3IEBAIGNsYXNzIEpTR2xvYmFsT2Jq
ZWN0RGVidWdnZXJBZ2VudCBmaW5hbCA6IHB1YmxpYyBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50IHsK
ICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShKU0dsb2JhbE9iamVjdERlYnVnZ2VyQWdlbnQpOwog
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIEpTR2xvYmFsT2JqZWN0
RGVidWdnZXJBZ2VudChJbmplY3RlZFNjcmlwdE1hbmFnZXIqLCBKU0M6OkpTR2xvYmFsT2JqZWN0
JiwgSW5zcGVjdG9yQ29uc29sZUFnZW50Kik7CisgICAgSlNHbG9iYWxPYmplY3REZWJ1Z2dlckFn
ZW50KEluamVjdGVkU2NyaXB0TWFuYWdlciYsIEpTQzo6SlNHbG9iYWxPYmplY3QmLCBJbnNwZWN0
b3JDb25zb2xlQWdlbnQqKTsKICAgICB2aXJ0dWFsIH5KU0dsb2JhbE9iamVjdERlYnVnZ2VyQWdl
bnQoKSB7IH0KIAogICAgIHZpcnR1YWwgSlNHbG9iYWxPYmplY3RTY3JpcHREZWJ1Z1NlcnZlciYg
c2NyaXB0RGVidWdTZXJ2ZXIoKSBvdmVycmlkZSB7IHJldHVybiBtX3NjcmlwdERlYnVnU2VydmVy
OyB9CkBAIC01NSw3ICs1NSw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBKU0dsb2JhbE9i
amVjdFNjcmlwdERlYnVnU2VydmVyIG1fc2NyaXB0RGVidWdTZXJ2ZXI7Ci0gICAgSW5zcGVjdG9y
Q29uc29sZUFnZW50KiBtX2NvbnNvbGVBZ2VudDsKKyAgICBJbnNwZWN0b3JDb25zb2xlQWdlbnQq
IG1fY29uc29sZUFnZW50ICB7IG51bGxwdHIgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEluc3Bl
Y3RvcgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMv
SlNHbG9iYWxPYmplY3RSdW50aW1lQWdlbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvSlNHbG9iYWxPYmplY3RSdW50aW1lQWdlbnQuY3BwCmluZGV4IDUxNDA1
Y2Y3YTJiNDE1NTgwNTYxNWZjZGI0MGI2YWU1NzM2ODZiMDUuLjBlMDQ1ZjQwZjMwYWZmNTBiMTc0
MWEyMWI3Y2Q2ZmVhYjA1OWU0MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3IvYWdlbnRzL0pTR2xvYmFsT2JqZWN0UnVudGltZUFnZW50LmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9KU0dsb2JhbE9iamVjdFJ1bnRpbWVB
Z2VudC5jcHAKQEAgLTM0LDcgKzM0LDcgQEAgdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogbmFtZXNw
YWNlIEluc3BlY3RvciB7CiAKLUpTR2xvYmFsT2JqZWN0UnVudGltZUFnZW50OjpKU0dsb2JhbE9i
amVjdFJ1bnRpbWVBZ2VudChJbmplY3RlZFNjcmlwdE1hbmFnZXIqIGluamVjdGVkU2NyaXB0TWFu
YWdlciwgSlNHbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKK0pTR2xvYmFsT2JqZWN0UnVudGlt
ZUFnZW50OjpKU0dsb2JhbE9iamVjdFJ1bnRpbWVBZ2VudChJbmplY3RlZFNjcmlwdE1hbmFnZXIm
IGluamVjdGVkU2NyaXB0TWFuYWdlciwgSlNHbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKICAg
ICA6IEluc3BlY3RvclJ1bnRpbWVBZ2VudChpbmplY3RlZFNjcmlwdE1hbmFnZXIpCiAgICAgLCBt
X2dsb2JhbE9iamVjdChnbG9iYWxPYmplY3QpCiB7CkBAIC02NCw3ICs2NCw3IEBAIEluamVjdGVk
U2NyaXB0IEpTR2xvYmFsT2JqZWN0UnVudGltZUFnZW50OjppbmplY3RlZFNjcmlwdEZvckV2YWwo
RXJyb3JTdHJpbmcmIGVyCiAgICAgQVNTRVJUX1VOVVNFRChleGVjdXRpb25Db250ZXh0SWQsICFl
eGVjdXRpb25Db250ZXh0SWQpOwogCiAgICAgSlNDOjpFeGVjU3RhdGUqIHNjcmlwdFN0YXRlID0g
bV9nbG9iYWxPYmplY3QuZ2xvYmFsRXhlYygpOwotICAgIEluamVjdGVkU2NyaXB0IGluamVjdGVk
U2NyaXB0ID0gaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKCktPmluamVjdGVkU2NyaXB0Rm9yKHNjcmlw
dFN0YXRlKTsKKyAgICBJbmplY3RlZFNjcmlwdCBpbmplY3RlZFNjcmlwdCA9IGluamVjdGVkU2Ny
aXB0TWFuYWdlcigpLmluamVjdGVkU2NyaXB0Rm9yKHNjcmlwdFN0YXRlKTsKICAgICBpZiAoaW5q
ZWN0ZWRTY3JpcHQuaGFzTm9WYWx1ZSgpKQogICAgICAgICBlcnJvclN0cmluZyA9IEFTQ0lJTGl0
ZXJhbCgiSW50ZXJuYWwgZXJyb3I6IG1haW4gd29ybGQgZXhlY3V0aW9uIGNvbnRleHQgbm90IGZv
dW5kLiIpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9KU0dsb2JhbE9iamVjdFJ1bnRpbWVBZ2VudC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9hZ2VudHMvSlNHbG9iYWxPYmplY3RSdW50aW1lQWdlbnQuaAppbmRleCBjMjdh
ZmM4ODdiYzE3ZGE5Njc2ZGEwOWE5ZTlhZmI1YmEyNjBjOGMwLi45MTdmZGViOTVkOGEwZTEzYWU4
MzEwZGRkODJmNDA0ZTcwYzgwZDUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL2FnZW50cy9KU0dsb2JhbE9iamVjdFJ1bnRpbWVBZ2VudC5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0pTR2xvYmFsT2JqZWN0UnVudGltZUFn
ZW50LmgKQEAgLTM2LDcgKzM2LDcgQEAgbmFtZXNwYWNlIEluc3BlY3RvciB7CiAKIGNsYXNzIEpT
R2xvYmFsT2JqZWN0UnVudGltZUFnZW50IGZpbmFsIDogcHVibGljIEluc3BlY3RvclJ1bnRpbWVB
Z2VudCB7CiBwdWJsaWM6Ci0gICAgSlNHbG9iYWxPYmplY3RSdW50aW1lQWdlbnQoSW5qZWN0ZWRT
Y3JpcHRNYW5hZ2VyKiwgSlNDOjpKU0dsb2JhbE9iamVjdCYpOworICAgIEpTR2xvYmFsT2JqZWN0
UnVudGltZUFnZW50KEluamVjdGVkU2NyaXB0TWFuYWdlciYsIEpTQzo6SlNHbG9iYWxPYmplY3Qm
KTsKIAogICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoRnJvbnRl
bmRSb3V0ZXIqLCBCYWNrZW5kRGlzcGF0Y2hlciopIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9p
ZCB3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChEaXNjb25uZWN0UmVhc29uKSBvdmVycmlk
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBcHBsaWNh
dGlvbkNhY2hlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFw
cGxpY2F0aW9uQ2FjaGVBZ2VudC5jcHAKaW5kZXggOWUwNzlmMmQyZjY2YzBmMjIxOGIxYWM4ZjM2
OWZiMTk4NTgzZTgxMi4uYTg0MWMzMjJjOTY0YTFhOTFkY2NmMjYzZWUzZjZjYzVhZmE2NmZkYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFwcGxpY2F0aW9u
Q2FjaGVBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFw
cGxpY2F0aW9uQ2FjaGVBZ2VudC5jcHAKQEAgLTQzLDcgKzQzLDcgQEAgdXNpbmcgbmFtZXNwYWNl
IEluc3BlY3RvcjsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1JbnNwZWN0b3JBcHBsaWNhdGlv
bkNhY2hlQWdlbnQ6Okluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudChJbnN0cnVtZW50aW5n
QWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCBJbnNwZWN0b3JQYWdlQWdlbnQqIHBhZ2VBZ2Vu
dCkKK0luc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudDo6SW5zcGVjdG9yQXBwbGljYXRpb25D
YWNoZUFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIEluc3Bl
Y3RvclBhZ2VBZ2VudCogcGFnZUFnZW50KQogICAgIDogSW5zcGVjdG9yQWdlbnRCYXNlKEFTQ0lJ
TGl0ZXJhbCgiQXBwbGljYXRpb25DYWNoZSIpLCBpbnN0cnVtZW50aW5nQWdlbnRzKQogICAgICwg
bV9wYWdlQWdlbnQocGFnZUFnZW50KQogewpAQCAtNjAsMTIgKzYwLDEyIEBAIHZvaWQgSW5zcGVj
dG9yQXBwbGljYXRpb25DYWNoZUFnZW50Ojp3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChJ
bnNwZWN0b3I6OkRpCiAgICAgbV9mcm9udGVuZERpc3BhdGNoZXIgPSBudWxscHRyOwogICAgIG1f
YmFja2VuZERpc3BhdGNoZXIgPSBudWxscHRyOwogCi0gICAgbV9pbnN0cnVtZW50aW5nQWdlbnRz
LT5zZXRJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQobnVsbHB0cik7CisgICAgbV9pbnN0
cnVtZW50aW5nQWdlbnRzLnNldEluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudChudWxscHRy
KTsKIH0KIAogdm9pZCBJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQ6OmVuYWJsZShFcnJv
clN0cmluZyYpCiB7Ci0gICAgbV9pbnN0cnVtZW50aW5nQWdlbnRzLT5zZXRJbnNwZWN0b3JBcHBs
aWNhdGlvbkNhY2hlQWdlbnQodGhpcyk7CisgICAgbV9pbnN0cnVtZW50aW5nQWdlbnRzLnNldElu
c3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudCh0aGlzKTsKIAogICAgIC8vIFdlIG5lZWQgdG8g
cGFzcyBpbml0aWFsIG5hdmlnYXRvci5vbk9ubGluZS4KICAgICBuZXR3b3JrU3RhdGVDaGFuZ2Vk
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQXBwbGlj
YXRpb25DYWNoZUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQXBw
bGljYXRpb25DYWNoZUFnZW50LmgKaW5kZXggYjQyMjA2MWQ0OTMzYTM1NjZkNWZlNzZjNTI1ZjVl
YmY3NzFjMTFiZC4uMjQ4ZDNmODQxYmQ3ZjJjMGMxZDA5MWFlOTE1OTYzZWVmYTVhZTkxNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFwcGxpY2F0aW9uQ2Fj
aGVBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBcHBsaWNh
dGlvbkNhY2hlQWdlbnQuaApAQCAtNTAsNyArNTAsNyBAQCB0eXBlZGVmIFN0cmluZyBFcnJvclN0
cmluZzsKIGNsYXNzIEluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudCBmaW5hbCA6IHB1Ymxp
YyBJbnNwZWN0b3JBZ2VudEJhc2UsIHB1YmxpYyBJbnNwZWN0b3I6OkFwcGxpY2F0aW9uQ2FjaGVC
YWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEluc3Bl
Y3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudCk7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVi
bGljOgotICAgIEluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudChJbnN0cnVtZW50aW5nQWdl
bnRzKiwgSW5zcGVjdG9yUGFnZUFnZW50Kik7CisgICAgSW5zcGVjdG9yQXBwbGljYXRpb25DYWNo
ZUFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMmLCBJbnNwZWN0b3JQYWdlQWdlbnQqKTsKICAgICB2
aXJ0dWFsIH5JbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQoKSB7IH0KIAogICAgIHZpcnR1
YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpGcm9udGVuZFJv
dXRlciosIEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXIqKSBvdmVycmlkZTsKQEAgLTcxLDkg
KzcxLDkgQEAgcHJpdmF0ZToKIAogICAgIERvY3VtZW50TG9hZGVyKiBhc3NlcnRGcmFtZVdpdGhE
b2N1bWVudExvYWRlcihFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgZnJhbWVJZCk7CiAKLSAg
ICBJbnNwZWN0b3JQYWdlQWdlbnQqIG1fcGFnZUFnZW50OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxJ
bnNwZWN0b3I6OkFwcGxpY2F0aW9uQ2FjaGVGcm9udGVuZERpc3BhdGNoZXI+IG1fZnJvbnRlbmRE
aXNwYXRjaGVyOwogICAgIFJlZlB0cjxJbnNwZWN0b3I6OkFwcGxpY2F0aW9uQ2FjaGVCYWNrZW5k
RGlzcGF0Y2hlcj4gbV9iYWNrZW5kRGlzcGF0Y2hlcjsKKyAgICBJbnNwZWN0b3JQYWdlQWdlbnQq
IG1fcGFnZUFnZW50IHsgbnVsbHB0ciB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5jcHAKaW5kZXgg
YzgyNzM2NGNlMDQ5OThmMGQyMzE1NTYwYzRiYmViZTE4ZjZjMzI1Ny4uODIwNzcxYzE5NjZlNjBj
YzYyM2Y1YTY5NTBhOTBkYTkxZTUwODRkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxMCwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0
IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKQEAgLTM0MSwxMCArMzQxLDkgQEAgQ1NTU3R5bGVSdWxlKiBJbnNwZWN0b3JDU1NBZ2VudDo6
YXNDU1NTdHlsZVJ1bGUoQ1NTUnVsZSYgcnVsZSkKICAgICByZXR1cm4gZG93bmNhc3Q8Q1NTU3R5
bGVSdWxlPigmcnVsZSk7CiB9CiAKLUluc3BlY3RvckNTU0FnZW50OjpJbnNwZWN0b3JDU1NBZ2Vu
dChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCBJbnNwZWN0b3JET01B
Z2VudCogZG9tQWdlbnQpCitJbnNwZWN0b3JDU1NBZ2VudDo6SW5zcGVjdG9yQ1NTQWdlbnQoSW5z
dHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgSW5zcGVjdG9yRE9NQWdlbnQq
IGRvbUFnZW50KQogICAgIDogSW5zcGVjdG9yQWdlbnRCYXNlKEFTQ0lJTGl0ZXJhbCgiQ1NTIiks
IGluc3RydW1lbnRpbmdBZ2VudHMpCiAgICAgLCBtX2RvbUFnZW50KGRvbUFnZW50KQotICAgICwg
bV9sYXN0U3R5bGVTaGVldElkKDEpCiB7CiAgICAgbV9kb21BZ2VudC0+c2V0RE9NTGlzdGVuZXIo
dGhpcyk7CiB9CkBAIC0zOTYsNyArMzk1LDcgQEAgdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6cmVz
ZXROb25QZXJzaXN0ZW50RGF0YSgpCiAKIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmVuYWJsZShF
cnJvclN0cmluZyYpCiB7Ci0gICAgbV9pbnN0cnVtZW50aW5nQWdlbnRzLT5zZXRJbnNwZWN0b3JD
U1NBZ2VudCh0aGlzKTsKKyAgICBtX2luc3RydW1lbnRpbmdBZ2VudHMuc2V0SW5zcGVjdG9yQ1NT
QWdlbnQodGhpcyk7CiAKICAgICBmb3IgKGF1dG8qIGRvY3VtZW50IDogbV9kb21BZ2VudC0+ZG9j
dW1lbnRzKCkpCiAgICAgICAgIGFjdGl2ZVN0eWxlU2hlZXRzVXBkYXRlZCgqZG9jdW1lbnQpOwpA
QCAtNDA0LDcgKzQwMyw3IEBAIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmVuYWJsZShFcnJvclN0
cmluZyYpCiAKIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmRpc2FibGUoRXJyb3JTdHJpbmcmKQog
ewotICAgIG1faW5zdHJ1bWVudGluZ0FnZW50cy0+c2V0SW5zcGVjdG9yQ1NTQWdlbnQobnVsbHB0
cik7CisgICAgbV9pbnN0cnVtZW50aW5nQWdlbnRzLnNldEluc3BlY3RvckNTU0FnZW50KG51bGxw
dHIpOwogfQogCiB2b2lkIEluc3BlY3RvckNTU0FnZW50Ojpkb2N1bWVudERldGFjaGVkKERvY3Vt
ZW50JiBkb2N1bWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JDU1NBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0Fn
ZW50LmgKaW5kZXggNWY2MjhmNWEyMDZiMDM1ZjBlMjc2YmI4NDU1ZGJhMGRhZjhmZjM0Yy4uMDBi
MDM3OTc2ZmIwNGYxMGRmNTc0NDJiY2YxNmNkMzZlNGFlOTVhNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmgKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDEwLCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBD
b3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dApAQCAtODIsNyArODIsNyBAQCBwdWJsaWM6CiAgICAgICAgIENvbnRlbnRTZWN1
cml0eVBvbGljeSogbV9jb250ZW50U2VjdXJpdHlQb2xpY3k7CiAgICAgfTsKIAotICAgIEluc3Bl
Y3RvckNTU0FnZW50KEluc3RydW1lbnRpbmdBZ2VudHMqLCBJbnNwZWN0b3JET01BZ2VudCopOwor
ICAgIEluc3BlY3RvckNTU0FnZW50KEluc3RydW1lbnRpbmdBZ2VudHMmLCBJbnNwZWN0b3JET01B
Z2VudCopOwogICAgIHZpcnR1YWwgfkluc3BlY3RvckNTU0FnZW50KCk7CiAKICAgICBzdGF0aWMg
Q1NTU3R5bGVSdWxlKiBhc0NTU1N0eWxlUnVsZShDU1NSdWxlJik7CkBAIC0xNzAsNyArMTcwLDcg
QEAgcHJpdmF0ZToKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3I6OkNTU0Zyb250ZW5k
RGlzcGF0Y2hlcj4gbV9mcm9udGVuZERpc3BhdGNoZXI7CiAgICAgUmVmUHRyPEluc3BlY3Rvcjo6
Q1NTQmFja2VuZERpc3BhdGNoZXI+IG1fYmFja2VuZERpc3BhdGNoZXI7Ci0gICAgSW5zcGVjdG9y
RE9NQWdlbnQqIG1fZG9tQWdlbnQ7CisgICAgSW5zcGVjdG9yRE9NQWdlbnQqIG1fZG9tQWdlbnQg
eyBudWxscHRyIH07CiAKICAgICBJZFRvSW5zcGVjdG9yU3R5bGVTaGVldCBtX2lkVG9JbnNwZWN0
b3JTdHlsZVNoZWV0OwogICAgIENTU1N0eWxlU2hlZXRUb0luc3BlY3RvclN0eWxlU2hlZXQgbV9j
c3NTdHlsZVNoZWV0VG9JbnNwZWN0b3JTdHlsZVNoZWV0OwpAQCAtMTgxLDcgKzE4MSw3IEBAIHBy
aXZhdGU6CiAgICAgSGFzaFNldDxpbnQ+IG1fbmFtZWRGbG93Q29sbGVjdGlvbnNSZXF1ZXN0ZWQ7
CiAgICAgc3RkOjp1bmlxdWVfcHRyPENoYW5nZVJlZ2lvbk92ZXJzZXRUYXNrPiBtX2NoYW5nZVJl
Z2lvbk92ZXJzZXRUYXNrOwogCi0gICAgaW50IG1fbGFzdFN0eWxlU2hlZXRJZDsKKyAgICBpbnQg
bV9sYXN0U3R5bGVTaGVldElkIHsgMSB9OwogICAgIGJvb2wgbV9jcmVhdGluZ1ZpYUluc3BlY3Rv
clN0eWxlU2hlZXQgeyBmYWxzZSB9OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckNvbnNvbGVJbnN0cnVtZW50YXRpb24uaCBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb25zb2xlSW5zdHJ1bWVudGF0aW9uLmgKaW5kZXggYWE0
ZjUzNWU3ODA1NTZiYmIxNzYzMWMzNThlNzQzNWY2OWFlNjEyNy4uMjc3MzdlMzUwN2Y3YjE4ODJk
ZjYwMWJkYjE4NTNkZWJiNzA1NWE3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckNvbnNvbGVJbnN0cnVtZW50YXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29uc29sZUluc3RydW1lbnRhdGlvbi5oCkBAIC0xLDUgKzEs
NiBAQAogLyoKICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAqCiAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCkBAIC00MCw4ICs0MSw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
OjphZGRNZXNzYWdlVG9Db25zb2xlKFBhZ2UmIHBhZ2UsIHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0
b3I6OkNvbnNvbGVNZXNzYWdlPiBtZXNzYWdlKQogewotICAgIGlmIChJbnN0cnVtZW50aW5nQWdl
bnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzID0gaW5zdHJ1bWVudGluZ0FnZW50c0ZvclBhZ2UocGFn
ZSkpCi0gICAgICAgIGFkZE1lc3NhZ2VUb0NvbnNvbGVJbXBsKCppbnN0cnVtZW50aW5nQWdlbnRz
LCBXVEY6Om1vdmUobWVzc2FnZSkpOworICAgIGFkZE1lc3NhZ2VUb0NvbnNvbGVJbXBsKGluc3Ry
dW1lbnRpbmdBZ2VudHNGb3JQYWdlKHBhZ2UpLCBXVEY6Om1vdmUobWVzc2FnZSkpOwogfQogCiBp
bmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmFkZE1lc3NhZ2VUb0NvbnNvbGUo
V29ya2VyR2xvYmFsU2NvcGUqIHdvcmtlckdsb2JhbFNjb3BlLCBzdGQ6OnVuaXF1ZV9wdHI8SW5z
cGVjdG9yOjpDb25zb2xlTWVzc2FnZT4gbWVzc2FnZSkKQEAgLTUyLDggKzUyLDcgQEAgaW5saW5l
IHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjphZGRNZXNzYWdlVG9Db25zb2xlKFdvcmtl
ckdsb2JhbFNjb3BlKiB3b3IKIAogaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
Ojpjb25zb2xlQ291bnQoUGFnZSYgcGFnZSwgSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBSZWZQdHI8
SW5zcGVjdG9yOjpTY3JpcHRBcmd1bWVudHM+JiYgYXJndW1lbnRzKQogewotICAgIGlmIChJbnN0
cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzID0gaW5zdHJ1bWVudGluZ0FnZW50
c0ZvclBhZ2UocGFnZSkpCi0gICAgICAgIGNvbnNvbGVDb3VudEltcGwoKmluc3RydW1lbnRpbmdB
Z2VudHMsIHN0YXRlLCBXVEY6Om1vdmUoYXJndW1lbnRzKSk7CisgICAgY29uc29sZUNvdW50SW1w
bChpbnN0cnVtZW50aW5nQWdlbnRzRm9yUGFnZShwYWdlKSwgc3RhdGUsIFdURjo6bW92ZShhcmd1
bWVudHMpKTsKIH0KIAogaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzdGFy
dENvbnNvbGVUaW1pbmcoRnJhbWUmIGZyYW1lLCBjb25zdCBTdHJpbmcmIHRpdGxlKQpAQCAtNzcs
MTUgKzc2LDEyIEBAIGlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6Y29uc29s
ZVRpbWVTdGFtcChGcmFtZSYgZnJhbWUsIFJlZlB0cjxJbnNwCiAKIGlubGluZSB2b2lkIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6c3RhcnRQcm9maWxpbmcoUGFnZSYgcGFnZSwgSlNDOjpFeGVj
U3RhdGUqIGV4ZWMsIGNvbnN0IFN0cmluZyAmdGl0bGUpCiB7Ci0gICAgaWYgKEluc3RydW1lbnRp
bmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMgPSBpbnN0cnVtZW50aW5nQWdlbnRzRm9yUGFn
ZShwYWdlKSkKLSAgICAgICAgc3RhcnRQcm9maWxpbmdJbXBsKCppbnN0cnVtZW50aW5nQWdlbnRz
LCBleGVjLCB0aXRsZSk7CisgICAgc3RhcnRQcm9maWxpbmdJbXBsKGluc3RydW1lbnRpbmdBZ2Vu
dHNGb3JQYWdlKHBhZ2UpLCBleGVjLCB0aXRsZSk7CiB9CiAKIGlubGluZSBSZWZQdHI8SlNDOjpQ
cm9maWxlPiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnN0b3BQcm9maWxpbmcoUGFnZSYgcGFn
ZSwgSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFN0cmluZyAmdGl0bGUpCiB7Ci0gICAgaWYg
KEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMgPSBpbnN0cnVtZW50aW5n
QWdlbnRzRm9yUGFnZShwYWdlKSkKLSAgICAgICAgcmV0dXJuIHN0b3BQcm9maWxpbmdJbXBsKCpp
bnN0cnVtZW50aW5nQWdlbnRzLCBleGVjLCB0aXRsZSk7Ci0gICAgcmV0dXJuIG51bGxwdHI7Cisg
ICAgcmV0dXJuIHN0b3BQcm9maWxpbmdJbXBsKGluc3RydW1lbnRpbmdBZ2VudHNGb3JQYWdlKHBh
Z2UpLCBleGVjLCB0aXRsZSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcAppbmRleCBhNDY0
MGVkMWY1NjM2MWQ4MjNlNGIyZTA4OTUxNzcxNjk5Zjk5MzA5Li44ZmQ1MjkwMzVlMzdkMWMzNDE3
ZGI1MzQwZGNkMWQyMWMxMGNiMDU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCkBAIC0xMDUsMTIgKzEwNSwxMiBAQCBJbnNwZWN0b3JD
b250cm9sbGVyOjpJbnNwZWN0b3JDb250cm9sbGVyKFBhZ2UmIHBhZ2UsIEluc3BlY3RvckNsaWVu
dCogaW5zcGVjdG9yQwogICAgIG1fcGFnZUFnZW50ID0gcGFnZUFnZW50UHRyLmdldCgpOwogICAg
IG1fYWdlbnRzLmFwcGVuZChXVEY6Om1vdmUocGFnZUFnZW50UHRyKSk7CiAKLSAgICBhdXRvIHJ1
bnRpbWVBZ2VudFB0ciA9IHN0ZDo6bWFrZV91bmlxdWU8UGFnZVJ1bnRpbWVBZ2VudD4obV9pbmpl
Y3RlZFNjcmlwdE1hbmFnZXIuZ2V0KCksICZwYWdlLCBwYWdlQWdlbnQpOworICAgIGF1dG8gcnVu
dGltZUFnZW50UHRyID0gc3RkOjptYWtlX3VuaXF1ZTxQYWdlUnVudGltZUFnZW50PigqbV9pbmpl
Y3RlZFNjcmlwdE1hbmFnZXIsICZwYWdlLCBwYWdlQWdlbnQpOwogICAgIFBhZ2VSdW50aW1lQWdl
bnQqIHJ1bnRpbWVBZ2VudCA9IHJ1bnRpbWVBZ2VudFB0ci5nZXQoKTsKICAgICBtX2luc3RydW1l
bnRpbmdBZ2VudHMtPnNldFBhZ2VSdW50aW1lQWdlbnQocnVudGltZUFnZW50KTsKICAgICBtX2Fn
ZW50cy5hcHBlbmQoV1RGOjptb3ZlKHJ1bnRpbWVBZ2VudFB0cikpOwogCi0gICAgYXV0byBkb21B
Z2VudFB0ciA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yRE9NQWdlbnQ+KG1faW5zdHJ1bWVu
dGluZ0FnZW50cy5nZXQoKSwgcGFnZUFnZW50LCBtX2luamVjdGVkU2NyaXB0TWFuYWdlci5nZXQo
KSwgbV9vdmVybGF5LmdldCgpKTsKKyAgICBhdXRvIGRvbUFnZW50UHRyID0gc3RkOjptYWtlX3Vu
aXF1ZTxJbnNwZWN0b3JET01BZ2VudD4obV9pbnN0cnVtZW50aW5nQWdlbnRzLmdldCgpLCBwYWdl
QWdlbnQsICptX2luamVjdGVkU2NyaXB0TWFuYWdlciwgbV9vdmVybGF5LmdldCgpKTsKICAgICBt
X2RvbUFnZW50ID0gZG9tQWdlbnRQdHIuZ2V0KCk7CiAgICAgbV9hZ2VudHMuYXBwZW5kKFdURjo6
bW92ZShkb21BZ2VudFB0cikpOwogCkBAIC0xMjEsNyArMTIxLDcgQEAgSW5zcGVjdG9yQ29udHJv
bGxlcjo6SW5zcGVjdG9yQ29udHJvbGxlcihQYWdlJiBwYWdlLCBJbnNwZWN0b3JDbGllbnQqIGlu
c3BlY3RvckMKICAgICBtX2FnZW50cy5hcHBlbmQoV1RGOjptb3ZlKGRhdGFiYXNlQWdlbnRQdHIp
KTsKIAogI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQotICAgIG1fYWdlbnRzLmFwcGVuZChz
dGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvckluZGV4ZWREQkFnZW50PihtX2luc3RydW1lbnRpbmdB
Z2VudHMuZ2V0KCksIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmdldCgpLCBwYWdlQWdlbnQpKTsK
KyAgICBtX2FnZW50cy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JJbmRleGVkREJB
Z2VudD4obV9pbnN0cnVtZW50aW5nQWdlbnRzLmdldCgpLCAqbV9pbmplY3RlZFNjcmlwdE1hbmFn
ZXIsIHBhZ2VBZ2VudCkpOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoV0VCX1JFUExBWSkKQEAgLTE0
MCwxMiArMTQwLDEyIEBAIEluc3BlY3RvckNvbnRyb2xsZXI6Okluc3BlY3RvckNvbnRyb2xsZXIo
UGFnZSYgcGFnZSwgSW5zcGVjdG9yQ2xpZW50KiBpbnNwZWN0b3JDCiAgICAgbV9yZXNvdXJjZUFn
ZW50ID0gcmVzb3VyY2VBZ2VudFB0ci5nZXQoKTsKICAgICBtX2FnZW50cy5hcHBlbmQoV1RGOjpt
b3ZlKHJlc291cmNlQWdlbnRQdHIpKTsKIAotICAgIGF1dG8gY29uc29sZUFnZW50UHRyID0gc3Rk
OjptYWtlX3VuaXF1ZTxQYWdlQ29uc29sZUFnZW50PihtX2luamVjdGVkU2NyaXB0TWFuYWdlci5n
ZXQoKSwgbV9kb21BZ2VudCk7CisgICAgYXV0byBjb25zb2xlQWdlbnRQdHIgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFBhZ2VDb25zb2xlQWdlbnQ+KCptX2luamVjdGVkU2NyaXB0TWFuYWdlciwgbV9kb21B
Z2VudCk7CiAgICAgV2ViQ29uc29sZUFnZW50KiBjb25zb2xlQWdlbnQgPSBjb25zb2xlQWdlbnRQ
dHIuZ2V0KCk7CiAgICAgbV9pbnN0cnVtZW50aW5nQWdlbnRzLT5zZXRXZWJDb25zb2xlQWdlbnQo
Y29uc29sZUFnZW50UHRyLmdldCgpKTsKICAgICBtX2FnZW50cy5hcHBlbmQoV1RGOjptb3ZlKGNv
bnNvbGVBZ2VudFB0cikpOwogCi0gICAgYXV0byBkZWJ1Z2dlckFnZW50UHRyID0gc3RkOjptYWtl
X3VuaXF1ZTxQYWdlRGVidWdnZXJBZ2VudD4obV9pbmplY3RlZFNjcmlwdE1hbmFnZXIuZ2V0KCks
IG1faW5zdHJ1bWVudGluZ0FnZW50cy5nZXQoKSwgcGFnZUFnZW50LCBtX292ZXJsYXkuZ2V0KCkp
OworICAgIGF1dG8gZGVidWdnZXJBZ2VudFB0ciA9IHN0ZDo6bWFrZV91bmlxdWU8UGFnZURlYnVn
Z2VyQWdlbnQ+KCptX2luamVjdGVkU2NyaXB0TWFuYWdlciwgbV9pbnN0cnVtZW50aW5nQWdlbnRz
LmdldCgpLCBwYWdlQWdlbnQsIG1fb3ZlcmxheS5nZXQoKSk7CiAgICAgbV9kZWJ1Z2dlckFnZW50
ID0gZGVidWdnZXJBZ2VudFB0ci5nZXQoKTsKICAgICBtX2FnZW50cy5hcHBlbmQoV1RGOjptb3Zl
KGRlYnVnZ2VyQWdlbnRQdHIpKTsKIApAQCAtMjMzLDcgKzIzMyw3IEBAIHZvaWQgSW5zcGVjdG9y
Q29udHJvbGxlcjo6Y29ubmVjdEZyb250ZW5kKEZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFu
bmVsLCBib29sCiAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpmcm9udGVuZENyZWF0ZWQo
KTsKIAogICAgIGlmIChjb25uZWN0ZWRGaXJzdEZyb250ZW5kKSB7Ci0gICAgICAgIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6cmVnaXN0ZXJJbnN0cnVtZW50aW5nQWdlbnRzKCptX2luc3RydW1l
bnRpbmdBZ2VudHMpOworICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnJlZ2lzdGVy
SW5zdHJ1bWVudGluZ0FnZW50cyhtX2luc3RydW1lbnRpbmdBZ2VudHMuZ2V0KCkpOwogICAgICAg
ICBtX2FnZW50cy5kaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoJm1fZnJvbnRlbmRSb3V0ZXIu
Z2V0KCksICZtX2JhY2tlbmREaXNwYXRjaGVyLmdldCgpKTsKICAgICB9CiAKQEAgLTI1OSw3ICsy
NTksNyBAQCB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OmRpc2Nvbm5lY3RGcm9udGVuZChGcm9u
dGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5lbCkKICAgICAgICAgLy8gUmVsZWFzZSBvdmVybGF5
IHBhZ2UgcmVzb3VyY2VzLgogICAgICAgICBtX292ZXJsYXktPmZyZWVQYWdlKCk7CiAgICAgICAg
IG1fYWdlbnRzLndpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKERpc2Nvbm5lY3RSZWFzb246
Okluc3BlY3RvckRlc3Ryb3llZCk7Ci0gICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
dW5yZWdpc3Rlckluc3RydW1lbnRpbmdBZ2VudHMoKm1faW5zdHJ1bWVudGluZ0FnZW50cyk7Cisg
ICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6dW5yZWdpc3Rlckluc3RydW1lbnRpbmdB
Z2VudHMobV9pbnN0cnVtZW50aW5nQWdlbnRzLmdldCgpKTsKICAgICB9CiAKICNpZiBFTkFCTEUo
UkVNT1RFX0lOU1BFQ1RPUikKQEAgLTI4Niw3ICsyODYsNyBAQCB2b2lkIEluc3BlY3RvckNvbnRy
b2xsZXI6OmRpc2Nvbm5lY3RBbGxGcm9udGVuZHMoKQogICAgIHdoaWxlIChJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246Omhhc0Zyb250ZW5kcygpKQogICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OmZyb250ZW5kRGVsZXRlZCgpOwogCi0gICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
Ojp1bnJlZ2lzdGVySW5zdHJ1bWVudGluZ0FnZW50cygqbV9pbnN0cnVtZW50aW5nQWdlbnRzKTsK
KyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnVucmVnaXN0ZXJJbnN0cnVtZW50aW5nQWdl
bnRzKG1faW5zdHJ1bWVudGluZ0FnZW50cy5nZXQoKSk7CiAgICAgCiAjaWYgRU5BQkxFKFJFTU9U
RV9JTlNQRUNUT1IpCiAgICAgbV9wYWdlLnJlbW90ZUluc3BlY3RvckluZm9ybWF0aW9uRGlkQ2hh
bmdlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29u
dHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIu
aAppbmRleCBkYmZiZTNmZGU4OGE5MzZlZGMyNWQ1MmIwYTIzMDkxMzJlNDA0YzE5Li5kNDBiZDcy
MTgwZjg1MjQ4YTNlMjVlOWNjNmY2NzU4OGI2MWFkZWYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmgKQEAgLTEsNSArMSw2IEBACiAvKgogICog
Q29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQpAQCAtMTM5LDI1ICsxNDAsMjYgQEAgcHVibGlj
OgogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOwog
Ci0gICAgUmVmUHRyPEluc3RydW1lbnRpbmdBZ2VudHM+IG1faW5zdHJ1bWVudGluZ0FnZW50czsK
KyAgICBSZWY8SW5zdHJ1bWVudGluZ0FnZW50cz4gbV9pbnN0cnVtZW50aW5nQWdlbnRzOwogICAg
IHN0ZDo6dW5pcXVlX3B0cjxXZWJJbmplY3RlZFNjcmlwdE1hbmFnZXI+IG1faW5qZWN0ZWRTY3Jp
cHRNYW5hZ2VyOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3JPdmVybGF5PiBtX292ZXJs
YXk7Ci0KLSAgICBJbnNwZWN0b3I6Okluc3BlY3RvckFnZW50KiBtX2luc3BlY3RvckFnZW50Owot
ICAgIEluc3BlY3RvckRPTUFnZW50KiBtX2RvbUFnZW50OwotICAgIEluc3BlY3RvclJlc291cmNl
QWdlbnQqIG1fcmVzb3VyY2VBZ2VudDsKLSAgICBJbnNwZWN0b3JQYWdlQWdlbnQqIG1fcGFnZUFn
ZW50OwotICAgIFBhZ2VEZWJ1Z2dlckFnZW50KiBtX2RlYnVnZ2VyQWdlbnQ7Ci0gICAgSW5zcGVj
dG9yRE9NRGVidWdnZXJBZ2VudCogbV9kb21EZWJ1Z2dlckFnZW50OwotICAgIEluc3BlY3RvclRp
bWVsaW5lQWdlbnQqIG1fdGltZWxpbmVBZ2VudDsKLQogICAgIFJlZjxJbnNwZWN0b3I6OkZyb250
ZW5kUm91dGVyPiBtX2Zyb250ZW5kUm91dGVyOwogICAgIFJlZjxJbnNwZWN0b3I6OkJhY2tlbmRE
aXNwYXRjaGVyPiBtX2JhY2tlbmREaXNwYXRjaGVyOwogICAgIFJlZjxXVEY6OlN0b3B3YXRjaD4g
bV9leGVjdXRpb25TdG9wd2F0Y2g7CisgICAgSW5zcGVjdG9yOjpBZ2VudFJlZ2lzdHJ5IG1fYWdl
bnRzOworCiAgICAgUGFnZSYgbV9wYWdlOwotICAgIEluc3BlY3RvckNsaWVudCogbV9pbnNwZWN0
b3JDbGllbnQ7CisgICAgSW5zcGVjdG9yQ2xpZW50KiBtX2luc3BlY3RvckNsaWVudCB7IG51bGxw
dHIgfTsKICAgICBJbnNwZWN0b3JGcm9udGVuZENsaWVudCogbV9pbnNwZWN0b3JGcm9udGVuZENs
aWVudCB7IG51bGxwdHIgfTsKLSAgICBJbnNwZWN0b3I6OkFnZW50UmVnaXN0cnkgbV9hZ2VudHM7
CisKKyAgICBJbnNwZWN0b3I6Okluc3BlY3RvckFnZW50KiBtX2luc3BlY3RvckFnZW50IHsgbnVs
bHB0ciB9OworICAgIEluc3BlY3RvckRPTUFnZW50KiBtX2RvbUFnZW50IHsgbnVsbHB0ciB9Owor
ICAgIEluc3BlY3RvclJlc291cmNlQWdlbnQqIG1fcmVzb3VyY2VBZ2VudCB7IG51bGxwdHIgfTsK
KyAgICBJbnNwZWN0b3JQYWdlQWdlbnQqIG1fcGFnZUFnZW50IHsgbnVsbHB0ciB9OworICAgIFBh
Z2VEZWJ1Z2dlckFnZW50KiBtX2RlYnVnZ2VyQWdlbnQgeyBudWxscHRyIH07CisgICAgSW5zcGVj
dG9yRE9NRGVidWdnZXJBZ2VudCogbV9kb21EZWJ1Z2dlckFnZW50IHsgbnVsbHB0ciB9OworICAg
IEluc3BlY3RvclRpbWVsaW5lQWdlbnQqIG1fdGltZWxpbmVBZ2VudCB7IG51bGxwdHIgfTsKKwog
ICAgIFZlY3RvcjxJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUsIDI+IG1faW5qZWN0ZWRT
Y3JpcHRJbnN0cnVtZW50YXRpb25Db29raWVzOwogICAgIGJvb2wgbV9pc1VuZGVyVGVzdCB7IGZh
bHNlIH07CiAgICAgYm9vbCBtX2lzQXV0b21hdGljSW5zcGVjdGlvbiB7IGZhbHNlIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcAppbmRleCAyMzM3
ZjlmMjQ0NDE0Y2VkNDUwZTY3MGU2NDNmZDBiYjNjOGU1NjE3Li5hYjkwZDRlNTI4ZjdkMDRlZTVj
NzBiZjA1YjQwY2IzMWYxODY3ZDhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JET01BZ2VudC5jcHAKQEAgLTIwMSwxNyArMjAxLDExIEBAIFN0cmluZyBJbnNwZWN0
b3JET01BZ2VudDo6dG9FcnJvclN0cmluZyhjb25zdCBFeGNlcHRpb25Db2RlJiBlYykKICAgICBy
ZXR1cm4gIiI7CiB9CiAKLUluc3BlY3RvckRPTUFnZW50OjpJbnNwZWN0b3JET01BZ2VudChJbnN0
cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCBJbnNwZWN0b3JQYWdlQWdlbnQq
IHBhZ2VBZ2VudCwgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiBpbmplY3RlZFNjcmlwdE1hbmFnZXIs
IEluc3BlY3Rvck92ZXJsYXkqIG92ZXJsYXkpCitJbnNwZWN0b3JET01BZ2VudDo6SW5zcGVjdG9y
RE9NQWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgSW5zcGVj
dG9yUGFnZUFnZW50KiBwYWdlQWdlbnQsIEluamVjdGVkU2NyaXB0TWFuYWdlciYgaW5qZWN0ZWRT
Y3JpcHRNYW5hZ2VyLCBJbnNwZWN0b3JPdmVybGF5KiBvdmVybGF5KQogICAgIDogSW5zcGVjdG9y
QWdlbnRCYXNlKEFTQ0lJTGl0ZXJhbCgiRE9NIiksIGluc3RydW1lbnRpbmdBZ2VudHMpCi0gICAg
LCBtX3BhZ2VBZ2VudChwYWdlQWdlbnQpCiAgICAgLCBtX2luamVjdGVkU2NyaXB0TWFuYWdlcihp
bmplY3RlZFNjcmlwdE1hbmFnZXIpCisgICAgLCBtX3BhZ2VBZ2VudChwYWdlQWdlbnQpCiAgICAg
LCBtX292ZXJsYXkob3ZlcmxheSkKLSAgICAsIG1fZG9tTGlzdGVuZXIoMCkKLSAgICAsIG1fbGFz
dE5vZGVJZCgxKQotICAgICwgbV9sYXN0QmFja2VuZE5vZGVJZCgtMSkKLSAgICAsIG1fc2VhcmNo
aW5nRm9yTm9kZShmYWxzZSkKLSAgICAsIG1fc3VwcHJlc3NBdHRyaWJ1dGVNb2RpZmllZEV2ZW50
KGZhbHNlKQotICAgICwgbV9kb2N1bWVudFJlcXVlc3RlZChmYWxzZSkKIHsKIH0KIApAQCAtMjI5
LDcgKzIyMyw3IEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5k
QmFja2VuZChJbnNwZWN0b3I6OkZyb250ZW5kUm91dGVyKiBmCiAgICAgbV9oaXN0b3J5ID0gc3Rk
OjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JIaXN0b3J5PigpOwogICAgIG1fZG9tRWRpdG9yID0gc3Rk
OjptYWtlX3VuaXF1ZTxET01FZGl0b3I+KG1faGlzdG9yeS5nZXQoKSk7CiAKLSAgICBtX2luc3Ry
dW1lbnRpbmdBZ2VudHMtPnNldEluc3BlY3RvckRPTUFnZW50KHRoaXMpOworICAgIG1faW5zdHJ1
bWVudGluZ0FnZW50cy5zZXRJbnNwZWN0b3JET01BZ2VudCh0aGlzKTsKICAgICBtX2RvY3VtZW50
ID0gbV9wYWdlQWdlbnQtPm1haW5GcmFtZSgpLT5kb2N1bWVudCgpOwogCiAgICAgaWYgKG1fbm9k
ZVRvRm9jdXMpCkBAIC0yNDgsNyArMjQyLDcgQEAgdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6d2ls
bERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpEaXNjb25uZWN0UmVhc28KICAg
ICBzZXRTZWFyY2hpbmdGb3JOb2RlKHVudXNlZCwgZmFsc2UsIDApOwogICAgIGhpZGVIaWdobGln
aHQodW51c2VkKTsKIAotICAgIG1faW5zdHJ1bWVudGluZ0FnZW50cy0+c2V0SW5zcGVjdG9yRE9N
QWdlbnQoMCk7CisgICAgbV9pbnN0cnVtZW50aW5nQWdlbnRzLnNldEluc3BlY3RvckRPTUFnZW50
KDApOwogICAgIG1fZG9jdW1lbnRSZXF1ZXN0ZWQgPSBmYWxzZTsKICAgICByZXNldCgpOwogfQpA
QCAtMTAwNiw3ICsxMDAwLDcgQEAgdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6Zm9jdXNOb2RlKCkK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgSlNDOjpFeGVjU3RhdGUqIHNjcmlwdFN0YXRlID0gbWFp
bldvcmxkRXhlY1N0YXRlKGZyYW1lKTsKLSAgICBJbmplY3RlZFNjcmlwdCBpbmplY3RlZFNjcmlw
dCA9IG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLT5pbmplY3RlZFNjcmlwdEZvcihzY3JpcHRTdGF0
ZSk7CisgICAgSW5qZWN0ZWRTY3JpcHQgaW5qZWN0ZWRTY3JpcHQgPSBtX2luamVjdGVkU2NyaXB0
TWFuYWdlci5pbmplY3RlZFNjcmlwdEZvcihzY3JpcHRTdGF0ZSk7CiAgICAgaWYgKGluamVjdGVk
U2NyaXB0Lmhhc05vVmFsdWUoKSkKICAgICAgICAgcmV0dXJuOwogCkBAIC0xNDgyLDcgKzE0NzYs
NyBAQCBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NOjpFdmVudExpc3RlbmVyPiBJbnNwZWN0
b3JET01BZ2VudDo6YnVpbGRPYmplY3RGb3JFdgogICAgICAgICAuc2V0SGFuZGxlckJvZHkoYm9k
eSkKICAgICAgICAgLnJlbGVhc2UoKTsKICAgICBpZiAob2JqZWN0R3JvdXBJZCAmJiBoYW5kbGVy
ICYmIHN0YXRlKSB7Ci0gICAgICAgIEluamVjdGVkU2NyaXB0IGluamVjdGVkU2NyaXB0ID0gbV9p
bmplY3RlZFNjcmlwdE1hbmFnZXItPmluamVjdGVkU2NyaXB0Rm9yKHN0YXRlKTsKKyAgICAgICAg
SW5qZWN0ZWRTY3JpcHQgaW5qZWN0ZWRTY3JpcHQgPSBtX2luamVjdGVkU2NyaXB0TWFuYWdlci5p
bmplY3RlZFNjcmlwdEZvcihzdGF0ZSk7CiAgICAgICAgIGlmICghaW5qZWN0ZWRTY3JpcHQuaGFz
Tm9WYWx1ZSgpKQogICAgICAgICAgICAgdmFsdWUtPnNldEhhbmRsZXIoaW5qZWN0ZWRTY3JpcHQu
d3JhcE9iamVjdChEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZShzdGF0ZS0+dm0oKSwgaGFuZGxlciks
ICpvYmplY3RHcm91cElkKSk7CiAgICAgfQpAQCAtMjA3Miw3ICsyMDY2LDcgQEAgTm9kZSogSW5z
cGVjdG9yRE9NQWdlbnQ6Om5vZGVGb3JQYXRoKGNvbnN0IFN0cmluZyYgcGF0aCkKIAogTm9kZSog
SW5zcGVjdG9yRE9NQWdlbnQ6Om5vZGVGb3JPYmplY3RJZChjb25zdCBTdHJpbmcmIG9iamVjdElk
KQogewotICAgIEluamVjdGVkU2NyaXB0IGluamVjdGVkU2NyaXB0ID0gbV9pbmplY3RlZFNjcmlw
dE1hbmFnZXItPmluamVjdGVkU2NyaXB0Rm9yT2JqZWN0SWQob2JqZWN0SWQpOworICAgIEluamVj
dGVkU2NyaXB0IGluamVjdGVkU2NyaXB0ID0gbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIuaW5qZWN0
ZWRTY3JpcHRGb3JPYmplY3RJZChvYmplY3RJZCk7CiAgICAgaWYgKGluamVjdGVkU2NyaXB0Lmhh
c05vVmFsdWUoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKQEAgLTIxMTIsNyArMjEwNiw3
IEBAIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+IElu
c3BlY3RvckRPTUFnZW50OjpyZXNvbHZlTm9kCiAgICAgICAgIHJldHVybiAwOwogCiAgICAgSlND
OjpFeGVjU3RhdGUqIHNjcmlwdFN0YXRlID0gbWFpbldvcmxkRXhlY1N0YXRlKGZyYW1lKTsKLSAg
ICBJbmplY3RlZFNjcmlwdCBpbmplY3RlZFNjcmlwdCA9IG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2Vy
LT5pbmplY3RlZFNjcmlwdEZvcihzY3JpcHRTdGF0ZSk7CisgICAgSW5qZWN0ZWRTY3JpcHQgaW5q
ZWN0ZWRTY3JpcHQgPSBtX2luamVjdGVkU2NyaXB0TWFuYWdlci5pbmplY3RlZFNjcmlwdEZvcihz
Y3JpcHRTdGF0ZSk7CiAgICAgaWYgKGluamVjdGVkU2NyaXB0Lmhhc05vVmFsdWUoKSkKICAgICAg
ICAgcmV0dXJuIDA7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JET01BZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFn
ZW50LmgKaW5kZXggMmQzYmZlMTdjM2I2NTc1OGI4MWFmOWI4ZWI0YTVlMjNjN2NkZGNjNS4uYzg2
YjU1MzBjMmFmOTYyYTQ4OGNiMGEzY2Q1MzJjYTJkMDFhOTUzYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmgKQEAgLTEwNCw3ICsxMDQsNyBAQCBwdWJs
aWM6CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRNb2RpZnlET01BdHRyKEVsZW1lbnQqKSA9IDA7
CiAgICAgfTsKIAotICAgIEluc3BlY3RvckRPTUFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMqLCBJ
bnNwZWN0b3JQYWdlQWdlbnQqLCBJbnNwZWN0b3I6OkluamVjdGVkU2NyaXB0TWFuYWdlciosIElu
c3BlY3Rvck92ZXJsYXkqKTsKKyAgICBJbnNwZWN0b3JET01BZ2VudChJbnN0cnVtZW50aW5nQWdl
bnRzJiwgSW5zcGVjdG9yUGFnZUFnZW50KiwgSW5zcGVjdG9yOjpJbmplY3RlZFNjcmlwdE1hbmFn
ZXImLCBJbnNwZWN0b3JPdmVybGF5Kik7CiAgICAgdmlydHVhbCB+SW5zcGVjdG9yRE9NQWdlbnQo
KTsKIAogICAgIHN0YXRpYyBTdHJpbmcgdG9FcnJvclN0cmluZyhjb25zdCBFeGNlcHRpb25Db2Rl
Jik7CkBAIC0yNDcsMTIgKzI0NywxMyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBpbm5lckhpZ2hs
aWdodFF1YWQoc3RkOjp1bmlxdWVfcHRyPEZsb2F0UXVhZD4sIGNvbnN0IEluc3BlY3Rvcjo6SW5z
cGVjdG9yT2JqZWN0KiBjb2xvciwgY29uc3QgSW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3QqIG91
dGxpbmVDb2xvciwgY29uc3QgYm9vbCogdXNlUGFnZUNvb3JkaW5hdGVzKTsKIAotICAgIEluc3Bl
Y3RvclBhZ2VBZ2VudCogbV9wYWdlQWdlbnQ7Ci0gICAgSW5zcGVjdG9yOjpJbmplY3RlZFNjcmlw
dE1hbmFnZXIqIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOwotICAgIEluc3BlY3Rvck92ZXJsYXkq
IG1fb3ZlcmxheTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yOjpET01Gcm9udGVuZERp
c3BhdGNoZXI+IG1fZnJvbnRlbmREaXNwYXRjaGVyOwogICAgIFJlZlB0cjxJbnNwZWN0b3I6OkRP
TUJhY2tlbmREaXNwYXRjaGVyPiBtX2JhY2tlbmREaXNwYXRjaGVyOwotICAgIERPTUxpc3RlbmVy
KiBtX2RvbUxpc3RlbmVyOworICAgIEluc3BlY3Rvcjo6SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyJiBt
X2luamVjdGVkU2NyaXB0TWFuYWdlcjsKKyAgICBJbnNwZWN0b3JQYWdlQWdlbnQqIG1fcGFnZUFn
ZW50IHsgbnVsbHB0ciB9OworCisgICAgSW5zcGVjdG9yT3ZlcmxheSogbV9vdmVybGF5IHsgbnVs
bHB0ciB9OworICAgIERPTUxpc3RlbmVyKiBtX2RvbUxpc3RlbmVyIHsgbnVsbHB0ciB9OwogICAg
IE5vZGVUb0lkTWFwIG1fZG9jdW1lbnROb2RlVG9JZE1hcDsKICAgICB0eXBlZGVmIEhhc2hNYXA8
UmVmUHRyPE5vZGU+LCBCYWNrZW5kTm9kZUlkPiBOb2RlVG9CYWNrZW5kSWRNYXA7CiAgICAgSGFz
aE1hcDxTdHJpbmcsIE5vZGVUb0JhY2tlbmRJZE1hcD4gbV9ub2RlR3JvdXBUb0JhY2tlbmRJZE1h
cDsKQEAgLTI2MiwxOSArMjYzLDE5IEBAIHByaXZhdGU6CiAgICAgSGFzaE1hcDxpbnQsIE5vZGVU
b0lkTWFwKj4gbV9pZFRvTm9kZXNNYXA7CiAgICAgSGFzaFNldDxpbnQ+IG1fY2hpbGRyZW5SZXF1
ZXN0ZWQ7CiAgICAgSGFzaE1hcDxCYWNrZW5kTm9kZUlkLCBzdGQ6OnBhaXI8Tm9kZSosIFN0cmlu
Zz4+IG1fYmFja2VuZElkVG9Ob2RlOwotICAgIGludCBtX2xhc3ROb2RlSWQ7Ci0gICAgQmFja2Vu
ZE5vZGVJZCBtX2xhc3RCYWNrZW5kTm9kZUlkOworICAgIGludCBtX2xhc3ROb2RlSWQgeyAwIH07
CisgICAgQmFja2VuZE5vZGVJZCBtX2xhc3RCYWNrZW5kTm9kZUlkIHsgLTEgfTsKICAgICBSZWZQ
dHI8RG9jdW1lbnQ+IG1fZG9jdW1lbnQ7CiAgICAgdHlwZWRlZiBIYXNoTWFwPFN0cmluZywgVmVj
dG9yPFJlZlB0cjxOb2RlPj4+IFNlYXJjaFJlc3VsdHM7CiAgICAgU2VhcmNoUmVzdWx0cyBtX3Nl
YXJjaFJlc3VsdHM7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFJldmFsaWRhdGVTdHlsZUF0dHJpYnV0
ZVRhc2s+IG1fcmV2YWxpZGF0ZVN0eWxlQXR0clRhc2s7CiAgICAgUmVmUHRyPE5vZGU+IG1fbm9k
ZVRvRm9jdXM7Ci0gICAgYm9vbCBtX3NlYXJjaGluZ0Zvck5vZGU7CisgICAgYm9vbCBtX3NlYXJj
aGluZ0Zvck5vZGUgeyBmYWxzZSB9OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxIaWdobGlnaHRDb25m
aWc+IG1faW5zcGVjdE1vZGVIaWdobGlnaHRDb25maWc7CiAgICAgc3RkOjp1bmlxdWVfcHRyPElu
c3BlY3Rvckhpc3Rvcnk+IG1faGlzdG9yeTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8RE9NRWRpdG9y
PiBtX2RvbUVkaXRvcjsKLSAgICBib29sIG1fc3VwcHJlc3NBdHRyaWJ1dGVNb2RpZmllZEV2ZW50
OwotICAgIGJvb2wgbV9kb2N1bWVudFJlcXVlc3RlZDsKKyAgICBib29sIG1fc3VwcHJlc3NBdHRy
aWJ1dGVNb2RpZmllZEV2ZW50IHsgZmFsc2UgfTsKKyAgICBib29sIG1fZG9jdW1lbnRSZXF1ZXN0
ZWQgeyBmYWxzZSB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQuY3BwCmlu
ZGV4IGJiZDkyMzAxYjU3ZWY5MjE5N2E5YjBlYzlmNjhiZjYwNTVmY2ZjNWMuLmY4M2VkN2ExMGUx
ZmIzYTdlODYzYTI1M2M3NzZkZjRlMGMwOThkNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudC5jcHAKQEAgLTYwLDEyICs2
MCwxMCBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLUluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6Okluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQo
SW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgSW5zcGVjdG9yRE9NQWdl
bnQqIGRvbUFnZW50LCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50KiBkZWJ1Z2dlckFnZW50KQorSW5z
cGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6SW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudChJbnN0cnVt
ZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBJbnNwZWN0b3JET01BZ2VudCogZG9t
QWdlbnQsIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQqIGRlYnVnZ2VyQWdlbnQpCiAgICAgOiBJbnNw
ZWN0b3JBZ2VudEJhc2UoQVNDSUlMaXRlcmFsKCJET01EZWJ1Z2dlciIpLCBpbnN0cnVtZW50aW5n
QWdlbnRzKQogICAgICwgbV9kb21BZ2VudChkb21BZ2VudCkKICAgICAsIG1fZGVidWdnZXJBZ2Vu
dChkZWJ1Z2dlckFnZW50KQotICAgICwgbV9wYXVzZUluTmV4dEV2ZW50TGlzdGVuZXIoZmFsc2Up
Ci0gICAgLCBtX3BhdXNlT25BbGxYSFJzRW5hYmxlZChmYWxzZSkKIHsKICAgICBtX2RlYnVnZ2Vy
QWdlbnQtPnNldExpc3RlbmVyKHRoaXMpOwogfQpAQCAtNzMsMTMgKzcxLDEzIEBAIEluc3BlY3Rv
ckRPTURlYnVnZ2VyQWdlbnQ6Okluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQoSW5zdHJ1bWVudGlu
Z0FnZW50cyogaW5zdHJ1CiBJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50Ojp+SW5zcGVjdG9yRE9N
RGVidWdnZXJBZ2VudCgpCiB7CiAgICAgQVNTRVJUKCFtX2RlYnVnZ2VyQWdlbnQpOwotICAgIEFT
U0VSVCghbV9pbnN0cnVtZW50aW5nQWdlbnRzLT5pbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50KCkp
OworICAgIEFTU0VSVCghbV9pbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3RvckRPTURlYnVnZ2Vy
QWdlbnQoKSk7CiB9CiAKIC8vIEJyb3dzZXIgZGVidWdnZXIgYWdlbnQgZW5hYmxlZCBvbmx5IHdo
ZW4gSlMgZGVidWdnZXIgaXMgZW5hYmxlZC4KIHZvaWQgSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2Vu
dDo6ZGVidWdnZXJXYXNFbmFibGVkKCkKIHsKLSAgICBtX2luc3RydW1lbnRpbmdBZ2VudHMtPnNl
dEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQodGhpcyk7CisgICAgbV9pbnN0cnVtZW50aW5nQWdl
bnRzLnNldEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQodGhpcyk7CiB9CiAKIHZvaWQgSW5zcGVj
dG9yRE9NRGVidWdnZXJBZ2VudDo6ZGVidWdnZXJXYXNEaXNhYmxlZCgpCkBAIC05OSw3ICs5Nyw3
IEBAIHZvaWQgSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6ZGlkUGF1c2UoKQogCiB2b2lkIElu
c3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6OmRpc2FibGUoKQogewotICAgIG1faW5zdHJ1bWVudGlu
Z0FnZW50cy0+c2V0SW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudChudWxscHRyKTsKKyAgICBtX2lu
c3RydW1lbnRpbmdBZ2VudHMuc2V0SW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudChudWxscHRyKTsK
ICAgICBjbGVhcigpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckRPTURlYnVnZ2VyQWdlbnQuaAppbmRleCBkMWRjNTNmYjI0YWQ0ZjZmYjAxZTczYzIz
NmM1MjlhY2IzMjViZDFjLi5iZjQzMTkxMzgwYzE1M2VlNDg1YWQyZDY4NDFhODJhMDFjMDlmYzY4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NRGVidWdn
ZXJBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01EZWJ1
Z2dlckFnZW50LmgKQEAgLTU2LDcgKzU2LDcgQEAgY2xhc3MgSW5zcGVjdG9yRE9NRGVidWdnZXJB
Z2VudCBmaW5hbCA6IHB1YmxpYyBJbnNwZWN0b3JBZ2VudEJhc2UsIHB1YmxpYyBJbnNwZWMKICAg
ICBXVEZfTUFLRV9OT05DT1BZQUJMRShJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50KTsKICAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBJbnNwZWN0b3JET01EZWJ1Z2dl
ckFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMqLCBJbnNwZWN0b3JET01BZ2VudCosIEluc3BlY3Rv
cjo6SW5zcGVjdG9yRGVidWdnZXJBZ2VudCopOworICAgIEluc3BlY3RvckRPTURlYnVnZ2VyQWdl
bnQoSW5zdHJ1bWVudGluZ0FnZW50cyYsIEluc3BlY3RvckRPTUFnZW50KiwgSW5zcGVjdG9yOjpJ
bnNwZWN0b3JEZWJ1Z2dlckFnZW50Kik7CiAgICAgdmlydHVhbCB+SW5zcGVjdG9yRE9NRGVidWdn
ZXJBZ2VudCgpOwogCiAgICAgLy8gRE9NRGVidWdnZXIgQVBJCkBAIC0xMDAsMTQgKzEwMCwxNSBA
QCBwcml2YXRlOgogCiAgICAgdm9pZCBjbGVhcigpOwogCi0gICAgSW5zcGVjdG9yRE9NQWdlbnQq
IG1fZG9tQWdlbnQ7Ci0gICAgSW5zcGVjdG9yOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50KiBtX2Rl
YnVnZ2VyQWdlbnQ7CiAgICAgUmVmUHRyPEluc3BlY3Rvcjo6RE9NRGVidWdnZXJCYWNrZW5kRGlz
cGF0Y2hlcj4gbV9iYWNrZW5kRGlzcGF0Y2hlcjsKKyAgICBJbnNwZWN0b3JET01BZ2VudCogbV9k
b21BZ2VudCB7IG51bGxwdHIgfTsKKyAgICBJbnNwZWN0b3I6Okluc3BlY3RvckRlYnVnZ2VyQWdl
bnQqIG1fZGVidWdnZXJBZ2VudCB7IG51bGxwdHIgfTsKKwogICAgIEhhc2hNYXA8Tm9kZSosIHVp
bnQzMl90PiBtX2RvbUJyZWFrcG9pbnRzOwogICAgIEhhc2hTZXQ8U3RyaW5nPiBtX2V2ZW50TGlz
dGVuZXJCcmVha3BvaW50czsKICAgICBIYXNoU2V0PFN0cmluZz4gbV94aHJCcmVha3BvaW50czsK
LSAgICBib29sIG1fcGF1c2VJbk5leHRFdmVudExpc3RlbmVyOwotICAgIGJvb2wgbV9wYXVzZU9u
QWxsWEhSc0VuYWJsZWQ7CisgICAgYm9vbCBtX3BhdXNlSW5OZXh0RXZlbnRMaXN0ZW5lciB7IGZh
bHNlIH07CisgICAgYm9vbCBtX3BhdXNlT25BbGxYSFJzRW5hYmxlZCB7IGZhbHNlIH07CiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuY3BwCmluZGV4IDNmMDg0NTlmNzZhZTZkMTFh
MDc4N2ExMGJlMzRjNDcyYzE5MjE5NjcuLmIyZGU5MmJjMGE1NzQ1OGE2YTQzZWIyNTA2Yjc0OWYz
MzAxNDY0ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JE
T01TdG9yYWdlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JET01TdG9yYWdlQWdlbnQuY3BwCkBAIC01NCwxOCArNTQsMTYgQEAgdXNpbmcgbmFtZXNwYWNl
IEluc3BlY3RvcjsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1JbnNwZWN0b3JET01TdG9yYWdl
QWdlbnQ6Okluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0
cnVtZW50aW5nQWdlbnRzLCBJbnNwZWN0b3JQYWdlQWdlbnQqIHBhZ2VBZ2VudCkKK0luc3BlY3Rv
ckRPTVN0b3JhZ2VBZ2VudDo6SW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50KEluc3RydW1lbnRpbmdB
Z2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIEluc3BlY3RvclBhZ2VBZ2VudCogcGFnZUFnZW50
KQogICAgIDogSW5zcGVjdG9yQWdlbnRCYXNlKEFTQ0lJTGl0ZXJhbCgiRE9NU3RvcmFnZSIpLCBp
bnN0cnVtZW50aW5nQWdlbnRzKQogICAgICwgbV9wYWdlQWdlbnQocGFnZUFnZW50KQotICAgICwg
bV9lbmFibGVkKGZhbHNlKQogewotICAgIG1faW5zdHJ1bWVudGluZ0FnZW50cy0+c2V0SW5zcGVj
dG9yRE9NU3RvcmFnZUFnZW50KHRoaXMpOworICAgIG1faW5zdHJ1bWVudGluZ0FnZW50cy5zZXRJ
bnNwZWN0b3JET01TdG9yYWdlQWdlbnQodGhpcyk7CiB9CiAKIEluc3BlY3RvckRPTVN0b3JhZ2VB
Z2VudDo6fkluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudCgpCiB7Ci0gICAgbV9pbnN0cnVtZW50aW5n
QWdlbnRzLT5zZXRJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQobnVsbHB0cik7Ci0gICAgbV9pbnN0
cnVtZW50aW5nQWdlbnRzID0gbnVsbHB0cjsKKyAgICBtX2luc3RydW1lbnRpbmdBZ2VudHMuc2V0
SW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50KG51bGxwdHIpOwogfQogCiB2b2lkIEluc3BlY3RvckRP
TVN0b3JhZ2VBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6RnJv
bnRlbmRSb3V0ZXIqIGZyb250ZW5kUm91dGVyLCBJbnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVy
KiBiYWNrZW5kRGlzcGF0Y2hlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JET01TdG9yYWdlQWdlbnQuaAppbmRleCA2Y2Y5ZDg0MGYyOGZmMjk3MTUyZjBmNTZi
YTY2Y2JjYjBkZjg1MTBmLi41OWM2ODA4N2E5YjkzODY2MWNiYjU2MTdhOGQ4OThlZDMxMDE3MDhk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFn
ZUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTVN0b3Jh
Z2VBZ2VudC5oCkBAIC01NSw3ICs1NSw3IEBAIHR5cGVkZWYgU3RyaW5nIEVycm9yU3RyaW5nOwog
Y2xhc3MgSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50IGZpbmFsIDogcHVibGljIEluc3BlY3RvckFn
ZW50QmFzZSwgcHVibGljIEluc3BlY3Rvcjo6RE9NU3RvcmFnZUJhY2tlbmREaXNwYXRjaGVySGFu
ZGxlciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgSW5zcGVj
dG9yRE9NU3RvcmFnZUFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMqLCBJbnNwZWN0b3JQYWdlQWdl
bnQqKTsKKyAgICBJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50cyYs
IEluc3BlY3RvclBhZ2VBZ2VudCopOwogICAgIHZpcnR1YWwgfkluc3BlY3RvckRPTVN0b3JhZ2VB
Z2VudCgpOwogCiAgICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJ
bnNwZWN0b3I6OkZyb250ZW5kUm91dGVyKiwgSW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlciop
IG92ZXJyaWRlOwpAQCAtNzgsMTAgKzc4LDExIEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgUmVm
UHRyPFN0b3JhZ2VBcmVhPiBmaW5kU3RvcmFnZUFyZWEoRXJyb3JTdHJpbmcmLCBjb25zdCBJbnNw
ZWN0b3I6Okluc3BlY3Rvck9iamVjdCYsIEZyYW1lKiYpOwogCi0gICAgSW5zcGVjdG9yUGFnZUFn
ZW50KiBtX3BhZ2VBZ2VudDsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yOjpET01TdG9y
YWdlRnJvbnRlbmREaXNwYXRjaGVyPiBtX2Zyb250ZW5kRGlzcGF0Y2hlcjsKICAgICBSZWZQdHI8
SW5zcGVjdG9yOjpET01TdG9yYWdlQmFja2VuZERpc3BhdGNoZXI+IG1fYmFja2VuZERpc3BhdGNo
ZXI7Ci0gICAgYm9vbCBtX2VuYWJsZWQ7CisgICAgSW5zcGVjdG9yUGFnZUFnZW50KiBtX3BhZ2VB
Z2VudCB7IG51bGxwdHIgfTsKKworICAgIGJvb2wgbV9lbmFibGVkIHsgZmFsc2UgfTsKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JEYXRhYmFzZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JEYXRhYmFzZUFnZW50LmNwcAppbmRleCAzMmM2MTk5ZDhlZjM3ODNiMDlmOTdh
MzI5ZTM3ODUwNTc0YTRlMjljLi5iM2IyNzlmOWQ1MGJiODYzNmIxODM0MjQxMTc1NWQwY2JhMjgy
Mjg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJh
c2VBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRhdGFi
YXNlQWdlbnQuY3BwCkBAIC0yMTIsMTYgKzIxMiwxNSBAQCB2b2lkIEluc3BlY3RvckRhdGFiYXNl
QWdlbnQ6OmNsZWFyUmVzb3VyY2VzKCkKICAgICBtX3Jlc291cmNlcy5jbGVhcigpOwogfQogCi1J
bnNwZWN0b3JEYXRhYmFzZUFnZW50OjpJbnNwZWN0b3JEYXRhYmFzZUFnZW50KEluc3RydW1lbnRp
bmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMpCitJbnNwZWN0b3JEYXRhYmFzZUFnZW50OjpJ
bnNwZWN0b3JEYXRhYmFzZUFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdB
Z2VudHMpCiAgICAgOiBJbnNwZWN0b3JBZ2VudEJhc2UoQVNDSUlMaXRlcmFsKCJEYXRhYmFzZSIp
LCBpbnN0cnVtZW50aW5nQWdlbnRzKQotICAgICwgbV9lbmFibGVkKGZhbHNlKQogewotICAgIG1f
aW5zdHJ1bWVudGluZ0FnZW50cy0+c2V0SW5zcGVjdG9yRGF0YWJhc2VBZ2VudCh0aGlzKTsKKyAg
ICBtX2luc3RydW1lbnRpbmdBZ2VudHMuc2V0SW5zcGVjdG9yRGF0YWJhc2VBZ2VudCh0aGlzKTsK
IH0KIAogSW5zcGVjdG9yRGF0YWJhc2VBZ2VudDo6fkluc3BlY3RvckRhdGFiYXNlQWdlbnQoKQog
ewotICAgIG1faW5zdHJ1bWVudGluZ0FnZW50cy0+c2V0SW5zcGVjdG9yRGF0YWJhc2VBZ2VudChu
dWxscHRyKTsKKyAgICBtX2luc3RydW1lbnRpbmdBZ2VudHMuc2V0SW5zcGVjdG9yRGF0YWJhc2VB
Z2VudChudWxscHRyKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JEYXRhYmFzZUFnZW50OjpkaWRDcmVh
dGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpGcm9udGVuZFJvdXRlciogZnJvbnRlbmRS
b3V0ZXIsIEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRhdGFiYXNlQWdl
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFzZUFnZW50LmgK
aW5kZXggYmVmZDhmY2FhMTY5YjNkMmNlMTZhYThhYjk1NGZlYWIyMzU0ZjhlZC4uMGYxZjkyNzlk
ZmJiZWEyYTA4ZjY0ODAxMjJhYTYyNWIzZWRkN2FiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckRhdGFiYXNlQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5oCkBAIC01MSw3ICs1MSw3IEBAIHR5
cGVkZWYgU3RyaW5nIEVycm9yU3RyaW5nOwogY2xhc3MgSW5zcGVjdG9yRGF0YWJhc2VBZ2VudCBm
aW5hbCA6IHB1YmxpYyBJbnNwZWN0b3JBZ2VudEJhc2UsIHB1YmxpYyBJbnNwZWN0b3I6OkRhdGFi
YXNlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKIHB1YmxpYzoKLSAgICBleHBsaWNpdCBJbnNwZWN0b3JEYXRhYmFzZUFnZW50KEluc3RydW1l
bnRpbmdBZ2VudHMqKTsKKyAgICBleHBsaWNpdCBJbnNwZWN0b3JEYXRhYmFzZUFnZW50KEluc3Ry
dW1lbnRpbmdBZ2VudHMmKTsKICAgICB2aXJ0dWFsIH5JbnNwZWN0b3JEYXRhYmFzZUFnZW50KCk7
CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rv
cjo6RnJvbnRlbmRSb3V0ZXIqLCBJbnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyKikgb3ZlcnJp
ZGU7CkBAIC03NSw5ICs3NSwxMCBAQCBwcml2YXRlOgogCiAgICAgc3RkOjp1bmlxdWVfcHRyPElu
c3BlY3Rvcjo6RGF0YWJhc2VGcm9udGVuZERpc3BhdGNoZXI+IG1fZnJvbnRlbmREaXNwYXRjaGVy
OwogICAgIFJlZlB0cjxJbnNwZWN0b3I6OkRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXI+IG1fYmFj
a2VuZERpc3BhdGNoZXI7CisKICAgICB0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBSZWZQdHI8SW5z
cGVjdG9yRGF0YWJhc2VSZXNvdXJjZT4+IERhdGFiYXNlUmVzb3VyY2VzTWFwOwogICAgIERhdGFi
YXNlUmVzb3VyY2VzTWFwIG1fcmVzb3VyY2VzOwotICAgIGJvb2wgbV9lbmFibGVkOworICAgIGJv
b2wgbV9lbmFibGVkIHsgZmFsc2UgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbmRleGVkREJBZ2Vu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQu
Y3BwCmluZGV4IDdlMjhiZDQ2ZDNlOTZlYzdlNDU0ZGI3NzRlMDc3NGFiYmZhZDJmYmIuLmEwODY5
NzlhMzhjZmY2MzdhMmExNTAwMDEyZTk5ZjNlMDg5NTIwNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNwcApAQCAtNTY2LDcg
KzU2Niw3IEBAIHB1YmxpYzoKIAogfSAvLyBuYW1lc3BhY2UKIAotSW5zcGVjdG9ySW5kZXhlZERC
QWdlbnQ6Okluc3BlY3RvckluZGV4ZWREQkFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3Ry
dW1lbnRpbmdBZ2VudHMsIEluamVjdGVkU2NyaXB0TWFuYWdlciogaW5qZWN0ZWRTY3JpcHRNYW5h
Z2VyLCBJbnNwZWN0b3JQYWdlQWdlbnQqIHBhZ2VBZ2VudCkKK0luc3BlY3RvckluZGV4ZWREQkFn
ZW50OjpJbnNwZWN0b3JJbmRleGVkREJBZ2VudChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVt
ZW50aW5nQWdlbnRzLCBJbmplY3RlZFNjcmlwdE1hbmFnZXImIGluamVjdGVkU2NyaXB0TWFuYWdl
ciwgSW5zcGVjdG9yUGFnZUFnZW50KiBwYWdlQWdlbnQpCiAgICAgOiBJbnNwZWN0b3JBZ2VudEJh
c2UoQVNDSUlMaXRlcmFsKCJJbmRleGVkREIiKSwgaW5zdHJ1bWVudGluZ0FnZW50cykKICAgICAs
IG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKGluamVjdGVkU2NyaXB0TWFuYWdlcikKICAgICAsIG1f
cGFnZUFnZW50KHBhZ2VBZ2VudCkKQEAgLTY2OCw3ICs2NjgsNyBAQCB2b2lkIEluc3BlY3Rvcklu
ZGV4ZWREQkFnZW50OjpyZXF1ZXN0RGF0YShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0
IFN0cmluZwogICAgIGlmICghaWRiRmFjdG9yeSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgSW5q
ZWN0ZWRTY3JpcHQgaW5qZWN0ZWRTY3JpcHQgPSBtX2luamVjdGVkU2NyaXB0TWFuYWdlci0+aW5q
ZWN0ZWRTY3JpcHRGb3IobWFpbldvcmxkRXhlY1N0YXRlKGZyYW1lKSk7CisgICAgSW5qZWN0ZWRT
Y3JpcHQgaW5qZWN0ZWRTY3JpcHQgPSBtX2luamVjdGVkU2NyaXB0TWFuYWdlci5pbmplY3RlZFNj
cmlwdEZvcihtYWluV29ybGRFeGVjU3RhdGUoZnJhbWUpKTsKIAogICAgIFJlZlB0cjxJREJLZXlS
YW5nZT4gaWRiS2V5UmFuZ2UgPSBrZXlSYW5nZSA/IGlkYktleVJhbmdlRnJvbUtleVJhbmdlKGtl
eVJhbmdlKSA6IG51bGxwdHI7CiAgICAgaWYgKGtleVJhbmdlICYmICFpZGJLZXlSYW5nZSkgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFn
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQu
aAppbmRleCA2YzJlMTdmMmQ5YTczYTc2ZWE3YTEzM2RkYWRhZTBkZjVjYTNhNDY0Li44NGE5OGZk
YzQ4YmQwMDkxM2YzNTMwOTE4ZjI0ODAzNzRkN2NmY2U1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuaApAQCAtNTEsNyArNTEsNyBA
QCB0eXBlZGVmIFN0cmluZyBFcnJvclN0cmluZzsKIGNsYXNzIEluc3BlY3RvckluZGV4ZWREQkFn
ZW50IGZpbmFsIDogcHVibGljIEluc3BlY3RvckFnZW50QmFzZSwgcHVibGljIEluc3BlY3Rvcjo6
SW5kZXhlZERCQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyIHsKICAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKIHB1YmxpYzoKLSAgICBJbnNwZWN0b3JJbmRleGVkREJBZ2VudChJbnN0cnVtZW50
aW5nQWdlbnRzKiwgSW5zcGVjdG9yOjpJbmplY3RlZFNjcmlwdE1hbmFnZXIqLCBJbnNwZWN0b3JQ
YWdlQWdlbnQqKTsKKyAgICBJbnNwZWN0b3JJbmRleGVkREJBZ2VudChJbnN0cnVtZW50aW5nQWdl
bnRzJiwgSW5zcGVjdG9yOjpJbmplY3RlZFNjcmlwdE1hbmFnZXImLCBJbnNwZWN0b3JQYWdlQWdl
bnQqKTsKICAgICB2aXJ0dWFsIH5JbnNwZWN0b3JJbmRleGVkREJBZ2VudCgpOwogCiAgICAgdmly
dHVhbCB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkZyb250ZW5k
Um91dGVyKiwgSW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlciopIG92ZXJyaWRlOwpAQCAtNjYs
OSArNjYsOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGNsZWFyT2JqZWN0U3RvcmUoRXJy
b3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGluX3NlY3VyaXR5T3JpZ2luLCBjb25zdCBTdHJpbmcm
IGluX2RhdGFiYXNlTmFtZSwgY29uc3QgU3RyaW5nJiBpbl9vYmplY3RTdG9yZU5hbWUsIFJlZjxD
bGVhck9iamVjdFN0b3JlQ2FsbGJhY2s+JiYpIG92ZXJyaWRlOwogCiBwcml2YXRlOgotICAgIElu
c3BlY3Rvcjo6SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiBtX2luamVjdGVkU2NyaXB0TWFuYWdlcjsK
LSAgICBJbnNwZWN0b3JQYWdlQWdlbnQqIG1fcGFnZUFnZW50OwogICAgIFJlZlB0cjxJbnNwZWN0
b3I6OkluZGV4ZWREQkJhY2tlbmREaXNwYXRjaGVyPiBtX2JhY2tlbmREaXNwYXRjaGVyOworICAg
IEluc3BlY3Rvcjo6SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyJiBtX2luamVjdGVkU2NyaXB0TWFuYWdl
cjsKKyAgICBJbnNwZWN0b3JQYWdlQWdlbnQqIG1fcGFnZUFnZW50IHsgbnVsbHB0ciB9OwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcAppbmRleCBlMjhjMWNhYzU4NDZjMDQ4
MGM1N2YwM2FiYjg1MTQxNDExZjExZjA4Li5hOGM1YmFkOGIzYTQxZGFlZTFmMjIyMjRhNGEyOWM3
OTA0NTI0NGE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uLmNwcApAQCAtMSw2ICsxLDYgQEAKIC8qCiAqIENvcHlyaWdodCAo
QykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotKiBDb3B5cmlnaHQgKEMp
IDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorKiBDb3B5cmlnaHQgKEMpIDIw
MTQsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogKgogKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zIGFyZQpAQCAtMTI2MSwxMCArMTI2MSwxMCBAQCBJbnNwZWN0b3JUaW1lbGlu
ZUFnZW50KiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnJldHJpZXZlVGltZWxpbmVBZ2VudChj
b25zdCBJbgogCiBJbnN0cnVtZW50aW5nQWdlbnRzKiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
Omluc3RydW1lbnRpbmdBZ2VudHNGb3JQYWdlKFBhZ2UqIHBhZ2UpCiB7Ci0gICAgcmV0dXJuIHBh
Z2UgPyBpbnN0cnVtZW50aW5nQWdlbnRzRm9yUGFnZSgqcGFnZSkgOiBudWxscHRyOworICAgIHJl
dHVybiBwYWdlID8gJmluc3RydW1lbnRpbmdBZ2VudHNGb3JQYWdlKCpwYWdlKSA6IG51bGxwdHI7
CiB9CiAKLUluc3RydW1lbnRpbmdBZ2VudHMqIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aW5z
dHJ1bWVudGluZ0FnZW50c0ZvclBhZ2UoUGFnZSYgcGFnZSkKK0luc3RydW1lbnRpbmdBZ2VudHMm
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aW5zdHJ1bWVudGluZ0FnZW50c0ZvclBhZ2UoUGFn
ZSYgcGFnZSkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIHJldHVybiBwYWdl
Lmluc3BlY3RvckNvbnRyb2xsZXIoKS5tX2luc3RydW1lbnRpbmdBZ2VudHMuZ2V0KCk7CkBAIC0x
Mjc3LDcgKzEyNzcsNyBAQCBJbnN0cnVtZW50aW5nQWdlbnRzKiBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246Omluc3RydW1lbnRpbmdBZ2VudHNGb3JSZW5kZXJlcihSZQogCiBJbnN0cnVtZW50aW5n
QWdlbnRzKiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246Omluc3RydW1lbnRpbmdBZ2VudHNGb3JX
b3JrZXJHbG9iYWxTY29wZShXb3JrZXJHbG9iYWxTY29wZSogd29ya2VyR2xvYmFsU2NvcGUpCiB7
Ci0gICAgcmV0dXJuIHdvcmtlckdsb2JhbFNjb3BlID8gd29ya2VyR2xvYmFsU2NvcGUtPndvcmtl
ckluc3BlY3RvckNvbnRyb2xsZXIoKS5tX2luc3RydW1lbnRpbmdBZ2VudHMuZ2V0KCkgOiBudWxs
cHRyOworICAgIHJldHVybiB3b3JrZXJHbG9iYWxTY29wZSA/ICZ3b3JrZXJHbG9iYWxTY29wZS0+
d29ya2VySW5zcGVjdG9yQ29udHJvbGxlcigpLm1faW5zdHJ1bWVudGluZ0FnZW50cy5nZXQoKSA6
IG51bGxwdHI7CiB9CiAKIEluc3RydW1lbnRpbmdBZ2VudHMqIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6aW5zdHJ1bWVudGluZ0FnZW50c0Zvck5vbkRvY3VtZW50Q29udGV4dChTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBjb250ZXh0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oCmluZGV4IGQxN2NiNjNjNGI5NTAzNGY5YzQ1Y2Rk
ODNlNTc1NTAzOWYwMzQ5MWIuLjlmNjM2NWU4OGQzMjhjZTNlNTYwOTY1MmE1MGI5ZTRhMWY1YWNj
NmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uLmgKQEAgLTEsNiArMSw2IEBACiAvKgogKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyogQ29weXJpZ2h0IChDKSAyMDE0LCAyMDE1IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICoKICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cyBhcmUKQEAgLTQ1Nyw3ICs0NTcsNyBAQCBwcml2YXRlOgogICAgIHN0YXRpYyB2b2lkIGxheWVy
VHJlZURpZENoYW5nZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYpOwogICAgIHN0YXRpYyB2b2lk
IHJlbmRlckxheWVyRGVzdHJveWVkSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgY29uc3QgUmVu
ZGVyTGF5ZXImKTsKIAotICAgIHN0YXRpYyBJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50
aW5nQWdlbnRzRm9yUGFnZShQYWdlJik7CisgICAgc3RhdGljIEluc3RydW1lbnRpbmdBZ2VudHMm
IGluc3RydW1lbnRpbmdBZ2VudHNGb3JQYWdlKFBhZ2UmKTsKICAgICBzdGF0aWMgSW5zdHJ1bWVu
dGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50c0ZvckZyYW1lKEZyYW1lJik7CiAgICAgc3Rh
dGljIEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHNGb3JGcmFtZShGcmFt
ZSopOwogICAgIHN0YXRpYyBJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRz
Rm9yQ29udGV4dChTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7CkBAIC02MzksOCArNjM5LDcgQEAg
aW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRVbnJlZ2lzdGVyTmFtZWRG
bG93Q29udGVudEVsZW1lbnQoRG9jdW0KIGlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6bW91c2VEaWRNb3ZlT3ZlckVsZW1lbnQoUGFnZSYgcGFnZSwgY29uc3QgSGl0VGVzdFJl
c3VsdCYgcmVzdWx0LCB1bnNpZ25lZCBtb2RpZmllckZsYWdzKQogewogICAgIEZBU1RfUkVUVVJO
X0lGX05PX0ZST05URU5EUyh2b2lkKCkpOwotICAgIGlmIChJbnN0cnVtZW50aW5nQWdlbnRzKiBp
bnN0cnVtZW50aW5nQWdlbnRzID0gaW5zdHJ1bWVudGluZ0FnZW50c0ZvclBhZ2UocGFnZSkpCi0g
ICAgICAgIG1vdXNlRGlkTW92ZU92ZXJFbGVtZW50SW1wbCgqaW5zdHJ1bWVudGluZ0FnZW50cywg
cmVzdWx0LCBtb2RpZmllckZsYWdzKTsKKyAgICBtb3VzZURpZE1vdmVPdmVyRWxlbWVudEltcGwo
aW5zdHJ1bWVudGluZ0FnZW50c0ZvclBhZ2UocGFnZSksIHJlc3VsdCwgbW9kaWZpZXJGbGFncyk7
CiB9CiAKIGlubGluZSBib29sIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aGFuZGxlVG91Y2hF
dmVudChGcmFtZSYgZnJhbWUsIE5vZGUmIG5vZGUpCkBAIC03ODksOCArNzg4LDcgQEAgaW5saW5l
IHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRFdmFsdWF0ZVNjcmlwdChjb25zdCBJ
bnNwZWN0b3JJbnN0cnVtZW4KIGlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
c2NyaXB0c0VuYWJsZWQoUGFnZSYgcGFnZSwgYm9vbCBpc0VuYWJsZWQpCiB7CiAgICAgRkFTVF9S
RVRVUk5fSUZfTk9fRlJPTlRFTkRTKHZvaWQoKSk7Ci0gICAgaWYgKEluc3RydW1lbnRpbmdBZ2Vu
dHMqIGluc3RydW1lbnRpbmdBZ2VudHMgPSBpbnN0cnVtZW50aW5nQWdlbnRzRm9yUGFnZShwYWdl
KSkKLSAgICAgICAgcmV0dXJuIHNjcmlwdHNFbmFibGVkSW1wbCgqaW5zdHJ1bWVudGluZ0FnZW50
cywgaXNFbmFibGVkKTsKKyAgICByZXR1cm4gc2NyaXB0c0VuYWJsZWRJbXBsKGluc3RydW1lbnRp
bmdBZ2VudHNGb3JQYWdlKHBhZ2UpLCBpc0VuYWJsZWQpOwogfQogCiBpbmxpbmUgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uQ29va2llIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbEZpcmVU
aW1lcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBpbnQgdGltZXJJZCkKQEAgLTgz
Myw4ICs4MzEsNyBAQCBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZExh
eW91dChjb25zdCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25DbwogaW5saW5lIHZvaWQgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRTY3JvbGwoUGFnZSYgcGFnZSkKIHsKICAgICBGQVNUX1JF
VFVSTl9JRl9OT19GUk9OVEVORFModm9pZCgpKTsKLSAgICBpZiAoSW5zdHJ1bWVudGluZ0FnZW50
cyogaW5zdHJ1bWVudGluZ0FnZW50cyA9IGluc3RydW1lbnRpbmdBZ2VudHNGb3JQYWdlKHBhZ2Up
KQotICAgICAgICBkaWRTY3JvbGxJbXBsKCppbnN0cnVtZW50aW5nQWdlbnRzKTsKKyAgICBkaWRT
Y3JvbGxJbXBsKGluc3RydW1lbnRpbmdBZ2VudHNGb3JQYWdlKHBhZ2UpKTsKIH0KIAogaW5saW5l
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OndpbGxEaXNwYXRjaFhIUkxvYWRFdmVudChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0
LCBYTUxIdHRwUmVxdWVzdCYgcmVxdWVzdCkKQEAgLTkzNywxNCArOTM0LDEyIEBAIGlubGluZSB2
b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6Y29udGludWVBZnRlclBpbmdMb2FkZXIoRnJh
bWUmIGZyYW1lLCB1bnNpCiAKIGlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
bWFya1Jlc291cmNlQXNDYWNoZWQoUGFnZSYgcGFnZSwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVy
KQogewotICAgIGlmIChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzID0g
aW5zdHJ1bWVudGluZ0FnZW50c0ZvclBhZ2UocGFnZSkpCi0gICAgICAgIG1hcmtSZXNvdXJjZUFz
Q2FjaGVkSW1wbCgqaW5zdHJ1bWVudGluZ0FnZW50cywgaWRlbnRpZmllcik7CisgICAgbWFya1Jl
c291cmNlQXNDYWNoZWRJbXBsKGluc3RydW1lbnRpbmdBZ2VudHNGb3JQYWdlKHBhZ2UpLCBpZGVu
dGlmaWVyKTsKIH0KIAogaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRM
b2FkUmVzb3VyY2VGcm9tTWVtb3J5Q2FjaGUoUGFnZSYgcGFnZSwgRG9jdW1lbnRMb2FkZXIqIGxv
YWRlciwgQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlKQogewotICAgIGlmIChJbnN0cnVtZW50aW5n
QWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzID0gaW5zdHJ1bWVudGluZ0FnZW50c0ZvclBhZ2Uo
cGFnZSkpCi0gICAgICAgIGRpZExvYWRSZXNvdXJjZUZyb21NZW1vcnlDYWNoZUltcGwoKmluc3Ry
dW1lbnRpbmdBZ2VudHMsIGxvYWRlciwgcmVzb3VyY2UpOworICAgIGRpZExvYWRSZXNvdXJjZUZy
b21NZW1vcnlDYWNoZUltcGwoaW5zdHJ1bWVudGluZ0FnZW50c0ZvclBhZ2UocGFnZSksIGxvYWRl
ciwgcmVzb3VyY2UpOwogfQogCiBpbmxpbmUgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2ll
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFJlY2VpdmVSZXNvdXJjZVJlc3BvbnNlKEZy
YW1lKiBmcmFtZSkKQEAgLTExMDMsOSArMTA5OCw3IEBAIGlubGluZSB2b2lkIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6ZnJhbWVDbGVhcmVkU2NoZWR1bGVkTmF2aWdhdGlvbihGcmFtZSYgZnJh
CiBpbmxpbmUgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6d2lsbFJ1bkphdmFTY3JpcHREaWFsb2coUGFnZSYgcGFnZSwgY29uc3QgU3RyaW5n
JiBtZXNzYWdlKQogewogICAgIEZBU1RfUkVUVVJOX0lGX05PX0ZST05URU5EUyhJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb25Db29raWUoKSk7Ci0gICAgaWYgKEluc3RydW1lbnRpbmdBZ2VudHMqIGlu
c3RydW1lbnRpbmdBZ2VudHMgPSBpbnN0cnVtZW50aW5nQWdlbnRzRm9yUGFnZShwYWdlKSkKLSAg
ICAgICAgcmV0dXJuIHdpbGxSdW5KYXZhU2NyaXB0RGlhbG9nSW1wbCgqaW5zdHJ1bWVudGluZ0Fn
ZW50cywgbWVzc2FnZSk7Ci0gICAgcmV0dXJuIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tp
ZSgpOworICAgIHJldHVybiB3aWxsUnVuSmF2YVNjcmlwdERpYWxvZ0ltcGwoaW5zdHJ1bWVudGlu
Z0FnZW50c0ZvclBhZ2UocGFnZSksIG1lc3NhZ2UpOwogfQogCiBpbmxpbmUgdm9pZCBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb246OmRpZFJ1bkphdmFTY3JpcHREaWFsb2coY29uc3QgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uQ29va2llJiBjb29raWUpCkBAIC0xMjExLDkyICsxMjA0LDc5IEBAIGlu
bGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkU2VuZFdlYlNvY2tldEZyYW1l
KERvY3VtZW50KiBkb2N1bWVudCwKIGlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6c2Vzc2lvbkNyZWF0ZWQoUGFnZSYgcGFnZSwgUmVmUHRyPFJlcGxheVNlc3Npb24+JiYgc2Vz
c2lvbikKIHsKICAgICBGQVNUX1JFVFVSTl9JRl9OT19GUk9OVEVORFModm9pZCgpKTsKLSAgICBp
ZiAoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cyA9IGluc3RydW1lbnRp
bmdBZ2VudHNGb3JQYWdlKHBhZ2UpKQotICAgICAgICBzZXNzaW9uQ3JlYXRlZEltcGwoKmluc3Ry
dW1lbnRpbmdBZ2VudHMsIFdURjo6bW92ZShzZXNzaW9uKSk7CisgICAgc2Vzc2lvbkNyZWF0ZWRJ
bXBsKGluc3RydW1lbnRpbmdBZ2VudHNGb3JQYWdlKHBhZ2UpLCBXVEY6Om1vdmUoc2Vzc2lvbikp
OwogfQogCiBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnNlc3Npb25Mb2Fk
ZWQoUGFnZSYgcGFnZSwgUmVmUHRyPFJlcGxheVNlc3Npb24+JiYgc2Vzc2lvbikKIHsKICAgICBG
QVNUX1JFVFVSTl9JRl9OT19GUk9OVEVORFModm9pZCgpKTsKLSAgICBpZiAoSW5zdHJ1bWVudGlu
Z0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cyA9IGluc3RydW1lbnRpbmdBZ2VudHNGb3JQYWdl
KHBhZ2UpKQotICAgICAgICBzZXNzaW9uTG9hZGVkSW1wbCgqaW5zdHJ1bWVudGluZ0FnZW50cywg
V1RGOjptb3ZlKHNlc3Npb24pKTsKKyAgICBzZXNzaW9uTG9hZGVkSW1wbChpbnN0cnVtZW50aW5n
QWdlbnRzRm9yUGFnZShwYWdlKSwgV1RGOjptb3ZlKHNlc3Npb24pKTsKIH0KIAogaW5saW5lIHZv
aWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzZXNzaW9uTW9kaWZpZWQoUGFnZSYgcGFnZSwg
UmVmUHRyPFJlcGxheVNlc3Npb24+JiYgc2Vzc2lvbikKIHsKICAgICBGQVNUX1JFVFVSTl9JRl9O
T19GUk9OVEVORFModm9pZCgpKTsKLSAgICBpZiAoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1
bWVudGluZ0FnZW50cyA9IGluc3RydW1lbnRpbmdBZ2VudHNGb3JQYWdlKHBhZ2UpKQotICAgICAg
ICBzZXNzaW9uTW9kaWZpZWRJbXBsKCppbnN0cnVtZW50aW5nQWdlbnRzLCBXVEY6Om1vdmUoc2Vz
c2lvbikpOworICAgIHNlc3Npb25Nb2RpZmllZEltcGwoaW5zdHJ1bWVudGluZ0FnZW50c0ZvclBh
Z2UocGFnZSksIFdURjo6bW92ZShzZXNzaW9uKSk7CiB9CiAKIGlubGluZSB2b2lkIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6c2VnbWVudENyZWF0ZWQoUGFnZSYgcGFnZSwgUmVmUHRyPFJlcGxh
eVNlc3Npb25TZWdtZW50PiYmIHNlZ21lbnQpCiB7CiAgICAgRkFTVF9SRVRVUk5fSUZfTk9fRlJP
TlRFTkRTKHZvaWQoKSk7Ci0gICAgaWYgKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRp
bmdBZ2VudHMgPSBpbnN0cnVtZW50aW5nQWdlbnRzRm9yUGFnZShwYWdlKSkKLSAgICAgICAgc2Vn
bWVudENyZWF0ZWRJbXBsKCppbnN0cnVtZW50aW5nQWdlbnRzLCBXVEY6Om1vdmUoc2VnbWVudCkp
OworICAgIHNlZ21lbnRDcmVhdGVkSW1wbChpbnN0cnVtZW50aW5nQWdlbnRzRm9yUGFnZShwYWdl
KSwgV1RGOjptb3ZlKHNlZ21lbnQpKTsKIH0KIAogaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjpzZWdtZW50Q29tcGxldGVkKFBhZ2UmIHBhZ2UsIFJlZlB0cjxSZXBsYXlTZXNz
aW9uU2VnbWVudD4mJiBzZWdtZW50KQogewogICAgIEZBU1RfUkVUVVJOX0lGX05PX0ZST05URU5E
Uyh2b2lkKCkpOwotICAgIGlmIChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdl
bnRzID0gaW5zdHJ1bWVudGluZ0FnZW50c0ZvclBhZ2UocGFnZSkpCi0gICAgICAgIHNlZ21lbnRD
b21wbGV0ZWRJbXBsKCppbnN0cnVtZW50aW5nQWdlbnRzLCBXVEY6Om1vdmUoc2VnbWVudCkpOwor
ICAgIHNlZ21lbnRDb21wbGV0ZWRJbXBsKGluc3RydW1lbnRpbmdBZ2VudHNGb3JQYWdlKHBhZ2Up
LCBXVEY6Om1vdmUoc2VnbWVudCkpOwogfQogCiBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OnNlZ21lbnRMb2FkZWQoUGFnZSYgcGFnZSwgUmVmUHRyPFJlcGxheVNlc3Npb25T
ZWdtZW50PiYmIHNlZ21lbnQpCiB7CiAgICAgRkFTVF9SRVRVUk5fSUZfTk9fRlJPTlRFTkRTKHZv
aWQoKSk7Ci0gICAgaWYgKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMg
PSBpbnN0cnVtZW50aW5nQWdlbnRzRm9yUGFnZShwYWdlKSkKLSAgICAgICAgc2VnbWVudExvYWRl
ZEltcGwoKmluc3RydW1lbnRpbmdBZ2VudHMsIFdURjo6bW92ZShzZWdtZW50KSk7CisgICAgc2Vn
bWVudExvYWRlZEltcGwoaW5zdHJ1bWVudGluZ0FnZW50c0ZvclBhZ2UocGFnZSksIFdURjo6bW92
ZShzZWdtZW50KSk7CiB9CiAKIGlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
c2VnbWVudFVubG9hZGVkKFBhZ2UmIHBhZ2UpCiB7CiAgICAgRkFTVF9SRVRVUk5fSUZfTk9fRlJP
TlRFTkRTKHZvaWQoKSk7Ci0gICAgaWYgKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRp
bmdBZ2VudHMgPSBpbnN0cnVtZW50aW5nQWdlbnRzRm9yUGFnZShwYWdlKSkKLSAgICAgICAgc2Vn
bWVudFVubG9hZGVkSW1wbCgqaW5zdHJ1bWVudGluZ0FnZW50cyk7CisgICAgc2VnbWVudFVubG9h
ZGVkSW1wbChpbnN0cnVtZW50aW5nQWdlbnRzRm9yUGFnZShwYWdlKSk7CiB9CiAKIGlubGluZSB2
b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6Y2FwdHVyZVN0YXJ0ZWQoUGFnZSYgcGFnZSkK
IHsKICAgICBGQVNUX1JFVFVSTl9JRl9OT19GUk9OVEVORFModm9pZCgpKTsKLSAgICBpZiAoSW5z
dHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cyA9IGluc3RydW1lbnRpbmdBZ2Vu
dHNGb3JQYWdlKHBhZ2UpKQotICAgICAgICBjYXB0dXJlU3RhcnRlZEltcGwoKmluc3RydW1lbnRp
bmdBZ2VudHMpOworICAgIGNhcHR1cmVTdGFydGVkSW1wbChpbnN0cnVtZW50aW5nQWdlbnRzRm9y
UGFnZShwYWdlKSk7CiB9CiAKIGlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
Y2FwdHVyZVN0b3BwZWQoUGFnZSYgcGFnZSkKIHsKICAgICBGQVNUX1JFVFVSTl9JRl9OT19GUk9O
VEVORFModm9pZCgpKTsKLSAgICBpZiAoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGlu
Z0FnZW50cyA9IGluc3RydW1lbnRpbmdBZ2VudHNGb3JQYWdlKHBhZ2UpKQotICAgICAgICBjYXB0
dXJlU3RvcHBlZEltcGwoKmluc3RydW1lbnRpbmdBZ2VudHMpOworICAgIGNhcHR1cmVTdG9wcGVk
SW1wbChpbnN0cnVtZW50aW5nQWdlbnRzRm9yUGFnZShwYWdlKSk7CiB9CiAKIGlubGluZSB2b2lk
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6cGxheWJhY2tTdGFydGVkKFBhZ2UmIHBhZ2UpCiB7
CiAgICAgRkFTVF9SRVRVUk5fSUZfTk9fRlJPTlRFTkRTKHZvaWQoKSk7Ci0gICAgaWYgKEluc3Ry
dW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMgPSBpbnN0cnVtZW50aW5nQWdlbnRz
Rm9yUGFnZShwYWdlKSkKLSAgICAgICAgcGxheWJhY2tTdGFydGVkSW1wbCgqaW5zdHJ1bWVudGlu
Z0FnZW50cyk7CisgICAgICAgIHBsYXliYWNrU3RhcnRlZEltcGwoaW5zdHJ1bWVudGluZ0FnZW50
c0ZvclBhZ2UocGFnZSkpOwogfQogCiBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OnBsYXliYWNrUGF1c2VkKFBhZ2UmIHBhZ2UsIGNvbnN0IFJlcGxheVBvc2l0aW9uJiBwb3Np
dGlvbikKIHsKICAgICBGQVNUX1JFVFVSTl9JRl9OT19GUk9OVEVORFModm9pZCgpKTsKLSAgICBp
ZiAoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cyA9IGluc3RydW1lbnRp
bmdBZ2VudHNGb3JQYWdlKHBhZ2UpKQotICAgICAgICBwbGF5YmFja1BhdXNlZEltcGwoKmluc3Ry
dW1lbnRpbmdBZ2VudHMsIHBvc2l0aW9uKTsKKyAgICAgICAgcGxheWJhY2tQYXVzZWRJbXBsKGlu
c3RydW1lbnRpbmdBZ2VudHNGb3JQYWdlKHBhZ2UpLCBwb3NpdGlvbik7CiB9CiAKIGlubGluZSB2
b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6cGxheWJhY2tGaW5pc2hlZChQYWdlJiBwYWdl
KQogewogICAgIEZBU1RfUkVUVVJOX0lGX05PX0ZST05URU5EUyh2b2lkKCkpOwotICAgIGlmIChJ
bnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzID0gaW5zdHJ1bWVudGluZ0Fn
ZW50c0ZvclBhZ2UocGFnZSkpCi0gICAgICAgIHBsYXliYWNrRmluaXNoZWRJbXBsKCppbnN0cnVt
ZW50aW5nQWdlbnRzKTsKKyAgICAgICAgcGxheWJhY2tGaW5pc2hlZEltcGwoaW5zdHJ1bWVudGlu
Z0FnZW50c0ZvclBhZ2UocGFnZSkpOwogfQogCiBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OnBsYXliYWNrSGl0UG9zaXRpb24oUGFnZSYgcGFnZSwgY29uc3QgUmVwbGF5UG9z
aXRpb24mIHBvc2l0aW9uKQogewogICAgIEZBU1RfUkVUVVJOX0lGX05PX0ZST05URU5EUyh2b2lk
KCkpOwotICAgIGlmIChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzID0g
aW5zdHJ1bWVudGluZ0FnZW50c0ZvclBhZ2UocGFnZSkpCi0gICAgICAgIHBsYXliYWNrSGl0UG9z
aXRpb25JbXBsKCppbnN0cnVtZW50aW5nQWdlbnRzLCBwb3NpdGlvbik7CisgICAgICAgIHBsYXli
YWNrSGl0UG9zaXRpb25JbXBsKGluc3RydW1lbnRpbmdBZ2VudHNGb3JQYWdlKHBhZ2UpLCBwb3Np
dGlvbik7CiB9CiAjZW5kaWYgLy8gRU5BQkxFKFdFQl9SRVBMQVkpCiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JMYXllclRyZWVBZ2VudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuY3BwCmluZGV4IGVk
OGY1Y2VhZDdhMDE2ZDQzOTUwMGI5ZmIxNzZjN2JmNWJkNzkyODEuLjdmYmRmYTQ2YmYwYjRjZjQy
ODY4NWIxOWI1NzMxMWI0OTRiYjZhMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JMYXllclRyZWVBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckxheWVyVHJlZUFnZW50LmNwcApAQCAtNDYsNyArNDYsNyBAQCB1c2lu
ZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUluc3BlY3Rv
ckxheWVyVHJlZUFnZW50OjpJbnNwZWN0b3JMYXllclRyZWVBZ2VudChJbnN0cnVtZW50aW5nQWdl
bnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzKQorSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6Okluc3Bl
Y3RvckxheWVyVHJlZUFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2Vu
dHMpCiAgICAgOiBJbnNwZWN0b3JBZ2VudEJhc2UoQVNDSUlMaXRlcmFsKCJMYXllclRyZWUiKSwg
aW5zdHJ1bWVudGluZ0FnZW50cykKIHsKIH0KQEAgLTgxLDEyICs4MSwxMiBAQCB2b2lkIEluc3Bl
Y3RvckxheWVyVHJlZUFnZW50OjpyZXNldCgpCiAKIHZvaWQgSW5zcGVjdG9yTGF5ZXJUcmVlQWdl
bnQ6OmVuYWJsZShFcnJvclN0cmluZyYpCiB7Ci0gICAgbV9pbnN0cnVtZW50aW5nQWdlbnRzLT5z
ZXRJbnNwZWN0b3JMYXllclRyZWVBZ2VudCh0aGlzKTsKKyAgICBtX2luc3RydW1lbnRpbmdBZ2Vu
dHMuc2V0SW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQodGhpcyk7CiB9CiAKIHZvaWQgSW5zcGVjdG9y
TGF5ZXJUcmVlQWdlbnQ6OmRpc2FibGUoRXJyb3JTdHJpbmcmKQogewotICAgIG1faW5zdHJ1bWVu
dGluZ0FnZW50cy0+c2V0SW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQobnVsbHB0cik7CisgICAgbV9p
bnN0cnVtZW50aW5nQWdlbnRzLnNldEluc3BlY3RvckxheWVyVHJlZUFnZW50KG51bGxwdHIpOwog
fQogCiB2b2lkIEluc3BlY3RvckxheWVyVHJlZUFnZW50OjpsYXllclRyZWVEaWRDaGFuZ2UoKQpA
QCAtMTA4LDcgKzEwOCw3IEBAIHZvaWQgSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6OmxheWVyc0Zv
ck5vZGUoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBpbnQgbm9kZUlkCiB7CiAgICAgbGF5ZXJz
ID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6TGF5ZXJU
cmVlOjpMYXllcj46OmNyZWF0ZSgpOwogCi0gICAgTm9kZSogbm9kZSA9IG1faW5zdHJ1bWVudGlu
Z0FnZW50cy0+aW5zcGVjdG9yRE9NQWdlbnQoKS0+bm9kZUZvcklkKG5vZGVJZCk7CisgICAgTm9k
ZSogbm9kZSA9IG1faW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JET01BZ2VudCgpLT5ub2Rl
Rm9ySWQobm9kZUlkKTsKICAgICBpZiAoIW5vZGUpIHsKICAgICAgICAgZXJyb3JTdHJpbmcgPSBB
U0NJSUxpdGVyYWwoIlByb3ZpZGVkIG5vZGUgaWQgZG9lc24ndCBtYXRjaCBhbnkga25vd24gbm9k
ZSIpOwogICAgICAgICByZXR1cm47CkBAIC0yMDcsNyArMjA3LDcgQEAgaW50IEluc3BlY3Rvckxh
eWVyVHJlZUFnZW50OjppZEZvck5vZGUoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBOb2RlKiBu
b2RlKQogICAgIGlmICghbm9kZSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBJbnNwZWN0b3JE
T01BZ2VudCogZG9tQWdlbnQgPSBtX2luc3RydW1lbnRpbmdBZ2VudHMtPmluc3BlY3RvckRPTUFn
ZW50KCk7CisgICAgSW5zcGVjdG9yRE9NQWdlbnQqIGRvbUFnZW50ID0gbV9pbnN0cnVtZW50aW5n
QWdlbnRzLmluc3BlY3RvckRPTUFnZW50KCk7CiAgICAgCiAgICAgaW50IG5vZGVJZCA9IGRvbUFn
ZW50LT5ib3VuZE5vZGVJZChub2RlKTsKICAgICBpZiAoIW5vZGVJZCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JMYXllclRyZWVBZ2VudC5oIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckxheWVyVHJlZUFnZW50LmgKaW5kZXggN2I4N2My
YzQ3NzgyMTM4YjNhNjNhNmYxMzE5Y2QxODI1Mzg0YzE0Ny4uZmEyNDAxNTg0N2JmMTRjZGU3YTEw
MTI2ZWM5NDhmOWFjMmY3NDc2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckxheWVyVHJlZUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckxheWVyVHJlZUFnZW50LmgKQEAgLTQ3LDcgKzQ3LDcgQEAgdHlwZWRlZiBTdHJp
bmcgRXJyb3JTdHJpbmc7CiBjbGFzcyBJbnNwZWN0b3JMYXllclRyZWVBZ2VudCBmaW5hbCA6IHB1
YmxpYyBJbnNwZWN0b3JBZ2VudEJhc2UsIHB1YmxpYyBJbnNwZWN0b3I6OkxheWVyVHJlZUJhY2tl
bmREaXNwYXRjaGVySGFuZGxlciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJs
aWM6Ci0gICAgZXhwbGljaXQgSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQoSW5zdHJ1bWVudGluZ0Fn
ZW50cyopOworICAgIGV4cGxpY2l0IEluc3BlY3RvckxheWVyVHJlZUFnZW50KEluc3RydW1lbnRp
bmdBZ2VudHMmKTsKICAgICB2aXJ0dWFsIH5JbnNwZWN0b3JMYXllclRyZWVBZ2VudCgpOwogCiAg
ICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkZy
b250ZW5kUm91dGVyKiwgSW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlciopIG92ZXJyaWRlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmNwcAppbmRl
eCA3YmRmMWMxMGZlZWJhNjNhODQ2OTljNmQ1OTFhNzViOTE2OTVkYjlhLi5lYzUyZjQ3Nzc4NDFi
MTRhNWNkMGEwNWQ0NTYxNzAzMjc3ZGU3ZWIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmNwcApAQCAtMzI2LDE3ICszMjYsMTEgQEAgSW5zcGVj
dG9yOjpQcm90b2NvbDo6UGFnZTo6UmVzb3VyY2VUeXBlIEluc3BlY3RvclBhZ2VBZ2VudDo6Y2Fj
aGVkUmVzb3VyY2VUeXBlSnMKICAgICByZXR1cm4gcmVzb3VyY2VUeXBlSnNvbihjYWNoZWRSZXNv
dXJjZVR5cGUoY2FjaGVkUmVzb3VyY2UpKTsKIH0KIAotSW5zcGVjdG9yUGFnZUFnZW50OjpJbnNw
ZWN0b3JQYWdlQWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywg
UGFnZSogcGFnZSwgSW5zcGVjdG9yQ2xpZW50KiBjbGllbnQsIEluc3BlY3Rvck92ZXJsYXkqIG92
ZXJsYXkpCitJbnNwZWN0b3JQYWdlQWdlbnQ6Okluc3BlY3RvclBhZ2VBZ2VudChJbnN0cnVtZW50
aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBQYWdlKiBwYWdlLCBJbnNwZWN0b3JDbGll
bnQqIGNsaWVudCwgSW5zcGVjdG9yT3ZlcmxheSogb3ZlcmxheSkKICAgICA6IEluc3BlY3RvckFn
ZW50QmFzZShBU0NJSUxpdGVyYWwoIlBhZ2UiKSwgaW5zdHJ1bWVudGluZ0FnZW50cykKICAgICAs
IG1fcGFnZShwYWdlKQogICAgICwgbV9jbGllbnQoY2xpZW50KQogICAgICwgbV9vdmVybGF5KG92
ZXJsYXkpCi0gICAgLCBtX2xhc3RTY3JpcHRJZGVudGlmaWVyKDApCi0gICAgLCBtX2VuYWJsZWQo
ZmFsc2UpCi0gICAgLCBtX2lzRmlyc3RMYXlvdXRBZnRlck9uTG9hZChmYWxzZSkKLSAgICAsIG1f
b3JpZ2luYWxTY3JpcHRFeGVjdXRpb25EaXNhYmxlZChmYWxzZSkKLSAgICAsIG1faWdub3JlU2Ny
aXB0c0VuYWJsZWROb3RpZmljYXRpb24oZmFsc2UpCi0gICAgLCBtX3Nob3dQYWludFJlY3RzKGZh
bHNlKQogewogfQogCkBAIC0zNjAsMTUgKzM1NCwxNSBAQCB2b2lkIEluc3BlY3RvclBhZ2VBZ2Vu
dDo6d2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpEaXNjb25uZWN0UmVh
cwogCiBkb3VibGUgSW5zcGVjdG9yUGFnZUFnZW50Ojp0aW1lc3RhbXAoKQogewotICAgIHJldHVy
biBtX2luc3RydW1lbnRpbmdBZ2VudHMtPmluc3BlY3RvckVudmlyb25tZW50KCkuZXhlY3V0aW9u
U3RvcHdhdGNoKCktPmVsYXBzZWRUaW1lKCk7CisgICAgcmV0dXJuIG1faW5zdHJ1bWVudGluZ0Fn
ZW50cy5pbnNwZWN0b3JFbnZpcm9ubWVudCgpLmV4ZWN1dGlvblN0b3B3YXRjaCgpLT5lbGFwc2Vk
VGltZSgpOwogfQogCiB2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6ZW5hYmxlKEVycm9yU3RyaW5n
JikKIHsKICAgICBtX2VuYWJsZWQgPSB0cnVlOwotICAgIG1faW5zdHJ1bWVudGluZ0FnZW50cy0+
c2V0SW5zcGVjdG9yUGFnZUFnZW50KHRoaXMpOworICAgIG1faW5zdHJ1bWVudGluZ0FnZW50cy5z
ZXRJbnNwZWN0b3JQYWdlQWdlbnQodGhpcyk7CiAKLSAgICBhdXRvIHN0b3B3YXRjaCA9IG1faW5z
dHJ1bWVudGluZ0FnZW50cy0+aW5zcGVjdG9yRW52aXJvbm1lbnQoKS5leGVjdXRpb25TdG9wd2F0
Y2goKTsKKyAgICBhdXRvIHN0b3B3YXRjaCA9IG1faW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0
b3JFbnZpcm9ubWVudCgpLmV4ZWN1dGlvblN0b3B3YXRjaCgpOwogICAgIHN0b3B3YXRjaC0+cmVz
ZXQoKTsKICAgICBzdG9wd2F0Y2gtPnN0YXJ0KCk7CiAKQEAgLTM4MCw3ICszNzQsNyBAQCB2b2lk
IEluc3BlY3RvclBhZ2VBZ2VudDo6ZGlzYWJsZShFcnJvclN0cmluZyYpCiB7CiAgICAgbV9lbmFi
bGVkID0gZmFsc2U7CiAgICAgbV9zY3JpcHRzVG9FdmFsdWF0ZU9uTG9hZCA9IG51bGxwdHI7Ci0g
ICAgbV9pbnN0cnVtZW50aW5nQWdlbnRzLT5zZXRJbnNwZWN0b3JQYWdlQWdlbnQobnVsbHB0cik7
CisgICAgbV9pbnN0cnVtZW50aW5nQWdlbnRzLnNldEluc3BlY3RvclBhZ2VBZ2VudChudWxscHRy
KTsKIAogICAgIEVycm9yU3RyaW5nIHVudXNlZDsKICAgICBzZXRTY3JpcHRFeGVjdXRpb25EaXNh
YmxlZCh1bnVzZWQsIG1fb3JpZ2luYWxTY3JpcHRFeGVjdXRpb25EaXNhYmxlZCk7CkBAIC04MjUs
NyArODE5LDcgQEAgdm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OmxvYWRlckRldGFjaGVkRnJvbUZy
YW1lKERvY3VtZW50TG9hZGVyJiBsb2FkZXIpCiB2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6ZnJh
bWVTdGFydGVkTG9hZGluZyhGcmFtZSYgZnJhbWUpCiB7CiAgICAgaWYgKGZyYW1lLmlzTWFpbkZy
YW1lKCkpIHsKLSAgICAgICAgYXV0byBzdG9wd2F0Y2ggPSBtX2luc3RydW1lbnRpbmdBZ2VudHMt
Pmluc3BlY3RvckVudmlyb25tZW50KCkuZXhlY3V0aW9uU3RvcHdhdGNoKCk7CisgICAgICAgIGF1
dG8gc3RvcHdhdGNoID0gbV9pbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3RvckVudmlyb25tZW50
KCkuZXhlY3V0aW9uU3RvcHdhdGNoKCk7CiAgICAgICAgIHN0b3B3YXRjaC0+cmVzZXQoKTsKICAg
ICAgICAgc3RvcHdhdGNoLT5zdGFydCgpOwogICAgIH0KQEAgLTEwMjMsNyArMTAxNyw3IEBAIHZv
aWQgSW5zcGVjdG9yUGFnZUFnZW50OjpzbmFwc2hvdE5vZGUoRXJyb3JTdHJpbmcmIGVycm9yU3Ry
aW5nLCBpbnQgbm9kZUlkLCBTdHJpCiAgICAgRnJhbWUqIGZyYW1lID0gbWFpbkZyYW1lKCk7CiAg
ICAgQVNTRVJUKGZyYW1lKTsKIAotICAgIEluc3BlY3RvckRPTUFnZW50KiBkb21BZ2VudCA9IG1f
aW5zdHJ1bWVudGluZ0FnZW50cy0+aW5zcGVjdG9yRE9NQWdlbnQoKTsKKyAgICBJbnNwZWN0b3JE
T01BZ2VudCogZG9tQWdlbnQgPSBtX2luc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yRE9NQWdl
bnQoKTsKICAgICBBU1NFUlQoZG9tQWdlbnQpOwogICAgIE5vZGUqIG5vZGUgPSBkb21BZ2VudC0+
YXNzZXJ0Tm9kZShlcnJvclN0cmluZywgbm9kZUlkKTsKICAgICBpZiAoIW5vZGUpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmgKaW5kZXggZDZhNWY3NWE0
MzY4MDJhMmZlZjA5ZDNjOTNhOWI2MDVlNDEyYTlhMC4uZTlhZDg2NmJhZWMwNDEyNTI2YTBhZGM2
YWI1MGIzNmI1YWZmNWRhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvclBhZ2VBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JQYWdlQWdlbnQuaApAQCAtNjksNyArNjksNyBAQCBjbGFzcyBJbnNwZWN0b3JQYWdlQWdlbnQg
ZmluYWwgOiBwdWJsaWMgSW5zcGVjdG9yQWdlbnRCYXNlLCBwdWJsaWMgSW5zcGVjdG9yOjpQYQog
ICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEluc3BlY3RvclBhZ2VBZ2VudCk7CiAgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgSW5zcGVjdG9yUGFnZUFnZW50KEluc3Ry
dW1lbnRpbmdBZ2VudHMqLCBQYWdlKiwgSW5zcGVjdG9yQ2xpZW50KiwgSW5zcGVjdG9yT3Zlcmxh
eSopOworICAgIEluc3BlY3RvclBhZ2VBZ2VudChJbnN0cnVtZW50aW5nQWdlbnRzJiwgUGFnZSos
IEluc3BlY3RvckNsaWVudCosIEluc3BlY3Rvck92ZXJsYXkqKTsKIAogICAgIGVudW0gUmVzb3Vy
Y2VUeXBlIHsKICAgICAgICAgRG9jdW1lbnRSZXNvdXJjZSwKQEAgLTE2NywyMiArMTY3LDI1IEBA
IHByaXZhdGU6CiAKICAgICBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6UGFnZTo6RnJhbWU+IGJ1
aWxkT2JqZWN0Rm9yRnJhbWUoRnJhbWUqKTsKICAgICBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6
UGFnZTo6RnJhbWVSZXNvdXJjZVRyZWU+IGJ1aWxkT2JqZWN0Rm9yRnJhbWVUcmVlKEZyYW1lKik7
Ci0gICAgUGFnZSogbV9wYWdlOwotICAgIEluc3BlY3RvckNsaWVudCogbV9jbGllbnQ7CisKICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yOjpQYWdlRnJvbnRlbmREaXNwYXRjaGVyPiBtX2Zy
b250ZW5kRGlzcGF0Y2hlcjsKICAgICBSZWZQdHI8SW5zcGVjdG9yOjpQYWdlQmFja2VuZERpc3Bh
dGNoZXI+IG1fYmFja2VuZERpc3BhdGNoZXI7Ci0gICAgSW5zcGVjdG9yT3ZlcmxheSogbV9vdmVy
bGF5OwotICAgIGxvbmcgbV9sYXN0U2NyaXB0SWRlbnRpZmllcjsKKworICAgIFBhZ2UqIG1fcGFn
ZSB7IG51bGxwdHIgfTsKKyAgICBJbnNwZWN0b3JDbGllbnQqIG1fY2xpZW50IHsgbnVsbHB0ciB9
OworICAgIEluc3BlY3Rvck92ZXJsYXkqIG1fb3ZlcmxheSB7IG51bGxwdHIgfTsKKworICAgIGxv
bmcgbV9sYXN0U2NyaXB0SWRlbnRpZmllciB7IDAgfTsKICAgICBTdHJpbmcgbV9wZW5kaW5nU2Ny
aXB0VG9FdmFsdWF0ZU9uTG9hZE9uY2U7CiAgICAgU3RyaW5nIG1fc2NyaXB0VG9FdmFsdWF0ZU9u
TG9hZE9uY2U7CiAgICAgSGFzaE1hcDxGcmFtZSosIFN0cmluZz4gbV9mcmFtZVRvSWRlbnRpZmll
cjsKICAgICBIYXNoTWFwPFN0cmluZywgRnJhbWUqPiBtX2lkZW50aWZpZXJUb0ZyYW1lOwogICAg
IEhhc2hNYXA8RG9jdW1lbnRMb2FkZXIqLCBTdHJpbmc+IG1fbG9hZGVyVG9JZGVudGlmaWVyOwot
ICAgIGJvb2wgbV9lbmFibGVkOwotICAgIGJvb2wgbV9pc0ZpcnN0TGF5b3V0QWZ0ZXJPbkxvYWQ7
Ci0gICAgYm9vbCBtX29yaWdpbmFsU2NyaXB0RXhlY3V0aW9uRGlzYWJsZWQ7Ci0gICAgYm9vbCBt
X2lnbm9yZVNjcmlwdHNFbmFibGVkTm90aWZpY2F0aW9uOwotICAgIGJvb2wgbV9zaG93UGFpbnRS
ZWN0czsKKyAgICBib29sIG1fZW5hYmxlZCB7IGZhbHNlIH07CisgICAgYm9vbCBtX2lzRmlyc3RM
YXlvdXRBZnRlck9uTG9hZCB7IGZhbHNlIH07CisgICAgYm9vbCBtX29yaWdpbmFsU2NyaXB0RXhl
Y3V0aW9uRGlzYWJsZWQgeyBmYWxzZSB9OworICAgIGJvb2wgbV9pZ25vcmVTY3JpcHRzRW5hYmxl
ZE5vdGlmaWNhdGlvbiB7IGZhbHNlIH07CisgICAgYm9vbCBtX3Nob3dQYWludFJlY3RzIHsgZmFs
c2UgfTsKICAgICBTdHJpbmcgbV9lbXVsYXRlZE1lZGlhOwogICAgIFJlZlB0cjxJbnNwZWN0b3I6
Okluc3BlY3Rvck9iamVjdD4gbV9zY3JpcHRzVG9FdmFsdWF0ZU9uTG9hZDsKIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVwbGF5QWdlbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlcGxheUFnZW50LmNwcAppbmRleCBk
NTQzZTI2ODJjZGZmYjljNWE5M2EzMGJjZTFlNTFkNmQzYTQ2YmM3Li4zNDkwZTc1YzIyMGVjNzdi
ZDE2Y2RlNmE5ZjJlMTk4N2Y1NjU4ODZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yUmVwbGF5QWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JSZXBsYXlBZ2VudC5jcHAKQEAgLTE1Niw3ICsxNTYsNyBAQCBzdGF0aWMg
UmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJlcGxheTo6U2Vzc2lvblNlZ21lbnQ+IGJ1aWxkSW5z
cGVjdG9yT2JqZWN0Rm9yUwogICAgICAgICAucmVsZWFzZSgpOwogfQogCi1JbnNwZWN0b3JSZXBs
YXlBZ2VudDo6SW5zcGVjdG9yUmVwbGF5QWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1
bWVudGluZ0FnZW50cywgSW5zcGVjdG9yUGFnZUFnZW50KiBwYWdlQWdlbnQpCitJbnNwZWN0b3JS
ZXBsYXlBZ2VudDo6SW5zcGVjdG9yUmVwbGF5QWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5z
dHJ1bWVudGluZ0FnZW50cywgSW5zcGVjdG9yUGFnZUFnZW50KiBwYWdlQWdlbnQpCiAgICAgOiBJ
bnNwZWN0b3JBZ2VudEJhc2UoQVNDSUlMaXRlcmFsKCJSZXBsYXkiKSwgaW5zdHJ1bWVudGluZ0Fn
ZW50cykKICAgICAsIG1fcGFnZSgqcGFnZUFnZW50LT5wYWdlKCkpCiB7CkBAIC0xNzgsNyArMTc4
LDcgQEAgdm9pZCBJbnNwZWN0b3JSZXBsYXlBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNr
ZW5kKEluc3BlY3Rvcjo6RnJvbnRlbmRSb3V0ZXIKICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlciA9
IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yOjpSZXBsYXlGcm9udGVuZERpc3BhdGNoZXI+KGZy
b250ZW5kUm91dGVyKTsKICAgICBtX2JhY2tlbmREaXNwYXRjaGVyID0gSW5zcGVjdG9yOjpSZXBs
YXlCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKTsKIAot
ICAgIG1faW5zdHJ1bWVudGluZ0FnZW50cy0+c2V0SW5zcGVjdG9yUmVwbGF5QWdlbnQodGhpcyk7
CisgICAgbV9pbnN0cnVtZW50aW5nQWdlbnRzLnNldEluc3BlY3RvclJlcGxheUFnZW50KHRoaXMp
OwogICAgIEFTU0VSVChzZXNzaW9uU3RhdGUoKSA9PSBXZWJDb3JlOjpTZXNzaW9uU3RhdGU6Oklu
YWN0aXZlKTsKIAogICAgIC8vIEtlZXAgdHJhY2sgb2YgdGhlIChkZWZhdWx0KSBzZXNzaW9uIGN1
cnJlbnRseSBsb2FkZWQgYnkgUmVwbGF5Q29udHJvbGxlciwKQEAgLTE5NSw3ICsxOTUsNyBAQCB2
b2lkIEluc3BlY3RvclJlcGxheUFnZW50Ojp3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChJ
bnNwZWN0b3I6OkRpc2Nvbm5lY3RSZQogICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyID0gbnVsbHB0
cjsKICAgICBtX2JhY2tlbmREaXNwYXRjaGVyID0gbnVsbHB0cjsKIAotICAgIG1faW5zdHJ1bWVu
dGluZ0FnZW50cy0+c2V0SW5zcGVjdG9yUmVwbGF5QWdlbnQobnVsbHB0cik7CisgICAgbV9pbnN0
cnVtZW50aW5nQWdlbnRzLnNldEluc3BlY3RvclJlcGxheUFnZW50KG51bGxwdHIpOwogCiAgICAg
Ly8gRHJvcCByZWZlcmVuY2VzIHRvIGFsbCBzZXNzaW9ucyBhbmQgc2VnbWVudHMuCiAgICAgbV9z
ZXNzaW9uc01hcC5jbGVhcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvclJlcGxheUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yUmVwbGF5QWdlbnQuaAppbmRleCAzODJiNzFlOTRmZDY1YWQ5NzNjNDg3MTMxN2YxOTQ5YTRl
MWY5NzE4Li5mN2JlYTZmZGE1NWI2MGQ4OGUwM2U5Mzc1MDFmYmQ2MzJhYzhlZjhiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVwbGF5QWdlbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVwbGF5QWdlbnQuaApAQCAtNjIs
NyArNjIsNyBAQCBjbGFzcyBJbnNwZWN0b3JSZXBsYXlBZ2VudCBmaW5hbAogICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEluc3BlY3RvclJlcGxh
eUFnZW50KTsKIHB1YmxpYzoKLSAgICBJbnNwZWN0b3JSZXBsYXlBZ2VudChJbnN0cnVtZW50aW5n
QWdlbnRzKiwgSW5zcGVjdG9yUGFnZUFnZW50Kik7CisgICAgSW5zcGVjdG9yUmVwbGF5QWdlbnQo
SW5zdHJ1bWVudGluZ0FnZW50cyYsIEluc3BlY3RvclBhZ2VBZ2VudCopOwogICAgIHZpcnR1YWwg
fkluc3BlY3RvclJlcGxheUFnZW50KCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJv
bnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6RnJvbnRlbmRSb3V0ZXIqLCBJbnNwZWN0b3I6OkJh
Y2tlbmREaXNwYXRjaGVyKikgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5jcHAKaW5kZXggODFhZjNiOTExZDhjMzFmY2Y4
ZmZlNTg1ZWY3NTQ1MGUzMTJjODczNy4uMDAxYzMzYTgxNDdkM2ZkYTkwODE1ZTg5NmU5MjI0ZmIw
ZmEwNDE0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJl
c291cmNlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JS
ZXNvdXJjZUFnZW50LmNwcApAQCAtMTYyLDE1ICsxNjIsMTEgQEAgcHJpdmF0ZToKIAogfSAvLyBu
YW1lc3BhY2UKIAotSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6SW5zcGVjdG9yUmVzb3VyY2VBZ2Vu
dChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCBJbnNwZWN0b3JQYWdl
QWdlbnQqIHBhZ2VBZ2VudCwgSW5zcGVjdG9yQ2xpZW50KiBjbGllbnQpCitJbnNwZWN0b3JSZXNv
dXJjZUFnZW50OjpJbnNwZWN0b3JSZXNvdXJjZUFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMmIGlu
c3RydW1lbnRpbmdBZ2VudHMsIEluc3BlY3RvclBhZ2VBZ2VudCogcGFnZUFnZW50LCBJbnNwZWN0
b3JDbGllbnQqIGNsaWVudCkKICAgICA6IEluc3BlY3RvckFnZW50QmFzZShBU0NJSUxpdGVyYWwo
Ik5ldHdvcmsiKSwgaW5zdHJ1bWVudGluZ0FnZW50cykKICAgICAsIG1fcGFnZUFnZW50KHBhZ2VB
Z2VudCkKICAgICAsIG1fY2xpZW50KGNsaWVudCkKICAgICAsIG1fcmVzb3VyY2VzRGF0YShzdGQ6
Om1ha2VfdW5pcXVlPE5ldHdvcmtSZXNvdXJjZXNEYXRhPigpKQotICAgICwgbV9lbmFibGVkKGZh
bHNlKQotICAgICwgbV9jYWNoZURpc2FibGVkKGZhbHNlKQotICAgICwgbV9sb2FkaW5nWEhSU3lu
Y2hyb25vdXNseShmYWxzZSkKLSAgICAsIG1faXNSZWNhbGN1bGF0aW5nU3R5bGUoZmFsc2UpCiB7
CiB9CiAKQEAgLTI3MCwxMiArMjY2LDEyIEBAIEluc3BlY3RvclJlc291cmNlQWdlbnQ6On5JbnNw
ZWN0b3JSZXNvdXJjZUFnZW50KCkKICAgICAgICAgRXJyb3JTdHJpbmcgdW51c2VkOwogICAgICAg
ICBkaXNhYmxlKHVudXNlZCk7CiAgICAgfQotICAgIEFTU0VSVCghbV9pbnN0cnVtZW50aW5nQWdl
bnRzLT5pbnNwZWN0b3JSZXNvdXJjZUFnZW50KCkpOworICAgIEFTU0VSVCghbV9pbnN0cnVtZW50
aW5nQWdlbnRzLmluc3BlY3RvclJlc291cmNlQWdlbnQoKSk7CiB9CiAKIGRvdWJsZSBJbnNwZWN0
b3JSZXNvdXJjZUFnZW50Ojp0aW1lc3RhbXAoKQogewotICAgIHJldHVybiBtX2luc3RydW1lbnRp
bmdBZ2VudHMtPmluc3BlY3RvckVudmlyb25tZW50KCkuZXhlY3V0aW9uU3RvcHdhdGNoKCktPmVs
YXBzZWRUaW1lKCk7CisgICAgcmV0dXJuIG1faW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JF
bnZpcm9ubWVudCgpLmV4ZWN1dGlvblN0b3B3YXRjaCgpLT5lbGFwc2VkVGltZSgpOwogfQogCiB2
b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6OndpbGxTZW5kUmVxdWVzdCh1bnNpZ25lZCBsb25n
IGlkZW50aWZpZXIsIERvY3VtZW50TG9hZGVyJiBsb2FkZXIsIFJlc291cmNlUmVxdWVzdCYgcmVx
dWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSkKQEAgLTYwOSwx
MyArNjA1LDEzIEBAIHZvaWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6ZW5hYmxlKCkKICAgICBp
ZiAoIW1fZnJvbnRlbmREaXNwYXRjaGVyKQogICAgICAgICByZXR1cm47CiAgICAgbV9lbmFibGVk
ID0gdHJ1ZTsKLSAgICBtX2luc3RydW1lbnRpbmdBZ2VudHMtPnNldEluc3BlY3RvclJlc291cmNl
QWdlbnQodGhpcyk7CisgICAgbV9pbnN0cnVtZW50aW5nQWdlbnRzLnNldEluc3BlY3RvclJlc291
cmNlQWdlbnQodGhpcyk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6ZGlzYWJs
ZShFcnJvclN0cmluZyYpCiB7CiAgICAgbV9lbmFibGVkID0gZmFsc2U7Ci0gICAgbV9pbnN0cnVt
ZW50aW5nQWdlbnRzLT5zZXRJbnNwZWN0b3JSZXNvdXJjZUFnZW50KG51bGxwdHIpOworICAgIG1f
aW5zdHJ1bWVudGluZ0FnZW50cy5zZXRJbnNwZWN0b3JSZXNvdXJjZUFnZW50KG51bGxwdHIpOwog
ICAgIG1fcmVzb3VyY2VzRGF0YS0+Y2xlYXIoKTsKICAgICBtX2V4dHJhUmVxdWVzdEhlYWRlcnMu
Y2xlYXIoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JSZXNvdXJjZUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVz
b3VyY2VBZ2VudC5oCmluZGV4IGQ5NzM4N2U3NjZlMTU3NzRjYzgwMzZlZmI1YjMzOTQ4Y2UyMjc5
MDAuLmYwODI0ZTI4YTJmY2YzMWI4MjM1NzE0N2ZhNzQwMTYzNGU4ZjQ0YzkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuaApAQCAtNzYs
NyArNzYsNyBAQCB0eXBlZGVmIFN0cmluZyBFcnJvclN0cmluZzsKIGNsYXNzIEluc3BlY3RvclJl
c291cmNlQWdlbnQgZmluYWwgOiBwdWJsaWMgSW5zcGVjdG9yQWdlbnRCYXNlLCBwdWJsaWMgSW5z
cGVjdG9yOjpOZXR3b3JrQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyIHsKICAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBJbnNwZWN0b3JSZXNvdXJjZUFnZW50KEluc3Ry
dW1lbnRpbmdBZ2VudHMqLCBJbnNwZWN0b3JQYWdlQWdlbnQqLCBJbnNwZWN0b3JDbGllbnQqKTsK
KyAgICBJbnNwZWN0b3JSZXNvdXJjZUFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMmLCBJbnNwZWN0
b3JQYWdlQWdlbnQqLCBJbnNwZWN0b3JDbGllbnQqKTsKICAgICB2aXJ0dWFsIH5JbnNwZWN0b3JS
ZXNvdXJjZUFnZW50KCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRC
YWNrZW5kKEluc3BlY3Rvcjo6RnJvbnRlbmRSb3V0ZXIqLCBJbnNwZWN0b3I6OkJhY2tlbmREaXNw
YXRjaGVyKikgb3ZlcnJpZGU7CkBAIC0xMzIsMjEgKzEzMiwyMSBAQCBwcml2YXRlOgogCiAgICAg
ZG91YmxlIHRpbWVzdGFtcCgpOwogCi0gICAgSW5zcGVjdG9yUGFnZUFnZW50KiBtX3BhZ2VBZ2Vu
dDsKLSAgICBJbnNwZWN0b3JDbGllbnQqIG1fY2xpZW50OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxJ
bnNwZWN0b3I6Ok5ldHdvcmtGcm9udGVuZERpc3BhdGNoZXI+IG1fZnJvbnRlbmREaXNwYXRjaGVy
OwogICAgIFJlZlB0cjxJbnNwZWN0b3I6Ok5ldHdvcmtCYWNrZW5kRGlzcGF0Y2hlcj4gbV9iYWNr
ZW5kRGlzcGF0Y2hlcjsKKyAgICBJbnNwZWN0b3JQYWdlQWdlbnQqIG1fcGFnZUFnZW50IHsgbnVs
bHB0ciB9OworCisgICAgSW5zcGVjdG9yQ2xpZW50KiBtX2NsaWVudCB7IG51bGxwdHIgfTsKKwog
ICAgIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrUmVzb3VyY2VzRGF0YT4gbV9yZXNvdXJjZXNEYXRh
OwotICAgIGJvb2wgbV9lbmFibGVkOwotICAgIGJvb2wgbV9jYWNoZURpc2FibGVkOwotICAgIGJv
b2wgbV9sb2FkaW5nWEhSU3luY2hyb25vdXNseTsKKyAgICBib29sIG1fZW5hYmxlZCB7IGZhbHNl
IH07CisgICAgYm9vbCBtX2NhY2hlRGlzYWJsZWQgeyBmYWxzZSB9OworICAgIGJvb2wgbV9sb2Fk
aW5nWEhSU3luY2hyb25vdXNseSB7IGZhbHNlIH07CiAgICAgSGFzaE1hcDxTdHJpbmcsIFN0cmlu
Zz4gbV9leHRyYVJlcXVlc3RIZWFkZXJzOwotCiAgICAgSGFzaFNldDx1bnNpZ25lZCBsb25nPiBt
X2hpZGRlblJlcXVlc3RJZGVudGlmaWVyczsKLQogICAgIC8vIEZJWE1FOiBJbnNwZWN0b3JSZXNv
dXJjZUFnZW50IHNob3VsZCBub3cgYmUgYXdhcmUgb2Ygc3R5bGUgcmVjYWxjdWxhdGlvbi4KICAg
ICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6TmV0d29yazo6SW5pdGlhdG9yPiBtX3N0eWxl
UmVjYWxjdWxhdGlvbkluaXRpYXRvcjsKLSAgICBib29sIG1faXNSZWNhbGN1bGF0aW5nU3R5bGU7
CisgICAgYm9vbCBtX2lzUmVjYWxjdWxhdGluZ1N0eWxlIHsgZmFsc2UgfTsKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JUaW1lbGluZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JUaW1lbGluZUFnZW50LmNwcAppbmRleCAyZWFiZTI3YzNhZmY1NTU3MmFjYTdmZGMxNWY1
NDRhNTBlMWI3NDA2Li5iMDljMTE1OWI2NDEwODkyNzEyYWVjM2RlNmVjNjM3MWIxOTE5YTFkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2Vu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdl
bnQuY3BwCkBAIC05NSw3ICs5NSw3IEBAIHZvaWQgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6ZGlk
Q3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6RnJvbnRlbmRSb3V0CiAgICAgbV9m
cm9udGVuZERpc3BhdGNoZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rvcjo6VGltZWxpbmVG
cm9udGVuZERpc3BhdGNoZXI+KGZyb250ZW5kUm91dGVyKTsKICAgICBtX2JhY2tlbmREaXNwYXRj
aGVyID0gSW5zcGVjdG9yOjpUaW1lbGluZUJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoYmFja2Vu
ZERpc3BhdGNoZXIsIHRoaXMpOwogCi0gICAgbV9pbnN0cnVtZW50aW5nQWdlbnRzLT5zZXRQZXJz
aXN0ZW50SW5zcGVjdG9yVGltZWxpbmVBZ2VudCh0aGlzKTsKKyAgICBtX2luc3RydW1lbnRpbmdB
Z2VudHMuc2V0UGVyc2lzdGVudEluc3BlY3RvclRpbWVsaW5lQWdlbnQodGhpcyk7CiAKICAgICBp
ZiAobV9zY3JpcHREZWJ1Z1NlcnZlcikKICAgICAgICAgbV9zY3JpcHREZWJ1Z1NlcnZlci0+cmVj
b21waWxlQWxsSlNGdW5jdGlvbnMoKTsKQEAgLTEwNiw3ICsxMDYsNyBAQCB2b2lkIEluc3BlY3Rv
clRpbWVsaW5lQWdlbnQ6OndpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6
RGlzY29ubmVjdAogICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyID0gbnVsbHB0cjsKICAgICBtX2Jh
Y2tlbmREaXNwYXRjaGVyID0gbnVsbHB0cjsKIAotICAgIG1faW5zdHJ1bWVudGluZ0FnZW50cy0+
c2V0UGVyc2lzdGVudEluc3BlY3RvclRpbWVsaW5lQWdlbnQobnVsbHB0cik7CisgICAgbV9pbnN0
cnVtZW50aW5nQWdlbnRzLnNldFBlcnNpc3RlbnRJbnNwZWN0b3JUaW1lbGluZUFnZW50KG51bGxw
dHIpOwogCiAgICAgaWYgKHJlYXNvbiAhPSBJbnNwZWN0b3I6OkRpc2Nvbm5lY3RSZWFzb246Oklu
c3BlY3RlZFRhcmdldERlc3Ryb3llZCkgewogICAgICAgICBpZiAobV9zY3JpcHREZWJ1Z1NlcnZl
cikKQEAgLTE0MSw3ICsxNDEsNyBAQCB2b2lkIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OmludGVy
bmFsU3RhcnQoY29uc3QgaW50KiBtYXhDYWxsU3RhY2tEZXB0aCkKICAgICBlbHNlCiAgICAgICAg
IG1fbWF4Q2FsbFN0YWNrRGVwdGggPSA1OwogCi0gICAgbV9pbnN0cnVtZW50aW5nQWdlbnRzLT5z
ZXRJbnNwZWN0b3JUaW1lbGluZUFnZW50KHRoaXMpOworICAgIG1faW5zdHJ1bWVudGluZ0FnZW50
cy5zZXRJbnNwZWN0b3JUaW1lbGluZUFnZW50KHRoaXMpOwogCiAgICAgaWYgKG1fc2NyaXB0RGVi
dWdTZXJ2ZXIpCiAgICAgICAgIG1fc2NyaXB0RGVidWdTZXJ2ZXItPmFkZExpc3RlbmVyKHRoaXMp
OwpAQCAtMTk0LDcgKzE5NCw3IEBAIHZvaWQgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6aW50ZXJu
YWxTdG9wKCkKICAgICBpZiAoIW1fZW5hYmxlZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9p
bnN0cnVtZW50aW5nQWdlbnRzLT5zZXRJbnNwZWN0b3JUaW1lbGluZUFnZW50KG51bGxwdHIpOwor
ICAgIG1faW5zdHJ1bWVudGluZ0FnZW50cy5zZXRJbnNwZWN0b3JUaW1lbGluZUFnZW50KG51bGxw
dHIpOwogCiAgICAgaWYgKG1fc2NyaXB0RGVidWdTZXJ2ZXIpCiAgICAgICAgIG1fc2NyaXB0RGVi
dWdTZXJ2ZXItPnJlbW92ZUxpc3RlbmVyKHRoaXMsIHRydWUpOwpAQCAtMjIwLDcgKzIyMCw3IEBA
IHZvaWQgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6aW50ZXJuYWxTdG9wKCkKIAogZG91YmxlIElu
c3BlY3RvclRpbWVsaW5lQWdlbnQ6OnRpbWVzdGFtcCgpCiB7Ci0gICAgcmV0dXJuIG1faW5zdHJ1
bWVudGluZ0FnZW50cy0+aW5zcGVjdG9yRW52aXJvbm1lbnQoKS5leGVjdXRpb25TdG9wd2F0Y2go
KS0+ZWxhcHNlZFRpbWUoKTsKKyAgICByZXR1cm4gbV9pbnN0cnVtZW50aW5nQWdlbnRzLmluc3Bl
Y3RvckVudmlyb25tZW50KCkuZXhlY3V0aW9uU3RvcHdhdGNoKCktPmVsYXBzZWRUaW1lKCk7CiB9
CiAKIHZvaWQgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6c2V0UGFnZVNjcmlwdERlYnVnU2VydmVy
KFBhZ2VTY3JpcHREZWJ1Z1NlcnZlciogc2NyaXB0RGVidWdTZXJ2ZXIpCkBAIC0yNjcsNyArMjY3
LDcgQEAgdm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpzdGFydEZyb21Db25zb2xlKEpTQzo6
RXhlY1N0YXRlKiBleGVjLCBjb25zdCBTdHJpbmcKICAgICBpZiAoIW1fZW5hYmxlZCAmJiBtX3Bl
bmRpbmdDb25zb2xlUHJvZmlsZVJlY29yZHMuaXNFbXB0eSgpKQogICAgICAgICBpbnRlcm5hbFN0
YXJ0KCk7CiAKLSAgICBzdGFydFByb2ZpbGluZyhleGVjLCB0aXRsZSwgbV9pbnN0cnVtZW50aW5n
QWdlbnRzLT5pbnNwZWN0b3JFbnZpcm9ubWVudCgpLmV4ZWN1dGlvblN0b3B3YXRjaCgpKTsKKyAg
ICBzdGFydFByb2ZpbGluZyhleGVjLCB0aXRsZSwgbV9pbnN0cnVtZW50aW5nQWdlbnRzLmluc3Bl
Y3RvckVudmlyb25tZW50KCkuZXhlY3V0aW9uU3RvcHdhdGNoKCkpOwogCiAgICAgbV9wZW5kaW5n
Q29uc29sZVByb2ZpbGVSZWNvcmRzLmFwcGVuZChjcmVhdGVSZWNvcmRFbnRyeShUaW1lbGluZVJl
Y29yZEZhY3Rvcnk6OmNyZWF0ZUNvbnNvbGVQcm9maWxlRGF0YSh0aXRsZSksIFRpbWVsaW5lUmVj
b3JkVHlwZTo6Q29uc29sZVByb2ZpbGUsIHRydWUsIGZyYW1lRnJvbUV4ZWNTdGF0ZShleGVjKSkp
OwogfQpAQCAtMzA2LDcgKzMwNiw3IEBAIHZvaWQgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6d2ls
bENhbGxGdW5jdGlvbihjb25zdCBTdHJpbmcmIHNjcmlwdE5hbWUsIGludCBzY3JpCiAgICAgcHVz
aEN1cnJlbnRSZWNvcmQoVGltZWxpbmVSZWNvcmRGYWN0b3J5OjpjcmVhdGVGdW5jdGlvbkNhbGxE
YXRhKHNjcmlwdE5hbWUsIHNjcmlwdExpbmUpLCBUaW1lbGluZVJlY29yZFR5cGU6OkZ1bmN0aW9u
Q2FsbCwgdHJ1ZSwgZnJhbWUpOwogCiAgICAgaWYgKGZyYW1lICYmICFtX2NhbGxTdGFja0RlcHRo
KQotICAgICAgICBzdGFydFByb2ZpbGluZyhmcmFtZSwgQVNDSUlMaXRlcmFsKCJUaW1lbGluZSBG
dW5jdGlvbkNhbGwiKSwgbV9pbnN0cnVtZW50aW5nQWdlbnRzLT5pbnNwZWN0b3JFbnZpcm9ubWVu
dCgpLmV4ZWN1dGlvblN0b3B3YXRjaCgpKTsKKyAgICAgICAgc3RhcnRQcm9maWxpbmcoZnJhbWUs
IEFTQ0lJTGl0ZXJhbCgiVGltZWxpbmUgRnVuY3Rpb25DYWxsIiksIG1faW5zdHJ1bWVudGluZ0Fn
ZW50cy5pbnNwZWN0b3JFbnZpcm9ubWVudCgpLmV4ZWN1dGlvblN0b3B3YXRjaCgpKTsKIAogICAg
ICsrbV9jYWxsU3RhY2tEZXB0aDsKIH0KQEAgLTQ5NSw3ICs0OTUsNyBAQCB2b2lkIEluc3BlY3Rv
clRpbWVsaW5lQWdlbnQ6OndpbGxFdmFsdWF0ZVNjcmlwdChjb25zdCBTdHJpbmcmIHVybCwgaW50
IGxpbmVOdW1iZQogCiAgICAgaWYgKCFtX2NhbGxTdGFja0RlcHRoKSB7CiAgICAgICAgICsrbV9j
YWxsU3RhY2tEZXB0aDsKLSAgICAgICAgc3RhcnRQcm9maWxpbmcoJmZyYW1lLCBBU0NJSUxpdGVy
YWwoIlRpbWVsaW5lIEV2YWx1YXRlU2NyaXB0IiksIG1faW5zdHJ1bWVudGluZ0FnZW50cy0+aW5z
cGVjdG9yRW52aXJvbm1lbnQoKS5leGVjdXRpb25TdG9wd2F0Y2goKSk7CisgICAgICAgIHN0YXJ0
UHJvZmlsaW5nKCZmcmFtZSwgQVNDSUlMaXRlcmFsKCJUaW1lbGluZSBFdmFsdWF0ZVNjcmlwdCIp
LCBtX2luc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yRW52aXJvbm1lbnQoKS5leGVjdXRpb25T
dG9wd2F0Y2goKSk7CiAgICAgfQogfQogCkBAIC03MzAsMTEgKzczMCwxMSBAQCB2b2lkIEluc3Bl
Y3RvclRpbWVsaW5lQWdlbnQ6OmRpZENvbXBsZXRlQ3VycmVudFJlY29yZChUaW1lbGluZVJlY29y
ZFR5cGUgdHlwZSkKICAgICB9CiB9CiAKLUluc3BlY3RvclRpbWVsaW5lQWdlbnQ6Okluc3BlY3Rv
clRpbWVsaW5lQWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywg
SW5zcGVjdG9yUGFnZUFnZW50KiBwYWdlQWdlbnQsIEluc3BlY3RvclR5cGUgdHlwZSwgSW5zcGVj
dG9yQ2xpZW50KiBjbGllbnQpCitJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpJbnNwZWN0b3JUaW1l
bGluZUFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIEluc3Bl
Y3RvclBhZ2VBZ2VudCogcGFnZUFnZW50LCBJbnNwZWN0b3JUeXBlIHR5cGUsIEluc3BlY3RvckNs
aWVudCogY2xpZW50KQogICAgIDogSW5zcGVjdG9yQWdlbnRCYXNlKEFTQ0lJTGl0ZXJhbCgiVGlt
ZWxpbmUiKSwgaW5zdHJ1bWVudGluZ0FnZW50cykKICAgICAsIG1fcGFnZUFnZW50KHBhZ2VBZ2Vu
dCkKLSAgICAsIG1faW5zcGVjdG9yVHlwZSh0eXBlKQogICAgICwgbV9jbGllbnQoY2xpZW50KQor
ICAgICwgbV9pbnNwZWN0b3JUeXBlKHR5cGUpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5oCmluZGV4IGEzZTdhZjc4NjFhZWMy
ZGI3ODA4ODdmNjllY2MyOTNmMzNlMDMxMDYuLjVhOTBiMzcwYmYzZTUxM2ZiZGZiNWQzZDMyMDFj
NDdmNTBhYjkwMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JUaW1lbGluZUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
clRpbWVsaW5lQWdlbnQuaApAQCAtMTE4LDcgKzExOCw3IEBAIGNsYXNzIEluc3BlY3RvclRpbWVs
aW5lQWdlbnQgZmluYWwKIHB1YmxpYzoKICAgICBlbnVtIEluc3BlY3RvclR5cGUgeyBQYWdlSW5z
cGVjdG9yLCBXb3JrZXJJbnNwZWN0b3IgfTsKIAotICAgIEluc3BlY3RvclRpbWVsaW5lQWdlbnQo
SW5zdHJ1bWVudGluZ0FnZW50cyosIEluc3BlY3RvclBhZ2VBZ2VudCosIEluc3BlY3RvclR5cGUs
IEluc3BlY3RvckNsaWVudCopOworICAgIEluc3BlY3RvclRpbWVsaW5lQWdlbnQoSW5zdHJ1bWVu
dGluZ0FnZW50cyYsIEluc3BlY3RvclBhZ2VBZ2VudCosIEluc3BlY3RvclR5cGUsIEluc3BlY3Rv
ckNsaWVudCopOwogICAgIHZpcnR1YWwgfkluc3BlY3RvclRpbWVsaW5lQWdlbnQoKTsKIAogICAg
IHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpGcm9u
dGVuZFJvdXRlciosIEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXIqKSBvdmVycmlkZTsKQEAg
LTIzMiwxOSArMjMyLDE4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBsb2NhbFRvUGFnZVF1YWQoY29u
c3QgUmVuZGVyT2JqZWN0JiwgY29uc3QgTGF5b3V0UmVjdCYsIEZsb2F0UXVhZCopOwogICAgIFBh
Z2UqIHBhZ2UoKTsKIAotICAgIEluc3BlY3RvclBhZ2VBZ2VudCogbV9wYWdlQWdlbnQ7Ci0gICAg
UGFnZVNjcmlwdERlYnVnU2VydmVyKiBtX3NjcmlwdERlYnVnU2VydmVyIHsgbnVsbHB0ciB9Owot
CiAgICAgc3RkOjp1bmlxdWVfcHRyPEluc3BlY3Rvcjo6VGltZWxpbmVGcm9udGVuZERpc3BhdGNo
ZXI+IG1fZnJvbnRlbmREaXNwYXRjaGVyOwogICAgIFJlZlB0cjxJbnNwZWN0b3I6OlRpbWVsaW5l
QmFja2VuZERpc3BhdGNoZXI+IG1fYmFja2VuZERpc3BhdGNoZXI7CisgICAgSW5zcGVjdG9yUGFn
ZUFnZW50KiBtX3BhZ2VBZ2VudDsKIAotICAgIFZlY3RvcjxUaW1lbGluZVJlY29yZEVudHJ5PiBt
X3JlY29yZFN0YWNrOworICAgIFBhZ2VTY3JpcHREZWJ1Z1NlcnZlciogbV9zY3JpcHREZWJ1Z1Nl
cnZlciB7IG51bGxwdHIgfTsKKyAgICBJbnNwZWN0b3JDbGllbnQqIG1fY2xpZW50IHsgbnVsbHB0
ciB9OwogCisgICAgVmVjdG9yPFRpbWVsaW5lUmVjb3JkRW50cnk+IG1fcmVjb3JkU3RhY2s7CiAg
ICAgaW50IG1faWQgeyAxIH07CiAgICAgaW50IG1fY2FsbFN0YWNrRGVwdGggeyAwIH07CiAgICAg
aW50IG1fbWF4Q2FsbFN0YWNrRGVwdGggeyA1IH07CiAgICAgSW5zcGVjdG9yVHlwZSBtX2luc3Bl
Y3RvclR5cGU7Ci0gICAgSW5zcGVjdG9yQ2xpZW50KiBtX2NsaWVudDsKIAogICAgIFZlY3RvcjxU
aW1lbGluZVJlY29yZEVudHJ5PiBtX3BlbmRpbmdDb25zb2xlUHJvZmlsZVJlY29yZHM7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JXZWJBZ2VudEJhc2Uu
aCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JXZWJBZ2VudEJhc2UuaAppbmRl
eCA0OGU0YTJiNDEyMjdkYTcwY2ZjYzc0MDIzYjRhNGFkOTVhMWZmZjZiLi40Y2UwYzdiYTQ3Njg2
M2U0ZDYzYWY0MzI2MTZiMmQ2NDliMTE2NDNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yV2ViQWdlbnRCYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvcldlYkFnZW50QmFzZS5oCkBAIC0zNiwxMyArMzYsMTMgQEAgY2xhc3Mg
SW5zdHJ1bWVudGluZ0FnZW50czsKIAogY2xhc3MgSW5zcGVjdG9yQWdlbnRCYXNlIDogcHVibGlj
IEluc3BlY3Rvcjo6SW5zcGVjdG9yQWdlbnRCYXNlIHsKIHByb3RlY3RlZDoKLSAgICBJbnNwZWN0
b3JBZ2VudEJhc2UoY29uc3QgU3RyaW5nJiBuYW1lLCBJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0
cnVtZW50aW5nQWdlbnRzKQorICAgIEluc3BlY3RvckFnZW50QmFzZShjb25zdCBTdHJpbmcmIG5h
bWUsIEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMpCiAgICAgICAgIDog
SW5zcGVjdG9yOjpJbnNwZWN0b3JBZ2VudEJhc2UobmFtZSkKICAgICAgICAgLCBtX2luc3RydW1l
bnRpbmdBZ2VudHMoaW5zdHJ1bWVudGluZ0FnZW50cykKICAgICB7CiAgICAgfQogCi0gICAgSW5z
dHJ1bWVudGluZ0FnZW50cyogbV9pbnN0cnVtZW50aW5nQWdlbnRzOworICAgIEluc3RydW1lbnRp
bmdBZ2VudHMmIG1faW5zdHJ1bWVudGluZ0FnZW50czsKIH07CiAgICAgCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
V29ya2VyQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvcldvcmtl
ckFnZW50LmNwcAppbmRleCA1MGJlMDMwNGFiYThkMGI5NjkxNjczYmVlYjMzYTNiNTUxYWFlNWUw
Li5lMDhiN2E3Yzg1ZjQ2NTE5ZGEzMjBhNDNhNmNiYjVjZDQ4NzQ0NTlkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yV29ya2VyQWdlbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JXb3JrZXJBZ2VudC5jcHAKQEAgLTEwMSwx
NyArMTAxLDE1IEBAIHByaXZhdGU6CiAKIGludCBJbnNwZWN0b3JXb3JrZXJBZ2VudDo6V29ya2Vy
RnJvbnRlbmRDaGFubmVsOjpzX25leHRJZCA9IDE7CiAKLUluc3BlY3RvcldvcmtlckFnZW50OjpJ
bnNwZWN0b3JXb3JrZXJBZ2VudChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdl
bnRzKQorSW5zcGVjdG9yV29ya2VyQWdlbnQ6Okluc3BlY3RvcldvcmtlckFnZW50KEluc3RydW1l
bnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMpCiAgICAgOiBJbnNwZWN0b3JBZ2VudEJh
c2UoQVNDSUlMaXRlcmFsKCJXb3JrZXIiKSwgaW5zdHJ1bWVudGluZ0FnZW50cykKLSAgICAsIG1f
ZW5hYmxlZChmYWxzZSkKLSAgICAsIG1fc2hvdWxkUGF1c2VEZWRpY2F0ZWRXb3JrZXJPblN0YXJ0
KGZhbHNlKQogewotICAgIG1faW5zdHJ1bWVudGluZ0FnZW50cy0+c2V0SW5zcGVjdG9yV29ya2Vy
QWdlbnQodGhpcyk7CisgICAgbV9pbnN0cnVtZW50aW5nQWdlbnRzLnNldEluc3BlY3Rvcldvcmtl
ckFnZW50KHRoaXMpOwogfQogCiBJbnNwZWN0b3JXb3JrZXJBZ2VudDo6fkluc3BlY3Rvcldvcmtl
ckFnZW50KCkKIHsKLSAgICBtX2luc3RydW1lbnRpbmdBZ2VudHMtPnNldEluc3BlY3Rvcldvcmtl
ckFnZW50KG51bGxwdHIpOworICAgIG1faW5zdHJ1bWVudGluZ0FnZW50cy5zZXRJbnNwZWN0b3JX
b3JrZXJBZ2VudChudWxscHRyKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JXb3JrZXJBZ2VudDo6ZGlk
Q3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6RnJvbnRlbmRSb3V0ZXIqIGZyb250
ZW5kUm91dGVyLCBJbnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hl
cikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JXb3JrZXJB
Z2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvcldvcmtlckFnZW50LmgK
aW5kZXggN2Y0ZjdkYjc2YzczNWIyOWEyNmVhMDBhNjVhNTBhN2NlZWFiNjFmZS4uZmNiZWUwZDFh
NDU0MDM5MGMwZmYwN2FiZDY2NTE4OTFiYWUyMmY4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvcldvcmtlckFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvcldvcmtlckFnZW50LmgKQEAgLTUyLDcgKzUyLDcgQEAgdHlwZWRl
ZiBTdHJpbmcgRXJyb3JTdHJpbmc7CiBjbGFzcyBJbnNwZWN0b3JXb3JrZXJBZ2VudCBmaW5hbCA6
IHB1YmxpYyBJbnNwZWN0b3JBZ2VudEJhc2UsIHB1YmxpYyBJbnNwZWN0b3I6OldvcmtlckJhY2tl
bmREaXNwYXRjaGVySGFuZGxlciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJs
aWM6Ci0gICAgZXhwbGljaXQgSW5zcGVjdG9yV29ya2VyQWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50
cyopOworICAgIGV4cGxpY2l0IEluc3BlY3RvcldvcmtlckFnZW50KEluc3RydW1lbnRpbmdBZ2Vu
dHMmKTsKICAgICB2aXJ0dWFsIH5JbnNwZWN0b3JXb3JrZXJBZ2VudCgpOwogCiAgICAgdmlydHVh
bCB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkZyb250ZW5kUm91
dGVyKiwgSW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlciopIG92ZXJyaWRlOwpAQCAtNzcsMTIg
Kzc3LDE0IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjcmVhdGVXb3JrZXJGcm9udGVuZENoYW5uZWwo
V29ya2VyR2xvYmFsU2NvcGVQcm94eSosIGNvbnN0IFN0cmluZyYgdXJsKTsKICAgICB2b2lkIGRl
c3Ryb3lXb3JrZXJGcm9udGVuZENoYW5uZWxzKCk7CiAKKyAgICBjbGFzcyBXb3JrZXJGcm9udGVu
ZENoYW5uZWw7CisKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yOjpXb3JrZXJGcm9udGVu
ZERpc3BhdGNoZXI+IG1fZnJvbnRlbmREaXNwYXRjaGVyOwogICAgIFJlZlB0cjxJbnNwZWN0b3I6
OldvcmtlckJhY2tlbmREaXNwYXRjaGVyPiBtX2JhY2tlbmREaXNwYXRjaGVyOwotICAgIGJvb2wg
bV9lbmFibGVkOwotICAgIGJvb2wgbV9zaG91bGRQYXVzZURlZGljYXRlZFdvcmtlck9uU3RhcnQ7
CiAKLSAgICBjbGFzcyBXb3JrZXJGcm9udGVuZENoYW5uZWw7CisgICAgYm9vbCBtX2VuYWJsZWQg
eyBmYWxzZSB9OworICAgIGJvb2wgbV9zaG91bGRQYXVzZURlZGljYXRlZFdvcmtlck9uU3RhcnQg
eyBmYWxzZSB9OworICAgIAogICAgIHR5cGVkZWYgSGFzaE1hcDxpbnQsIFdvcmtlckZyb250ZW5k
Q2hhbm5lbCo+IFdvcmtlckNoYW5uZWxzOwogICAgIFdvcmtlckNoYW5uZWxzIG1faWRUb0NoYW5u
ZWw7CiAgICAgdHlwZWRlZiBIYXNoTWFwPFdvcmtlckdsb2JhbFNjb3BlUHJveHkqLCBTdHJpbmc+
IERlZGljYXRlZFdvcmtlcnM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zdHJ1bWVudGluZ0FnZW50cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zdHJ1
bWVudGluZ0FnZW50cy5jcHAKaW5kZXggZWMwNDY0MjFiZjI2ZGQ3OGY0NGZjNmQ0Y2U2NmQwOWZi
NjI1NWRkYy4uMzMyY2U3YWQ4Zjk5ZjMzODNhMDk0M2M2NzQ4N2YwNThlYWYxODQ5YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3RydW1lbnRpbmdBZ2VudHMuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnN0cnVtZW50aW5nQWdlbnRzLmNwcApAQCAt
MSw2ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQsIDIwMTUgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQpAQCAt
NDQsMjcgKzQ0LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBJbnN0cnVtZW50aW5nQWdlbnRz
OjpJbnN0cnVtZW50aW5nQWdlbnRzKEluc3BlY3RvckVudmlyb25tZW50JiBlbnZpcm9ubWVudCkK
ICAgICA6IG1fZW52aXJvbm1lbnQoZW52aXJvbm1lbnQpCi0gICAgLCBtX2luc3BlY3RvckFnZW50
KG51bGxwdHIpCi0gICAgLCBtX2luc3BlY3RvclBhZ2VBZ2VudChudWxscHRyKQotICAgICwgbV9p
bnNwZWN0b3JDU1NBZ2VudChudWxscHRyKQotICAgICwgbV9pbnNwZWN0b3JMYXllclRyZWVBZ2Vu
dChudWxscHRyKQotICAgICwgbV93ZWJDb25zb2xlQWdlbnQobnVsbHB0cikKLSAgICAsIG1faW5z
cGVjdG9yRE9NQWdlbnQobnVsbHB0cikKLSAgICAsIG1faW5zcGVjdG9yUmVzb3VyY2VBZ2VudChu
dWxscHRyKQotICAgICwgbV9wYWdlUnVudGltZUFnZW50KG51bGxwdHIpCi0gICAgLCBtX3dvcmtl
clJ1bnRpbWVBZ2VudChudWxscHRyKQotICAgICwgbV9pbnNwZWN0b3JUaW1lbGluZUFnZW50KG51
bGxwdHIpCi0gICAgLCBtX3BlcnNpc3RlbnRJbnNwZWN0b3JUaW1lbGluZUFnZW50KG51bGxwdHIp
Ci0gICAgLCBtX2luc3BlY3RvckRPTVN0b3JhZ2VBZ2VudChudWxscHRyKQotI2lmIEVOQUJMRShX
RUJfUkVQTEFZKQotICAgICwgbV9pbnNwZWN0b3JSZXBsYXlBZ2VudChudWxscHRyKQotI2VuZGlm
Ci0gICAgLCBtX2luc3BlY3RvckRhdGFiYXNlQWdlbnQobnVsbHB0cikKLSAgICAsIG1faW5zcGVj
dG9yQXBwbGljYXRpb25DYWNoZUFnZW50KG51bGxwdHIpCi0gICAgLCBtX2luc3BlY3RvckRlYnVn
Z2VyQWdlbnQobnVsbHB0cikKLSAgICAsIG1fcGFnZURlYnVnZ2VyQWdlbnQobnVsbHB0cikKLSAg
ICAsIG1faW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudChudWxscHRyKQotICAgICwgbV9pbnNwZWN0
b3JXb3JrZXJBZ2VudChudWxscHRyKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zdHJ1bWVudGluZ0FnZW50cy5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3RydW1lbnRpbmdBZ2VudHMuaAppbmRleCBmOTFhNjg1OWU0Nzc1ZGMwNDc4NGZhMzE3
NDgyYjM4ZThkOTlkYTY1Li45OWZmZDkyM2I0NmUxY2FlNTNhNDY0NDg2YjAwMGIzMjgwODRkNmU4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zdHJ1bWVudGluZ0FnZW50
cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnN0cnVtZW50aW5nQWdlbnRzLmgK
QEAgLTEsNiArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE0LCAyMDE1IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUK
QEAgLTY4LDkgKzY4LDExIEBAIGNsYXNzIEluc3RydW1lbnRpbmdBZ2VudHMgOiBwdWJsaWMgUmVm
Q291bnRlZDxJbnN0cnVtZW50aW5nQWdlbnRzPiB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUo
SW5zdHJ1bWVudGluZ0FnZW50cyk7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJs
aWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SW5zdHJ1bWVudGluZ0FnZW50cz4gY3JlYXRlKElu
c3BlY3Rvcjo6SW5zcGVjdG9yRW52aXJvbm1lbnQmIGVudmlyb25tZW50KQorICAgIC8vIEZJWE1F
OiBJbnN0cnVtZW50aW5nQWdlbnRzIGNvdWxkIGJlIHVuaXF1ZWx5IG93bmVkIGJ5IEluc3BlY3Rv
ckNvbnRyb2xsZXIgaWYgaW5zdHJ1bWVudGF0aW9uCisgICAgLy8gY29va2llcyBrZXB0IG9ubHkg
YSB3ZWFrIHJlZmVyZW5jZSB0byBJbnN0cnVtZW50aW5nQWdlbnRzLiBUaGVuLCByZXNldCgpIHdv
dWxkIGJlIHVubmVjZXNzYXJ5LgorICAgIHN0YXRpYyBSZWY8SW5zdHJ1bWVudGluZ0FnZW50cz4g
Y3JlYXRlKEluc3BlY3Rvcjo6SW5zcGVjdG9yRW52aXJvbm1lbnQmIGVudmlyb25tZW50KQogICAg
IHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJbnN0cnVtZW50aW5nQWdlbnRzKGVudmly
b25tZW50KSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEluc3RydW1lbnRpbmdBZ2Vu
dHMoZW52aXJvbm1lbnQpKTsKICAgICB9CiAgICAgfkluc3RydW1lbnRpbmdBZ2VudHMoKSB7IH0K
ICAgICB2b2lkIHJlc2V0KCk7CkBAIC0xNDEsMjkgKzE0MywyOSBAQCBwcml2YXRlOgogCiAgICAg
SW5zcGVjdG9yOjpJbnNwZWN0b3JFbnZpcm9ubWVudCYgbV9lbnZpcm9ubWVudDsKIAotICAgIElu
c3BlY3Rvcjo6SW5zcGVjdG9yQWdlbnQqIG1faW5zcGVjdG9yQWdlbnQ7Ci0gICAgSW5zcGVjdG9y
UGFnZUFnZW50KiBtX2luc3BlY3RvclBhZ2VBZ2VudDsKLSAgICBJbnNwZWN0b3JDU1NBZ2VudCog
bV9pbnNwZWN0b3JDU1NBZ2VudDsKLSAgICBJbnNwZWN0b3JMYXllclRyZWVBZ2VudCogbV9pbnNw
ZWN0b3JMYXllclRyZWVBZ2VudDsKLSAgICBXZWJDb25zb2xlQWdlbnQqIG1fd2ViQ29uc29sZUFn
ZW50OwotICAgIEluc3BlY3RvckRPTUFnZW50KiBtX2luc3BlY3RvckRPTUFnZW50OwotICAgIElu
c3BlY3RvclJlc291cmNlQWdlbnQqIG1faW5zcGVjdG9yUmVzb3VyY2VBZ2VudDsKLSAgICBQYWdl
UnVudGltZUFnZW50KiBtX3BhZ2VSdW50aW1lQWdlbnQ7Ci0gICAgV29ya2VyUnVudGltZUFnZW50
KiBtX3dvcmtlclJ1bnRpbWVBZ2VudDsKLSAgICBJbnNwZWN0b3JUaW1lbGluZUFnZW50KiBtX2lu
c3BlY3RvclRpbWVsaW5lQWdlbnQ7Ci0gICAgSW5zcGVjdG9yVGltZWxpbmVBZ2VudCogbV9wZXJz
aXN0ZW50SW5zcGVjdG9yVGltZWxpbmVBZ2VudDsKLSAgICBJbnNwZWN0b3JET01TdG9yYWdlQWdl
bnQqIG1faW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50OworICAgIEluc3BlY3Rvcjo6SW5zcGVjdG9y
QWdlbnQqIG1faW5zcGVjdG9yQWdlbnQgeyBudWxscHRyIH07CisgICAgSW5zcGVjdG9yUGFnZUFn
ZW50KiBtX2luc3BlY3RvclBhZ2VBZ2VudCB7IG51bGxwdHIgfTsKKyAgICBJbnNwZWN0b3JDU1NB
Z2VudCogbV9pbnNwZWN0b3JDU1NBZ2VudCB7IG51bGxwdHIgfTsKKyAgICBJbnNwZWN0b3JMYXll
clRyZWVBZ2VudCogbV9pbnNwZWN0b3JMYXllclRyZWVBZ2VudCB7IG51bGxwdHIgfTsKKyAgICBX
ZWJDb25zb2xlQWdlbnQqIG1fd2ViQ29uc29sZUFnZW50IHsgbnVsbHB0ciB9OworICAgIEluc3Bl
Y3RvckRPTUFnZW50KiBtX2luc3BlY3RvckRPTUFnZW50IHsgbnVsbHB0ciB9OworICAgIEluc3Bl
Y3RvclJlc291cmNlQWdlbnQqIG1faW5zcGVjdG9yUmVzb3VyY2VBZ2VudCB7IG51bGxwdHIgfTsK
KyAgICBQYWdlUnVudGltZUFnZW50KiBtX3BhZ2VSdW50aW1lQWdlbnQgeyBudWxscHRyIH07Cisg
ICAgV29ya2VyUnVudGltZUFnZW50KiBtX3dvcmtlclJ1bnRpbWVBZ2VudCB7IG51bGxwdHIgfTsK
KyAgICBJbnNwZWN0b3JUaW1lbGluZUFnZW50KiBtX2luc3BlY3RvclRpbWVsaW5lQWdlbnQgeyBu
dWxscHRyIH07CisgICAgSW5zcGVjdG9yVGltZWxpbmVBZ2VudCogbV9wZXJzaXN0ZW50SW5zcGVj
dG9yVGltZWxpbmVBZ2VudCB7IG51bGxwdHIgfTsKKyAgICBJbnNwZWN0b3JET01TdG9yYWdlQWdl
bnQqIG1faW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50IHsgbnVsbHB0ciB9OwogI2lmIEVOQUJMRShX
RUJfUkVQTEFZKQotICAgIEluc3BlY3RvclJlcGxheUFnZW50KiBtX2luc3BlY3RvclJlcGxheUFn
ZW50OworICAgIEluc3BlY3RvclJlcGxheUFnZW50KiBtX2luc3BlY3RvclJlcGxheUFnZW50IHsg
bnVsbHB0ciB9OwogI2VuZGlmCi0gICAgSW5zcGVjdG9yRGF0YWJhc2VBZ2VudCogbV9pbnNwZWN0
b3JEYXRhYmFzZUFnZW50OwotICAgIEluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudCogbV9p
bnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQ7Ci0gICAgSW5zcGVjdG9yOjpJbnNwZWN0b3JE
ZWJ1Z2dlckFnZW50KiBtX2luc3BlY3RvckRlYnVnZ2VyQWdlbnQ7Ci0gICAgUGFnZURlYnVnZ2Vy
QWdlbnQqIG1fcGFnZURlYnVnZ2VyQWdlbnQ7Ci0gICAgSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2Vu
dCogbV9pbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50OwotICAgIEluc3BlY3RvcldvcmtlckFnZW50
KiBtX2luc3BlY3RvcldvcmtlckFnZW50OworICAgIEluc3BlY3RvckRhdGFiYXNlQWdlbnQqIG1f
aW5zcGVjdG9yRGF0YWJhc2VBZ2VudCB7IG51bGxwdHIgfTsKKyAgICBJbnNwZWN0b3JBcHBsaWNh
dGlvbkNhY2hlQWdlbnQqIG1faW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50IHsgbnVsbHB0
ciB9OworICAgIEluc3BlY3Rvcjo6SW5zcGVjdG9yRGVidWdnZXJBZ2VudCogbV9pbnNwZWN0b3JE
ZWJ1Z2dlckFnZW50IHsgbnVsbHB0ciB9OworICAgIFBhZ2VEZWJ1Z2dlckFnZW50KiBtX3BhZ2VE
ZWJ1Z2dlckFnZW50IHsgbnVsbHB0ciB9OworICAgIEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQq
IG1faW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudCB7IG51bGxwdHIgfTsKKyAgICBJbnNwZWN0b3JX
b3JrZXJBZ2VudCogbV9pbnNwZWN0b3JXb3JrZXJBZ2VudCB7IG51bGxwdHIgfTsKIH07CiAKLX0K
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vICFkZWZpbmVkKEluc3RydW1lbnRp
bmdBZ2VudHNfaCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdlQ29u
c29sZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdlQ29uc29sZUFnZW50
LmNwcAppbmRleCBlNzU5YWE4MDU3Njk4NTBlM2YzOTU5ZmMzNGMwYzVkNjUxMjdkYzE3Li42NzE5
NzQ3MzEyMDgyYTcwYzY0YzZhMmUyODJkNTM2ZmFlZmViMGU3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvUGFnZUNvbnNvbGVBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL1BhZ2VDb25zb2xlQWdlbnQuY3BwCkBAIC0xLDUgKzEsNiBAQAogLyoKICAq
IENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKQEAgLTQwLDcgKzQxLDcgQEAgdXNpbmcgbmFt
ZXNwYWNlIEluc3BlY3RvcjsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1QYWdlQ29uc29sZUFn
ZW50OjpQYWdlQ29uc29sZUFnZW50KFdlYkluamVjdGVkU2NyaXB0TWFuYWdlciogaW5qZWN0ZWRT
Y3JpcHRNYW5hZ2VyLCBJbnNwZWN0b3JET01BZ2VudCogZG9tQWdlbnQpCitQYWdlQ29uc29sZUFn
ZW50OjpQYWdlQ29uc29sZUFnZW50KFdlYkluamVjdGVkU2NyaXB0TWFuYWdlciYgaW5qZWN0ZWRT
Y3JpcHRNYW5hZ2VyLCBJbnNwZWN0b3JET01BZ2VudCogZG9tQWdlbnQpCiAgICAgOiBXZWJDb25z
b2xlQWdlbnQoaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKQogICAgICwgbV9pbnNwZWN0b3JET01BZ2Vu
dChkb21BZ2VudCkKIHsKQEAgLTcyLDcgKzczLDcgQEAgdm9pZCBQYWdlQ29uc29sZUFnZW50Ojph
ZGRJbnNwZWN0ZWROb2RlKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgaW50IG5vZGVJZCkKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmIChDb21tYW5kTGluZUFQSUhvc3QqIGNvbW1h
bmRMaW5lQVBJSG9zdCA9IHN0YXRpY19jYXN0PFdlYkluamVjdGVkU2NyaXB0TWFuYWdlcio+KG1f
aW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKS0+Y29tbWFuZExpbmVBUElIb3N0KCkpCisgICAgaWYgKENv
bW1hbmRMaW5lQVBJSG9zdCogY29tbWFuZExpbmVBUElIb3N0ID0gc3RhdGljX2Nhc3Q8V2ViSW5q
ZWN0ZWRTY3JpcHRNYW5hZ2VyJj4obV9pbmplY3RlZFNjcmlwdE1hbmFnZXIpLmNvbW1hbmRMaW5l
QVBJSG9zdCgpKQogICAgICAgICBjb21tYW5kTGluZUFQSUhvc3QtPmFkZEluc3BlY3RlZE9iamVj
dChzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RhYmxlTm9kZT4obm9kZSkpOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZUNvbnNvbGVBZ2VudC5oIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VDb25zb2xlQWdlbnQuaAppbmRleCAzNmMzMGMyNGQ4MjYz
YjgwMGYzZmIyNDlmMDY5YTY1YmU5NDlhMDJiLi5iMTM1NDA0YWU0ZjdhMjUzNTJhMDQ4YTFjNWQ1
YTY3ZjQzNWI0ZjY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZUNv
bnNvbGVBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdlQ29uc29sZUFn
ZW50LmgKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFy
ZQpAQCAtNDEsNyArNDIsNyBAQCBjbGFzcyBQYWdlQ29uc29sZUFnZW50IGZpbmFsIDogcHVibGlj
IFdlYkNvbnNvbGVBZ2VudCB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUGFnZUNvbnNvbGVB
Z2VudCk7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgUGFnZUNv
bnNvbGVBZ2VudChXZWJJbmplY3RlZFNjcmlwdE1hbmFnZXIqLCBJbnNwZWN0b3JET01BZ2VudCop
OworICAgIFBhZ2VDb25zb2xlQWdlbnQoV2ViSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyJiwgSW5zcGVj
dG9yRE9NQWdlbnQqKTsKICAgICB2aXJ0dWFsIH5QYWdlQ29uc29sZUFnZW50KCkgeyB9CiAKIHBy
aXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZURlYnVnZ2Vy
QWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VEZWJ1Z2dlckFnZW50LmNw
cAppbmRleCAwMDIzOWI3ZDI1M2E5ZGYxZDE1NWJjNTY3M2RiOTkwY2U2MzFhZGQ4Li5hZTNiMTQ1
YzM0NjUzOTA2M2Q3MjQxNGJkY2I5ZGEwZjI1ZmY4YmY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvUGFnZURlYnVnZ2VyQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9QYWdlRGVidWdnZXJBZ2VudC5jcHAKQEAgLTEsNSArMSw2IEBACiAvKgogICog
Q29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQpAQCAtNDksNyArNTAsNyBAQCB1c2luZyBuYW1l
c3BhY2UgSW5zcGVjdG9yOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVBhZ2VEZWJ1Z2dlckFn
ZW50OjpQYWdlRGVidWdnZXJBZ2VudChJbmplY3RlZFNjcmlwdE1hbmFnZXIqIGluamVjdGVkU2Ny
aXB0TWFuYWdlciwgSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgSW5z
cGVjdG9yUGFnZUFnZW50KiBwYWdlQWdlbnQsIEluc3BlY3Rvck92ZXJsYXkqIG92ZXJsYXkpCitQ
YWdlRGVidWdnZXJBZ2VudDo6UGFnZURlYnVnZ2VyQWdlbnQoSW5qZWN0ZWRTY3JpcHRNYW5hZ2Vy
JiBpbmplY3RlZFNjcmlwdE1hbmFnZXIsIEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRp
bmdBZ2VudHMsIEluc3BlY3RvclBhZ2VBZ2VudCogcGFnZUFnZW50LCBJbnNwZWN0b3JPdmVybGF5
KiBvdmVybGF5KQogICAgIDogV2ViRGVidWdnZXJBZ2VudChpbmplY3RlZFNjcmlwdE1hbmFnZXIs
IGluc3RydW1lbnRpbmdBZ2VudHMpCiAgICAgLCBtX3BhZ2VBZ2VudChwYWdlQWdlbnQpCiAgICAg
LCBtX292ZXJsYXkob3ZlcmxheSkKQEAgLTYwLDEzICs2MSwxMyBAQCBQYWdlRGVidWdnZXJBZ2Vu
dDo6UGFnZURlYnVnZ2VyQWdlbnQoSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiBpbmplY3RlZFNjcmlw
dE1hbmFnZQogdm9pZCBQYWdlRGVidWdnZXJBZ2VudDo6ZW5hYmxlKCkKIHsKICAgICBXZWJEZWJ1
Z2dlckFnZW50OjplbmFibGUoKTsKLSAgICBtX2luc3RydW1lbnRpbmdBZ2VudHMtPnNldFBhZ2VE
ZWJ1Z2dlckFnZW50KHRoaXMpOworICAgIG1faW5zdHJ1bWVudGluZ0FnZW50cy5zZXRQYWdlRGVi
dWdnZXJBZ2VudCh0aGlzKTsKIH0KIAogdm9pZCBQYWdlRGVidWdnZXJBZ2VudDo6ZGlzYWJsZShi
b29sIGlzQmVpbmdEZXN0cm95ZWQpCiB7CiAgICAgV2ViRGVidWdnZXJBZ2VudDo6ZGlzYWJsZShp
c0JlaW5nRGVzdHJveWVkKTsKLSAgICBtX2luc3RydW1lbnRpbmdBZ2VudHMtPnNldFBhZ2VEZWJ1
Z2dlckFnZW50KG51bGxwdHIpOworICAgIG1faW5zdHJ1bWVudGluZ0FnZW50cy5zZXRQYWdlRGVi
dWdnZXJBZ2VudChudWxscHRyKTsKIH0KIAogU3RyaW5nIFBhZ2VEZWJ1Z2dlckFnZW50Ojpzb3Vy
Y2VNYXBVUkxGb3JTY3JpcHQoY29uc3QgU2NyaXB0JiBzY3JpcHQpCkBAIC0xMjQsMTAgKzEyNSwx
MCBAQCBJbmplY3RlZFNjcmlwdCBQYWdlRGVidWdnZXJBZ2VudDo6aW5qZWN0ZWRTY3JpcHRGb3JF
dmFsKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZwogewogICAgIGlmICghZXhlY3V0aW9uQ29udGV4
dElkKSB7CiAgICAgICAgIEpTQzo6RXhlY1N0YXRlKiBzY3JpcHRTdGF0ZSA9IG1haW5Xb3JsZEV4
ZWNTdGF0ZShtX3BhZ2VBZ2VudC0+bWFpbkZyYW1lKCkpOwotICAgICAgICByZXR1cm4gaW5qZWN0
ZWRTY3JpcHRNYW5hZ2VyKCktPmluamVjdGVkU2NyaXB0Rm9yKHNjcmlwdFN0YXRlKTsKKyAgICAg
ICAgcmV0dXJuIGluamVjdGVkU2NyaXB0TWFuYWdlcigpLmluamVjdGVkU2NyaXB0Rm9yKHNjcmlw
dFN0YXRlKTsKICAgICB9CiAKLSAgICBJbmplY3RlZFNjcmlwdCBpbmplY3RlZFNjcmlwdCA9IGlu
amVjdGVkU2NyaXB0TWFuYWdlcigpLT5pbmplY3RlZFNjcmlwdEZvcklkKCpleGVjdXRpb25Db250
ZXh0SWQpOworICAgIEluamVjdGVkU2NyaXB0IGluamVjdGVkU2NyaXB0ID0gaW5qZWN0ZWRTY3Jp
cHRNYW5hZ2VyKCkuaW5qZWN0ZWRTY3JpcHRGb3JJZCgqZXhlY3V0aW9uQ29udGV4dElkKTsKICAg
ICBpZiAoaW5qZWN0ZWRTY3JpcHQuaGFzTm9WYWx1ZSgpKQogICAgICAgICBlcnJvclN0cmluZyA9
IEFTQ0lJTGl0ZXJhbCgiRXhlY3V0aW9uIGNvbnRleHQgd2l0aCBnaXZlbiBpZCBub3QgZm91bmQu
Iik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdlRGVidWdnZXJB
Z2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VEZWJ1Z2dlckFnZW50LmgKaW5k
ZXggNTQ5ZjdkM2ZjNmViOTFmMDlmMDNmNzdiNTViMWZhNTg2NTBkZmE0Zi4uNzVhZjI4ZTQ5Zjc5
ZWI3MDhjMDQ0Mzc2Yzg5ZmU3YmIzYzhiZmViNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL1BhZ2VEZWJ1Z2dlckFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL1BhZ2VEZWJ1Z2dlckFnZW50LmgKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0
IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQpAQCAtNDYsNyArNDcsNyBAQCBjbGFzcyBQYWdlRGVidWdnZXJB
Z2VudCBmaW5hbCA6IHB1YmxpYyBXZWJEZWJ1Z2dlckFnZW50IHsKICAgICBXVEZfTUFLRV9OT05D
T1BZQUJMRShQYWdlRGVidWdnZXJBZ2VudCk7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CiBwdWJsaWM6Ci0gICAgUGFnZURlYnVnZ2VyQWdlbnQoSW5zcGVjdG9yOjpJbmplY3RlZFNjcmlw
dE1hbmFnZXIqLCBJbnN0cnVtZW50aW5nQWdlbnRzKiwgSW5zcGVjdG9yUGFnZUFnZW50KiwgSW5z
cGVjdG9yT3ZlcmxheSopOworICAgIFBhZ2VEZWJ1Z2dlckFnZW50KEluc3BlY3Rvcjo6SW5qZWN0
ZWRTY3JpcHRNYW5hZ2VyJiwgSW5zdHJ1bWVudGluZ0FnZW50cyYsIEluc3BlY3RvclBhZ2VBZ2Vu
dCosIEluc3BlY3Rvck92ZXJsYXkqKTsKICAgICB2aXJ0dWFsIH5QYWdlRGVidWdnZXJBZ2VudCgp
IHsgfQogCiAgICAgdm9pZCBkaWRDbGVhck1haW5GcmFtZVdpbmRvd09iamVjdCgpOwpAQCAtNzAs
OCArNzEsOSBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgSW5zcGVjdG9yOjpJbmplY3RlZFNjcmlw
dCBpbmplY3RlZFNjcmlwdEZvckV2YWwoRXJyb3JTdHJpbmcmLCBjb25zdCBpbnQqIGV4ZWN1dGlv
bkNvbnRleHRJZCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHNldE92ZXJsYXlNZXNzYWdl
KEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nKikgb3ZlcnJpZGU7CiAKLSAgICBJbnNwZWN0b3JQ
YWdlQWdlbnQqIG1fcGFnZUFnZW50OwotICAgIEluc3BlY3Rvck92ZXJsYXkqIG1fb3ZlcmxheTsK
KyAgICBJbnNwZWN0b3JQYWdlQWdlbnQqIG1fcGFnZUFnZW50IHsgbnVsbHB0ciB9OworCisgICAg
SW5zcGVjdG9yT3ZlcmxheSogbV9vdmVybGF5IHsgbnVsbHB0ciB9OwogICAgIFBhZ2VTY3JpcHRE
ZWJ1Z1NlcnZlciBtX3NjcmlwdERlYnVnU2VydmVyOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VSdW50aW1lQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL1BhZ2VSdW50aW1lQWdlbnQuY3BwCmluZGV4IDM0ZDUwOWQ5MjI0OTFkZTA2OTg0
NmU5MGJhYzliZjRjYTYyMDBhNTcuLjlhZWQ3MTAwZDMwOTFiZTU2MzJjMzg1YTA5ZGNlODZkOTAx
Mjg2NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdlUnVudGltZUFn
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZVJ1bnRpbWVBZ2VudC5j
cHAKQEAgLTUzLDExICs1MywxMCBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLVBhZ2VSdW50aW1lQWdlbnQ6OlBhZ2VSdW50aW1lQWdlbnQoSW5q
ZWN0ZWRTY3JpcHRNYW5hZ2VyKiBpbmplY3RlZFNjcmlwdE1hbmFnZXIsIFBhZ2UqIHBhZ2UsIElu
c3BlY3RvclBhZ2VBZ2VudCogcGFnZUFnZW50KQorUGFnZVJ1bnRpbWVBZ2VudDo6UGFnZVJ1bnRp
bWVBZ2VudChJbmplY3RlZFNjcmlwdE1hbmFnZXImIGluamVjdGVkU2NyaXB0TWFuYWdlciwgUGFn
ZSogcGFnZSwgSW5zcGVjdG9yUGFnZUFnZW50KiBwYWdlQWdlbnQpCiAgICAgOiBJbnNwZWN0b3JS
dW50aW1lQWdlbnQoaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKQotICAgICwgbV9pbnNwZWN0ZWRQYWdl
KHBhZ2UpCiAgICAgLCBtX3BhZ2VBZ2VudChwYWdlQWdlbnQpCi0gICAgLCBtX21haW5Xb3JsZENv
bnRleHRDcmVhdGVkKGZhbHNlKQorICAgICwgbV9pbnNwZWN0ZWRQYWdlKHBhZ2UpCiB7CiB9CiAK
QEAgLTEyMiwxMyArMTIxLDEzIEBAIEluamVjdGVkU2NyaXB0IFBhZ2VSdW50aW1lQWdlbnQ6Omlu
amVjdGVkU2NyaXB0Rm9yRXZhbChFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsCiB7CiAgICAgaWYg
KCFleGVjdXRpb25Db250ZXh0SWQpIHsKICAgICAgICAgSlNDOjpFeGVjU3RhdGUqIHNjcmlwdFN0
YXRlID0gbWFpbldvcmxkRXhlY1N0YXRlKCZtX2luc3BlY3RlZFBhZ2UtPm1haW5GcmFtZSgpKTsK
LSAgICAgICAgSW5qZWN0ZWRTY3JpcHQgcmVzdWx0ID0gaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKCkt
PmluamVjdGVkU2NyaXB0Rm9yKHNjcmlwdFN0YXRlKTsKKyAgICAgICAgSW5qZWN0ZWRTY3JpcHQg
cmVzdWx0ID0gaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKCkuaW5qZWN0ZWRTY3JpcHRGb3Ioc2NyaXB0
U3RhdGUpOwogICAgICAgICBpZiAocmVzdWx0Lmhhc05vVmFsdWUoKSkKICAgICAgICAgICAgIGVy
cm9yU3RyaW5nID0gQVNDSUlMaXRlcmFsKCJJbnRlcm5hbCBlcnJvcjogbWFpbiB3b3JsZCBleGVj
dXRpb24gY29udGV4dCBub3QgZm91bmQuIik7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAg
fQogCi0gICAgSW5qZWN0ZWRTY3JpcHQgaW5qZWN0ZWRTY3JpcHQgPSBpbmplY3RlZFNjcmlwdE1h
bmFnZXIoKS0+aW5qZWN0ZWRTY3JpcHRGb3JJZCgqZXhlY3V0aW9uQ29udGV4dElkKTsKKyAgICBJ
bmplY3RlZFNjcmlwdCBpbmplY3RlZFNjcmlwdCA9IGluamVjdGVkU2NyaXB0TWFuYWdlcigpLmlu
amVjdGVkU2NyaXB0Rm9ySWQoKmV4ZWN1dGlvbkNvbnRleHRJZCk7CiAgICAgaWYgKGluamVjdGVk
U2NyaXB0Lmhhc05vVmFsdWUoKSkKICAgICAgICAgZXJyb3JTdHJpbmcgPSBBU0NJSUxpdGVyYWwo
IkV4ZWN1dGlvbiBjb250ZXh0IHdpdGggZ2l2ZW4gaWQgbm90IGZvdW5kLiIpOwogICAgIHJldHVy
biBpbmplY3RlZFNjcmlwdDsKQEAgLTE2NywxMSArMTY2LDExIEBAIHZvaWQgUGFnZVJ1bnRpbWVB
Z2VudDo6bm90aWZ5Q29udGV4dENyZWF0ZWQoY29uc3QgU3RyaW5nJiBmcmFtZUlkLCBKU0M6OkV4
ZWNTdGF0CiB7CiAgICAgQVNTRVJUKHNlY3VyaXR5T3JpZ2luIHx8IGlzUGFnZUNvbnRleHQpOwog
Ci0gICAgSW5qZWN0ZWRTY3JpcHQgcmVzdWx0ID0gaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKCktPmlu
amVjdGVkU2NyaXB0Rm9yKHNjcmlwdFN0YXRlKTsKKyAgICBJbmplY3RlZFNjcmlwdCByZXN1bHQg
PSBpbmplY3RlZFNjcmlwdE1hbmFnZXIoKS5pbmplY3RlZFNjcmlwdEZvcihzY3JpcHRTdGF0ZSk7
CiAgICAgaWYgKHJlc3VsdC5oYXNOb1ZhbHVlKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlu
dCBleGVjdXRpb25Db250ZXh0SWQgPSBpbmplY3RlZFNjcmlwdE1hbmFnZXIoKS0+aW5qZWN0ZWRT
Y3JpcHRJZEZvcihzY3JpcHRTdGF0ZSk7CisgICAgaW50IGV4ZWN1dGlvbkNvbnRleHRJZCA9IGlu
amVjdGVkU2NyaXB0TWFuYWdlcigpLmluamVjdGVkU2NyaXB0SWRGb3Ioc2NyaXB0U3RhdGUpOwog
ICAgIFN0cmluZyBuYW1lID0gc2VjdXJpdHlPcmlnaW4gPyBzZWN1cml0eU9yaWdpbi0+dG9SYXdT
dHJpbmcoKSA6IFN0cmluZygpOwogICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT5leGVjdXRpb25D
b250ZXh0Q3JlYXRlZChFeGVjdXRpb25Db250ZXh0RGVzY3JpcHRpb246OmNyZWF0ZSgpCiAgICAg
ICAgIC5zZXRJZChleGVjdXRpb25Db250ZXh0SWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvUGFnZVJ1bnRpbWVBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L1BhZ2VSdW50aW1lQWdlbnQuaAppbmRleCA5ZjhkMzhhNTRkYTUzMjM4NjcyYjFmZGY5YWNlZDI3
NTQ1MjU2ZGRkLi4zZTRiZWRmN2I3ZmM5YTRhZTFmMTM4ZGY4MmEyZjNjOWMwMDYzYzM0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZVJ1bnRpbWVBZ2VudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdlUnVudGltZUFnZW50LmgKQEAgLTU0LDcgKzU0
LDcgQEAgdHlwZWRlZiBTdHJpbmcgRXJyb3JTdHJpbmc7CiBjbGFzcyBQYWdlUnVudGltZUFnZW50
IGZpbmFsIDogcHVibGljIEluc3BlY3Rvcjo6SW5zcGVjdG9yUnVudGltZUFnZW50IHsKICAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBQYWdlUnVudGltZUFnZW50KElu
c3BlY3Rvcjo6SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiwgUGFnZSosIEluc3BlY3RvclBhZ2VBZ2Vu
dCopOworICAgIFBhZ2VSdW50aW1lQWdlbnQoSW5zcGVjdG9yOjpJbmplY3RlZFNjcmlwdE1hbmFn
ZXImLCBQYWdlKiwgSW5zcGVjdG9yUGFnZUFnZW50Kik7CiAgICAgdmlydHVhbCB+UGFnZVJ1bnRp
bWVBZ2VudCgpIHsgfQogCiAgICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFj
a2VuZChJbnNwZWN0b3I6OkZyb250ZW5kUm91dGVyKiwgSW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0
Y2hlciopIG92ZXJyaWRlOwpAQCAtNzMsMTEgKzczLDEzIEBAIHByaXZhdGU6CiAgICAgdm9pZCBy
ZXBvcnRFeGVjdXRpb25Db250ZXh0Q3JlYXRpb24oKTsKICAgICB2b2lkIG5vdGlmeUNvbnRleHRD
cmVhdGVkKGNvbnN0IFN0cmluZyYgZnJhbWVJZCwgSlNDOjpFeGVjU3RhdGUqLCBTZWN1cml0eU9y
aWdpbiosIGJvb2wgaXNQYWdlQ29udGV4dCk7CiAKLSAgICBQYWdlKiBtX2luc3BlY3RlZFBhZ2U7
Ci0gICAgSW5zcGVjdG9yUGFnZUFnZW50KiBtX3BhZ2VBZ2VudDsKICAgICBzdGQ6OnVuaXF1ZV9w
dHI8SW5zcGVjdG9yOjpSdW50aW1lRnJvbnRlbmREaXNwYXRjaGVyPiBtX2Zyb250ZW5kRGlzcGF0
Y2hlcjsKICAgICBSZWZQdHI8SW5zcGVjdG9yOjpSdW50aW1lQmFja2VuZERpc3BhdGNoZXI+IG1f
YmFja2VuZERpc3BhdGNoZXI7Ci0gICAgYm9vbCBtX21haW5Xb3JsZENvbnRleHRDcmVhdGVkOwor
ICAgIEluc3BlY3RvclBhZ2VBZ2VudCogbV9wYWdlQWdlbnQ7CisKKyAgICBQYWdlKiBtX2luc3Bl
Y3RlZFBhZ2U7CisKKyAgICBib29sIG1fbWFpbldvcmxkQ29udGV4dENyZWF0ZWQgeyBmYWxzZSB9
OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL1dlYkNvbnNvbGVBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvV2ViQ29uc29sZUFnZW50LmNwcAppbmRleCA0NzAwNThlZTQzZTkyYjk1MjUwNDkxZTlhOGFm
NTNmZTYyNDUyNjhhLi45YjAwZjJmZGVhM2ZiOTU3OTM2YzJlMjMzNzAzNzZlZTk4NmZjNDA0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV2ViQ29uc29sZUFnZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV2ViQ29uc29sZUFnZW50LmNwcApAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE0LCAyMDE1IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtNDEsOSArNDEsOCBAQCB1c2luZyBu
YW1lc3BhY2UgSW5zcGVjdG9yOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVdlYkNvbnNvbGVB
Z2VudDo6V2ViQ29uc29sZUFnZW50KFdlYkluamVjdGVkU2NyaXB0TWFuYWdlciogaW5qZWN0ZWRT
Y3JpcHRNYW5hZ2VyKQorV2ViQ29uc29sZUFnZW50OjpXZWJDb25zb2xlQWdlbnQoV2ViSW5qZWN0
ZWRTY3JpcHRNYW5hZ2VyJiBpbmplY3RlZFNjcmlwdE1hbmFnZXIpCiAgICAgOiBJbnNwZWN0b3JD
b25zb2xlQWdlbnQoaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKQotICAgICwgbV9tb25pdG9yaW5nWEhS
RW5hYmxlZChmYWxzZSkKIHsKIH0KIApAQCAtNjQsMTIgKzYzLDEyIEBAIHZvaWQgV2ViQ29uc29s
ZUFnZW50OjpmcmFtZVdpbmRvd0Rpc2NhcmRlZChET01XaW5kb3cqIHdpbmRvdykKICAgICAgICAg
bV9jb25zb2xlTWVzc2FnZXNbaV0tPmNsZWFyKCk7CiAgICAgfQogCi0gICAgc3RhdGljX2Nhc3Q8
V2ViSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKj4obV9pbmplY3RlZFNjcmlwdE1hbmFnZXIpLT5kaXNj
YXJkSW5qZWN0ZWRTY3JpcHRzRm9yKHdpbmRvdyk7CisgICAgc3RhdGljX2Nhc3Q8V2ViSW5qZWN0
ZWRTY3JpcHRNYW5hZ2VyJj4obV9pbmplY3RlZFNjcmlwdE1hbmFnZXIpLmRpc2NhcmRJbmplY3Rl
ZFNjcmlwdHNGb3Iod2luZG93KTsKIH0KIAogdm9pZCBXZWJDb25zb2xlQWdlbnQ6OmRpZEZpbmlz
aFhIUkxvYWRpbmcodW5zaWduZWQgbG9uZyByZXF1ZXN0SWRlbnRpZmllciwgY29uc3QgU3RyaW5n
JiB1cmwsIGNvbnN0IFN0cmluZyYgc2VuZFVSTCwgdW5zaWduZWQgc2VuZExpbmVOdW1iZXIsIHVu
c2lnbmVkIHNlbmRDb2x1bW5OdW1iZXIpCiB7Ci0gICAgaWYgKCFtX2luamVjdGVkU2NyaXB0TWFu
YWdlci0+aW5zcGVjdG9yRW52aXJvbm1lbnQoKS5kZXZlbG9wZXJFeHRyYXNFbmFibGVkKCkpCisg
ICAgaWYgKCFtX2luamVjdGVkU2NyaXB0TWFuYWdlci5pbnNwZWN0b3JFbnZpcm9ubWVudCgpLmRl
dmVsb3BlckV4dHJhc0VuYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKG1fZnJv
bnRlbmREaXNwYXRjaGVyICYmIG1fbW9uaXRvcmluZ1hIUkVuYWJsZWQpIHsKQEAgLTgwLDcgKzc5
LDcgQEAgdm9pZCBXZWJDb25zb2xlQWdlbnQ6OmRpZEZpbmlzaFhIUkxvYWRpbmcodW5zaWduZWQg
bG9uZyByZXF1ZXN0SWRlbnRpZmllciwgY29uc3QKIAogdm9pZCBXZWJDb25zb2xlQWdlbnQ6OmRp
ZFJlY2VpdmVSZXNwb25zZSh1bnNpZ25lZCBsb25nIHJlcXVlc3RJZGVudGlmaWVyLCBjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKIHsKLSAgICBpZiAoIW1faW5qZWN0ZWRTY3JpcHRN
YW5hZ2VyLT5pbnNwZWN0b3JFbnZpcm9ubWVudCgpLmRldmVsb3BlckV4dHJhc0VuYWJsZWQoKSkK
KyAgICBpZiAoIW1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmluc3BlY3RvckVudmlyb25tZW50KCku
ZGV2ZWxvcGVyRXh0cmFzRW5hYmxlZCgpKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAocmVz
cG9uc2UuaHR0cFN0YXR1c0NvZGUoKSA+PSA0MDApIHsKQEAgLTkxLDcgKzkwLDcgQEAgdm9pZCBX
ZWJDb25zb2xlQWdlbnQ6OmRpZFJlY2VpdmVSZXNwb25zZSh1bnNpZ25lZCBsb25nIHJlcXVlc3RJ
ZGVudGlmaWVyLCBjb25zdAogCiB2b2lkIFdlYkNvbnNvbGVBZ2VudDo6ZGlkRmFpbExvYWRpbmco
dW5zaWduZWQgbG9uZyByZXF1ZXN0SWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJy
b3IpCiB7Ci0gICAgaWYgKCFtX2luamVjdGVkU2NyaXB0TWFuYWdlci0+aW5zcGVjdG9yRW52aXJv
bm1lbnQoKS5kZXZlbG9wZXJFeHRyYXNFbmFibGVkKCkpCisgICAgaWYgKCFtX2luamVjdGVkU2Ny
aXB0TWFuYWdlci5pbnNwZWN0b3JFbnZpcm9ubWVudCgpLmRldmVsb3BlckV4dHJhc0VuYWJsZWQo
KSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gUmVwb3J0IGZhaWx1cmVzIG9ubHkuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV2ViQ29uc29sZUFnZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvV2ViQ29uc29sZUFnZW50LmgKaW5kZXggY2FmMWIxZGVhNTQx
MTkyOTU5YjcxMmEzZDBiZjZlZDljMTAxZjk5ZS4uMjkyZjlkNDMzMTY1ZWJiODczNDU3MWVhOTA5
NWFjYjI4Nzg4ZDJhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dlYkNv
bnNvbGVBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9XZWJDb25zb2xlQWdl
bnQuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE0LCAyMDE1IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtNDAsNyArNDAs
NyBAQCBjbGFzcyBXZWJDb25zb2xlQWdlbnQgOiBwdWJsaWMgSW5zcGVjdG9yOjpJbnNwZWN0b3JD
b25zb2xlQWdlbnQgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFdlYkNvbnNvbGVBZ2VudCk7
CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgV2ViQ29uc29sZUFn
ZW50KFdlYkluamVjdGVkU2NyaXB0TWFuYWdlciopOworICAgIFdlYkNvbnNvbGVBZ2VudChXZWJJ
bmplY3RlZFNjcmlwdE1hbmFnZXImKTsKICAgICB2aXJ0dWFsIH5XZWJDb25zb2xlQWdlbnQoKSB7
IH0KIAogICAgIHZpcnR1YWwgdm9pZCBzZXRNb25pdG9yaW5nWEhSRW5hYmxlZChFcnJvclN0cmlu
ZyYsIGJvb2wgZW5hYmxlZCkgb3ZlcnJpZGUgZmluYWw7CkBAIC01Miw3ICs1Miw3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIGRpZEZhaWxMb2FkaW5nKHVuc2lnbmVkIGxvbmcgcmVxdWVzdElkZW50aWZp
ZXIsIGNvbnN0IFJlc291cmNlRXJyb3ImKTsKIAogcHJvdGVjdGVkOgotICAgIGJvb2wgbV9tb25p
dG9yaW5nWEhSRW5hYmxlZDsKKyAgICBib29sIG1fbW9uaXRvcmluZ1hIUkVuYWJsZWQgeyBmYWxz
ZSB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL1dlYkRlYnVnZ2VyQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL1dlYkRlYnVnZ2VyQWdlbnQuY3BwCmluZGV4IGRkNjllNWYzZjE0MjRmYzhjM2U1NDZk
ZWUyYTJmN2Y5YjY1ZDk5MTYuLjRiNmFmZjhkODA5N2JiYmI3ODgwNzY3ZWY1MGUyNTlhNDEwMzY0
YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9XZWJEZWJ1Z2dlckFnZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV2ViRGVidWdnZXJBZ2VudC5jcHAK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNCwgMjAxNSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTMyLDcgKzMyLDcgQEAgdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1XZWJEZWJ1Z2dlckFnZW50OjpXZWJEZWJ1Z2dlckFnZW50KEluamVjdGVkU2Ny
aXB0TWFuYWdlciogaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLCBJbnN0cnVtZW50aW5nQWdlbnRzKiBp
bnN0cnVtZW50aW5nQWdlbnRzKQorV2ViRGVidWdnZXJBZ2VudDo6V2ViRGVidWdnZXJBZ2VudChJ
bmplY3RlZFNjcmlwdE1hbmFnZXImIGluamVjdGVkU2NyaXB0TWFuYWdlciwgSW5zdHJ1bWVudGlu
Z0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cykKICAgICA6IEluc3BlY3RvckRlYnVnZ2VyQWdl
bnQoaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKQogICAgICwgbV9pbnN0cnVtZW50aW5nQWdlbnRzKGlu
c3RydW1lbnRpbmdBZ2VudHMpCiB7CkBAIC00MSwxMyArNDEsMTMgQEAgV2ViRGVidWdnZXJBZ2Vu
dDo6V2ViRGVidWdnZXJBZ2VudChJbmplY3RlZFNjcmlwdE1hbmFnZXIqIGluamVjdGVkU2NyaXB0
TWFuYWdlciwKIHZvaWQgV2ViRGVidWdnZXJBZ2VudDo6ZW5hYmxlKCkKIHsKICAgICBJbnNwZWN0
b3JEZWJ1Z2dlckFnZW50OjplbmFibGUoKTsKLSAgICBtX2luc3RydW1lbnRpbmdBZ2VudHMtPnNl
dEluc3BlY3RvckRlYnVnZ2VyQWdlbnQodGhpcyk7CisgICAgbV9pbnN0cnVtZW50aW5nQWdlbnRz
LnNldEluc3BlY3RvckRlYnVnZ2VyQWdlbnQodGhpcyk7CiB9CiAKIHZvaWQgV2ViRGVidWdnZXJB
Z2VudDo6ZGlzYWJsZShib29sIGlzQmVpbmdEZXN0cm95ZWQpCiB7CiAgICAgSW5zcGVjdG9yRGVi
dWdnZXJBZ2VudDo6ZGlzYWJsZShpc0JlaW5nRGVzdHJveWVkKTsKLSAgICBtX2luc3RydW1lbnRp
bmdBZ2VudHMtPnNldEluc3BlY3RvckRlYnVnZ2VyQWdlbnQobnVsbHB0cik7CisgICAgbV9pbnN0
cnVtZW50aW5nQWdlbnRzLnNldEluc3BlY3RvckRlYnVnZ2VyQWdlbnQobnVsbHB0cik7CiB9CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9XZWJEZWJ1Z2dlckFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV2ViRGVi
dWdnZXJBZ2VudC5oCmluZGV4IDA3NDE2NjIxNjFkY2MxNTViZDEyOTFkZWI2YTg1MzRlYzRiOTNk
YmQuLmNjMGJiZGM3YmNlMTBmZGJjY2M2YjI2YTdlNTZkYmM3OTFkM2MwZDIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9XZWJEZWJ1Z2dlckFnZW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL1dlYkRlYnVnZ2VyQWdlbnQuaApAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDE0LCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzcsMTQgKzM3LDE0IEBAIGNs
YXNzIFdlYkRlYnVnZ2VyQWdlbnQgOiBwdWJsaWMgSW5zcGVjdG9yOjpJbnNwZWN0b3JEZWJ1Z2dl
ckFnZW50IHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShXZWJEZWJ1Z2dlckFnZW50KTsKICAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBXZWJEZWJ1Z2dlckFnZW50
KEluc3BlY3Rvcjo6SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiwgSW5zdHJ1bWVudGluZ0FnZW50cyop
OworICAgIFdlYkRlYnVnZ2VyQWdlbnQoSW5zcGVjdG9yOjpJbmplY3RlZFNjcmlwdE1hbmFnZXIm
LCBJbnN0cnVtZW50aW5nQWdlbnRzJik7CiAgICAgdmlydHVhbCB+V2ViRGVidWdnZXJBZ2VudCgp
IHsgfQogCiBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB2b2lkIGVuYWJsZSgpIG92ZXJyaWRlOwog
ICAgIHZpcnR1YWwgdm9pZCBkaXNhYmxlKGJvb2wgaXNCZWluZ0Rlc3Ryb3llZCkgb3ZlcnJpZGU7
CiAKLSAgICBJbnN0cnVtZW50aW5nQWdlbnRzKiBtX2luc3RydW1lbnRpbmdBZ2VudHM7CisgICAg
SW5zdHJ1bWVudGluZ0FnZW50cyYgbV9pbnN0cnVtZW50aW5nQWdlbnRzOwogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dv
cmtlckNvbnNvbGVBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VyQ29u
c29sZUFnZW50LmNwcAppbmRleCBkYzFjYjc5ZGIwYjA5YmI3Y2VmNWI5MDhkNTUxZjcwYzMwNTA4
ZDc0Li40YTdjODdiNWQzMmQyZGNlN2FlM2E2NTY2NTZmNzg3YmQ4MTIyYzYyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VyQ29uc29sZUFnZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VyQ29uc29sZUFnZW50LmNwcApAQCAtMSw1ICsx
LDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCkBAIC0zNSw3ICszNiw3
IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
V29ya2VyQ29uc29sZUFnZW50OjpXb3JrZXJDb25zb2xlQWdlbnQoV2ViSW5qZWN0ZWRTY3JpcHRN
YW5hZ2VyKiBpbmplY3RlZFNjcmlwdE1hbmFnZXIpCitXb3JrZXJDb25zb2xlQWdlbnQ6Oldvcmtl
ckNvbnNvbGVBZ2VudChXZWJJbmplY3RlZFNjcmlwdE1hbmFnZXImIGluamVjdGVkU2NyaXB0TWFu
YWdlcikKICAgICA6IFdlYkNvbnNvbGVBZ2VudChpbmplY3RlZFNjcmlwdE1hbmFnZXIpCiB7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VyQ29uc29sZUFnZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VyQ29uc29sZUFnZW50LmgKaW5kZXgg
ODg5N2I1MGRlMDU4ZmJiMmNiZmU0OTI2YzM1OTkyZmI1Mjg4ZWJkMi4uMjJmMjZkNzcyMmEzOTcz
ZjhjNzEyMWQ3NDRiMjMzMjBmMDQ4ODcyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL1dvcmtlckNvbnNvbGVBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9Xb3JrZXJDb25zb2xlQWdlbnQuaApAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQg
KEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMgYXJlCkBAIC0zOSw3ICs0MCw3IEBAIGNsYXNzIFdvcmtlckNvbnNvbGVB
Z2VudCBmaW5hbCA6IHB1YmxpYyBXZWJDb25zb2xlQWdlbnQgewogICAgIFdURl9NQUtFX05PTkNP
UFlBQkxFKFdvcmtlckNvbnNvbGVBZ2VudCk7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CiBwdWJsaWM6Ci0gICAgV29ya2VyQ29uc29sZUFnZW50KFdlYkluamVjdGVkU2NyaXB0TWFuYWdl
ciopOworICAgIFdvcmtlckNvbnNvbGVBZ2VudChXZWJJbmplY3RlZFNjcmlwdE1hbmFnZXImKTsK
ICAgICB2aXJ0dWFsIH5Xb3JrZXJDb25zb2xlQWdlbnQoKSB7IH0KIAogICAgIHZpcnR1YWwgYm9v
bCBpc1dvcmtlckFnZW50KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlckRlYnVnZ2VyQWdlbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlckRlYnVnZ2VyQWdlbnQuY3BwCmluZGV4IDcz
MGZiMDM4NTQ2MjUzZTU3OWQ5MzRjZDU3OWQ5M2FkZThhYTNkODEuLjhkMWI5NWJmZDAyZjFkZTc2
ZTdiMmEwYWZlMzc0NzY2NWUwNjBjNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9Xb3JrZXJEZWJ1Z2dlckFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvV29ya2VyRGVidWdnZXJBZ2VudC5jcHAKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJp
Z2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zIGFyZQpAQCAtODAsNyArODEsNyBAQCBwcml2YXRlOgogCiBjb25z
dCBjaGFyKiBXb3JrZXJEZWJ1Z2dlckFnZW50OjpkZWJ1Z2dlclRhc2tNb2RlID0gImRlYnVnZ2Vy
IjsKIAotV29ya2VyRGVidWdnZXJBZ2VudDo6V29ya2VyRGVidWdnZXJBZ2VudChJbmplY3RlZFNj
cmlwdE1hbmFnZXIqIGluamVjdGVkU2NyaXB0TWFuYWdlciwgSW5zdHJ1bWVudGluZ0FnZW50cyog
aW5zdHJ1bWVudGluZ0FnZW50cywgV29ya2VyR2xvYmFsU2NvcGUqIGluc3BlY3RlZFdvcmtlckds
b2JhbFNjb3BlKQorV29ya2VyRGVidWdnZXJBZ2VudDo6V29ya2VyRGVidWdnZXJBZ2VudChJbmpl
Y3RlZFNjcmlwdE1hbmFnZXImIGluamVjdGVkU2NyaXB0TWFuYWdlciwgSW5zdHJ1bWVudGluZ0Fn
ZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgV29ya2VyR2xvYmFsU2NvcGUqIGluc3BlY3RlZFdv
cmtlckdsb2JhbFNjb3BlKQogICAgIDogV2ViRGVidWdnZXJBZ2VudChpbmplY3RlZFNjcmlwdE1h
bmFnZXIsIGluc3RydW1lbnRpbmdBZ2VudHMpCiAgICAgLCBtX3NjcmlwdERlYnVnU2VydmVyKGlu
c3BlY3RlZFdvcmtlckdsb2JhbFNjb3BlLCBXb3JrZXJEZWJ1Z2dlckFnZW50OjpkZWJ1Z2dlclRh
c2tNb2RlKQogICAgICwgbV9pbnNwZWN0ZWRXb3JrZXJHbG9iYWxTY29wZShpbnNwZWN0ZWRXb3Jr
ZXJHbG9iYWxTY29wZSkKQEAgLTEzMyw3ICsxMzQsNyBAQCBJbmplY3RlZFNjcmlwdCBXb3JrZXJE
ZWJ1Z2dlckFnZW50OjppbmplY3RlZFNjcmlwdEZvckV2YWwoRXJyb3JTdHJpbmcmIGVycm9yLCBj
bwogICAgIH0KIAogICAgIEpTQzo6RXhlY1N0YXRlKiBzY3JpcHRTdGF0ZSA9IGV4ZWNTdGF0ZUZy
b21Xb3JrZXJHbG9iYWxTY29wZShtX2luc3BlY3RlZFdvcmtlckdsb2JhbFNjb3BlKTsKLSAgICBy
ZXR1cm4gaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKCktPmluamVjdGVkU2NyaXB0Rm9yKHNjcmlwdFN0
YXRlKTsKKyAgICByZXR1cm4gaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKCkuaW5qZWN0ZWRTY3JpcHRG
b3Ioc2NyaXB0U3RhdGUpOwogfQogCiB2b2lkIFdvcmtlckRlYnVnZ2VyQWdlbnQ6Om11dGVDb25z
b2xlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJEZWJ1Z2dl
ckFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VyRGVidWdnZXJBZ2VudC5o
CmluZGV4IGQ4NzlkMTg5YTFmZmYwNDBjY2ZkYjhlMjE2YWI5YTQwNzU4OTE4YzAuLjk2MWRiZTE4
NjJmYmE4ZGY5NjQ2YWM2ZWMwNTU2ZjY2YWZmM2Q1YzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9Xb3JrZXJEZWJ1Z2dlckFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL1dvcmtlckRlYnVnZ2VyQWdlbnQuaApAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBD
b3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCkBAIC00Myw3ICs0NCw3IEBAIGNsYXNzIFdvcmtl
ckRlYnVnZ2VyQWdlbnQgZmluYWwgOiBwdWJsaWMgV2ViRGVidWdnZXJBZ2VudCB7CiAgICAgV1RG
X01BS0VfTk9OQ09QWUFCTEUoV29ya2VyRGVidWdnZXJBZ2VudCk7CiAgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgV29ya2VyRGVidWdnZXJBZ2VudChJbnNwZWN0b3I6
OkluamVjdGVkU2NyaXB0TWFuYWdlciosIEluc3RydW1lbnRpbmdBZ2VudHMqLCBXb3JrZXJHbG9i
YWxTY29wZSopOworICAgIFdvcmtlckRlYnVnZ2VyQWdlbnQoSW5zcGVjdG9yOjpJbmplY3RlZFNj
cmlwdE1hbmFnZXImLCBJbnN0cnVtZW50aW5nQWdlbnRzJiwgV29ya2VyR2xvYmFsU2NvcGUqKTsK
ICAgICB2aXJ0dWFsIH5Xb3JrZXJEZWJ1Z2dlckFnZW50KCk7CiAKICAgICBzdGF0aWMgY29uc3Qg
Y2hhciogZGVidWdnZXJUYXNrTW9kZTsKQEAgLTYwLDcgKzYxLDcgQEAgcHVibGljOgogCiBwcml2
YXRlOgogICAgIFdvcmtlclNjcmlwdERlYnVnU2VydmVyIG1fc2NyaXB0RGVidWdTZXJ2ZXI7Ci0g
ICAgV29ya2VyR2xvYmFsU2NvcGUqIG1faW5zcGVjdGVkV29ya2VyR2xvYmFsU2NvcGU7CisgICAg
V29ya2VyR2xvYmFsU2NvcGUqIG1faW5zcGVjdGVkV29ya2VyR2xvYmFsU2NvcGUgeyBudWxscHRy
IH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvV29ya2VySW5zcGVjdG9yQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvV29ya2VySW5zcGVjdG9yQ29udHJvbGxlci5jcHAKaW5kZXggNDFiMDJk
MDE5MjgyNmI3MWIyODEzMmZhYTMzOTliY2FlMzA4YjliZS4uOWZkOWY5Y2E5ZGI2MWYzNTNiODRi
ZjNjOWNlODAyNWU5YzQxOTllYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L1dvcmtlckluc3BlY3RvckNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9Xb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyLmNwcApAQCAtODEsMjAgKzgxLDE5IEBAIFdv
cmtlckluc3BlY3RvckNvbnRyb2xsZXI6Oldvcmtlckluc3BlY3RvckNvbnRyb2xsZXIoV29ya2Vy
R2xvYmFsU2NvcGUmIHdvcmtlckdsCiAgICAgOiBtX3dvcmtlckdsb2JhbFNjb3BlKHdvcmtlckds
b2JhbFNjb3BlKQogICAgICwgbV9pbnN0cnVtZW50aW5nQWdlbnRzKEluc3RydW1lbnRpbmdBZ2Vu
dHM6OmNyZWF0ZSgqdGhpcykpCiAgICAgLCBtX2luamVjdGVkU2NyaXB0TWFuYWdlcihzdGQ6Om1h
a2VfdW5pcXVlPFdlYkluamVjdGVkU2NyaXB0TWFuYWdlcj4oKnRoaXMsIFdlYkluamVjdGVkU2Ny
aXB0SG9zdDo6Y3JlYXRlKCkpKQotICAgICwgbV9ydW50aW1lQWdlbnQobnVsbHB0cikKICAgICAs
IG1fZXhlY3V0aW9uU3RvcHdhdGNoKFN0b3B3YXRjaDo6Y3JlYXRlKCkpCiAgICAgLCBtX2Zyb250
ZW5kUm91dGVyKEZyb250ZW5kUm91dGVyOjpjcmVhdGUoKSkKICAgICAsIG1fYmFja2VuZERpc3Bh
dGNoZXIoQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShtX2Zyb250ZW5kUm91dGVyLmNvcHlSZWYo
KSkpCiB7Ci0gICAgYXV0byBydW50aW1lQWdlbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdvcmtlclJ1
bnRpbWVBZ2VudD4obV9pbmplY3RlZFNjcmlwdE1hbmFnZXIuZ2V0KCksICZ3b3JrZXJHbG9iYWxT
Y29wZSk7CisgICAgYXV0byBydW50aW1lQWdlbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdvcmtlclJ1
bnRpbWVBZ2VudD4oKm1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLCAmd29ya2VyR2xvYmFsU2NvcGUp
OwogICAgIG1fcnVudGltZUFnZW50ID0gcnVudGltZUFnZW50LmdldCgpOwogICAgIG1faW5zdHJ1
bWVudGluZ0FnZW50cy0+c2V0V29ya2VyUnVudGltZUFnZW50KG1fcnVudGltZUFnZW50KTsKICAg
ICBtX2FnZW50cy5hcHBlbmQoV1RGOjptb3ZlKHJ1bnRpbWVBZ2VudCkpOwogCi0gICAgYXV0byBj
b25zb2xlQWdlbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdvcmtlckNvbnNvbGVBZ2VudD4obV9pbmpl
Y3RlZFNjcmlwdE1hbmFnZXIuZ2V0KCkpOworICAgIGF1dG8gY29uc29sZUFnZW50ID0gc3RkOjpt
YWtlX3VuaXF1ZTxXb3JrZXJDb25zb2xlQWdlbnQ+KCptX2luamVjdGVkU2NyaXB0TWFuYWdlcik7
CiAgICAgbV9pbnN0cnVtZW50aW5nQWdlbnRzLT5zZXRXZWJDb25zb2xlQWdlbnQoY29uc29sZUFn
ZW50LmdldCgpKTsKIAotICAgIGF1dG8gZGVidWdnZXJBZ2VudCA9IHN0ZDo6bWFrZV91bmlxdWU8
V29ya2VyRGVidWdnZXJBZ2VudD4obV9pbmplY3RlZFNjcmlwdE1hbmFnZXIuZ2V0KCksIG1faW5z
dHJ1bWVudGluZ0FnZW50cy5nZXQoKSwgJndvcmtlckdsb2JhbFNjb3BlKTsKKyAgICBhdXRvIGRl
YnVnZ2VyQWdlbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdvcmtlckRlYnVnZ2VyQWdlbnQ+KCptX2lu
amVjdGVkU2NyaXB0TWFuYWdlciwgbV9pbnN0cnVtZW50aW5nQWdlbnRzLmdldCgpLCAmd29ya2Vy
R2xvYmFsU2NvcGUpOwogICAgIG1fcnVudGltZUFnZW50LT5zZXRTY3JpcHREZWJ1Z1NlcnZlcigm
ZGVidWdnZXJBZ2VudC0+c2NyaXB0RGVidWdTZXJ2ZXIoKSk7CiAgICAgbV9hZ2VudHMuYXBwZW5k
KFdURjo6bW92ZShkZWJ1Z2dlckFnZW50KSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9Xb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvV29ya2VySW5zcGVjdG9yQ29udHJvbGxlci5oCmluZGV4IGFiMTZhNjNkMWFlYTc2
NmM1YmQ1NDFkZjkwZmU5ZmI1MzQyZTU1YjguLmQ4ZjI2ZTUzNDQ4ZDAyZDYwYjEwZjVlMmQzY2Iy
OGM0ZDY0ZjY5NTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJJ
bnNwZWN0b3JDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtl
ckluc3BlY3RvckNvbnRyb2xsZXIuaApAQCAtODAsOSArODAsOSBAQCBwcml2YXRlOgogICAgIGZy
aWVuZCBjbGFzcyBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb247CiAKICAgICBXb3JrZXJHbG9iYWxT
Y29wZSYgbV93b3JrZXJHbG9iYWxTY29wZTsKLSAgICBSZWZQdHI8SW5zdHJ1bWVudGluZ0FnZW50
cz4gbV9pbnN0cnVtZW50aW5nQWdlbnRzOworICAgIFJlZjxJbnN0cnVtZW50aW5nQWdlbnRzPiBt
X2luc3RydW1lbnRpbmdBZ2VudHM7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkluamVjdGVkU2Ny
aXB0TWFuYWdlcj4gbV9pbmplY3RlZFNjcmlwdE1hbmFnZXI7Ci0gICAgV29ya2VyUnVudGltZUFn
ZW50KiBtX3J1bnRpbWVBZ2VudDsKKyAgICBXb3JrZXJSdW50aW1lQWdlbnQqIG1fcnVudGltZUFn
ZW50IHsgbnVsbHB0ciB9OwogICAgIEluc3BlY3Rvcjo6QWdlbnRSZWdpc3RyeSBtX2FnZW50czsK
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yOjpGcm9udGVuZENoYW5uZWw+IG1fZm9yd2Fy
ZGluZ0NoYW5uZWw7CiAgICAgUmVmPFdURjo6U3RvcHdhdGNoPiBtX2V4ZWN1dGlvblN0b3B3YXRj
aDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJSdW50aW1lQWdl
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlclJ1bnRpbWVBZ2VudC5jcHAK
aW5kZXggYzk0M2UyYTk0OTY5Zjk2YzczYzJlNzMwMTU4NDJiNjczN2M3YmQ1Mi4uY2NkOGZlYWNl
ZDkxNmM0N2U3MTRmZjEzNjhkNDFjNTU1MWM5Y2YyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL1dvcmtlclJ1bnRpbWVBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL1dvcmtlclJ1bnRpbWVBZ2VudC5jcHAKQEAgLTQ3LDEwICs0Nyw5IEBAIHVzaW5n
IG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotV29ya2VyUnVu
dGltZUFnZW50OjpXb3JrZXJSdW50aW1lQWdlbnQoSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiBpbmpl
Y3RlZFNjcmlwdE1hbmFnZXIsIFdvcmtlckdsb2JhbFNjb3BlKiB3b3JrZXJHbG9iYWxTY29wZSkK
K1dvcmtlclJ1bnRpbWVBZ2VudDo6V29ya2VyUnVudGltZUFnZW50KEluamVjdGVkU2NyaXB0TWFu
YWdlciYgaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLCBXb3JrZXJHbG9iYWxTY29wZSogd29ya2VyR2xv
YmFsU2NvcGUpCiAgICAgOiBJbnNwZWN0b3JSdW50aW1lQWdlbnQoaW5qZWN0ZWRTY3JpcHRNYW5h
Z2VyKQogICAgICwgbV93b3JrZXJHbG9iYWxTY29wZSh3b3JrZXJHbG9iYWxTY29wZSkKLSAgICAs
IG1fcGF1c2VkKGZhbHNlKQogewogfQogCkBAIC03NCw3ICs3Myw3IEBAIEluamVjdGVkU2NyaXB0
IFdvcmtlclJ1bnRpbWVBZ2VudDo6aW5qZWN0ZWRTY3JpcHRGb3JFdmFsKEVycm9yU3RyaW5nJiBl
cnJvciwgY29uCiAgICAgfQogCiAgICAgSlNDOjpFeGVjU3RhdGUqIHNjcmlwdFN0YXRlID0gZXhl
Y1N0YXRlRnJvbVdvcmtlckdsb2JhbFNjb3BlKG1fd29ya2VyR2xvYmFsU2NvcGUpOwotICAgIHJl
dHVybiBpbmplY3RlZFNjcmlwdE1hbmFnZXIoKS0+aW5qZWN0ZWRTY3JpcHRGb3Ioc2NyaXB0U3Rh
dGUpOworICAgIHJldHVybiBpbmplY3RlZFNjcmlwdE1hbmFnZXIoKS5pbmplY3RlZFNjcmlwdEZv
cihzY3JpcHRTdGF0ZSk7CiB9CiAKIHZvaWQgV29ya2VyUnVudGltZUFnZW50OjptdXRlQ29uc29s
ZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VyUnVudGltZUFn
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VyUnVudGltZUFnZW50LmgKaW5k
ZXggNmQ0MzM2NDE5YWJhNWNhMzExMGI1MjhmMmQyNzM3NjA4MmE4MTA0OS4uOTZkOWEwYjFjZDll
YTQzODAyNWMxYjhhMmQyMGVkZDZiNmU4NGM5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL1dvcmtlclJ1bnRpbWVBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9Xb3JrZXJSdW50aW1lQWdlbnQuaApAQCAtNDEsNyArNDEsNyBAQCB0eXBlZGVmIFN0cmlu
ZyBFcnJvclN0cmluZzsKIAogY2xhc3MgV29ya2VyUnVudGltZUFnZW50IGZpbmFsIDogcHVibGlj
IEluc3BlY3Rvcjo6SW5zcGVjdG9yUnVudGltZUFnZW50IHsKIHB1YmxpYzoKLSAgICBXb3JrZXJS
dW50aW1lQWdlbnQoSW5zcGVjdG9yOjpJbmplY3RlZFNjcmlwdE1hbmFnZXIqLCBXb3JrZXJHbG9i
YWxTY29wZSopOworICAgIFdvcmtlclJ1bnRpbWVBZ2VudChJbnNwZWN0b3I6OkluamVjdGVkU2Ny
aXB0TWFuYWdlciYsIFdvcmtlckdsb2JhbFNjb3BlKik7CiAgICAgdmlydHVhbCB+V29ya2VyUnVu
dGltZUFnZW50KCkgeyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRC
YWNrZW5kKEluc3BlY3Rvcjo6RnJvbnRlbmRSb3V0ZXIqLCBJbnNwZWN0b3I6OkJhY2tlbmREaXNw
YXRjaGVyKikgb3ZlcnJpZGU7CkBAIC01Niw5ICs1NiwxMCBAQCBwcml2YXRlOgogICAgIHZpcnR1
YWwgSW5zcGVjdG9yOjpJbmplY3RlZFNjcmlwdCBpbmplY3RlZFNjcmlwdEZvckV2YWwoRXJyb3JT
dHJpbmcmLCBjb25zdCBpbnQqIGV4ZWN1dGlvbkNvbnRleHRJZCkgb3ZlcnJpZGU7CiAgICAgdmly
dHVhbCB2b2lkIG11dGVDb25zb2xlKCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHVubXV0
ZUNvbnNvbGUoKSBvdmVycmlkZTsKLSAgICBXb3JrZXJHbG9iYWxTY29wZSogbV93b3JrZXJHbG9i
YWxTY29wZTsKICAgICBSZWZQdHI8SW5zcGVjdG9yOjpSdW50aW1lQmFja2VuZERpc3BhdGNoZXI+
IG1fYmFja2VuZERpc3BhdGNoZXI7Ci0gICAgYm9vbCBtX3BhdXNlZDsKKworICAgIFdvcmtlckds
b2JhbFNjb3BlKiBtX3dvcmtlckdsb2JhbFNjb3BlIHsgbnVsbHB0ciB9OworICAgIGJvb2wgbV9w
YXVzZWQgeyBmYWxzZSB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>260366</attachid>
            <date>2015-09-01 10:03:31 -0700</date>
            <delta_ts>2015-09-01 10:03:31 -0700</delta_ts>
            <desc>Proposed Fix (rebased for EWS)</desc>
            <filename>bug-148612-20150901100312.patch</filename>
            <type>text/plain</type>
            <size>150916</size>
            <attacher name="Blaze Burg">bburg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg5MjA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2
MGQyZTVjOGVhZTdiZDU0OGM5YjgwMzUxNTQ1M2ZiYzRhZTMyYzlkLi40NjBjOTk3ZWJkMTIxMzU2
YzFkNGZmYjY3NWI2NjJmYTI0YTExZTYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2NCBAQAorMjAxNS0wOS0wMSAgQnJpYW4gQnVyZyAgPGJidXJnQGFwcGxlLmNvbT4KKwor
ICAgICAgICBXZWIgSW5zcGVjdG9yOiB0aWdodGVuIHVwIGxpZmV0aW1lcyBmb3IgSW5zcGVjdG9y
Q29udHJvbGxlci1vd25lZCBvYmplY3RzOyBhZGQgYnJhY2UgaW5pdGlhbGl6ZXJzIHRvIGFnZW50
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ4NjEy
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgSm9zZXBoIFBlY29yYXJvLgorCisgICAgICAgIEJvdGgg
SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyIGFuZCBBZ2VudFJlZ2lzdHJ5ICh0aHVzIGFsbCBhZ2VudHMp
IGFyZQorICAgICAgICBvd25lZCBieSBKU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXIu
IFNvLCB1c2UgcmVmZXJlbmNlcy4KKworICAgICAgICBBZGQgYnJhY2UgaW5pdGFsaXplcnMgZm9y
IHNjYWxhciBhbmQgcG9pbnRlciBtZW1iZXJzIGluIGFnZW50IGNsYXNzZXMuCisKKyAgICAgICAg
KiBpbnNwZWN0b3IvQ29uc29sZU1lc3NhZ2UuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpDb25z
b2xlTWVzc2FnZTo6YWRkVG9Gcm9udGVuZCk6CisgICAgICAgIChJbnNwZWN0b3I6OkNvbnNvbGVN
ZXNzYWdlOjp1cGRhdGVSZXBlYXRDb3VudEluQ29uc29sZSk6CisgICAgICAgIChJbnNwZWN0b3I6
OkNvbnNvbGVNZXNzYWdlOjpDb25zb2xlTWVzc2FnZSk6CisgICAgICAgICogaW5zcGVjdG9yL0Nv
bnNvbGVNZXNzYWdlLmg6CisgICAgICAgICogaW5zcGVjdG9yL0pTR2xvYmFsT2JqZWN0SW5zcGVj
dG9yQ29udHJvbGxlci5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6OkpTR2xvYmFsT2JqZWN0SW5z
cGVjdG9yQ29udHJvbGxlcjo6SlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyKToKKyAg
ICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckFnZW50LmNwcDoKKyAgICAgICAgKElu
c3BlY3Rvcjo6SW5zcGVjdG9yQWdlbnQ6Okluc3BlY3RvckFnZW50KToKKyAgICAgICAgKiBpbnNw
ZWN0b3IvYWdlbnRzL0luc3BlY3RvckFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JDb25zb2xlQWdlbnQuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0
b3JDb25zb2xlQWdlbnQ6Okluc3BlY3RvckNvbnNvbGVBZ2VudCk6CisgICAgICAgIChJbnNwZWN0
b3I6Okluc3BlY3RvckNvbnNvbGVBZ2VudDo6ZW5hYmxlKToKKyAgICAgICAgKEluc3BlY3Rvcjo6
SW5zcGVjdG9yQ29uc29sZUFnZW50OjpjbGVhck1lc3NhZ2VzKToKKyAgICAgICAgKEluc3BlY3Rv
cjo6SW5zcGVjdG9yQ29uc29sZUFnZW50OjphZGRNZXNzYWdlVG9Db25zb2xlKToKKyAgICAgICAg
KEluc3BlY3Rvcjo6SW5zcGVjdG9yQ29uc29sZUFnZW50OjphZGRDb25zb2xlTWVzc2FnZSk6Cisg
ICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDb25zb2xlQWdlbnQuaDoKKyAgICAg
ICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwOgorICAgICAg
ICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpJbnNwZWN0b3JEZWJ1Z2dlckFn
ZW50KToKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6cmVtb3Zl
QnJlYWtwb2ludCk6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6
OmdldEZ1bmN0aW9uRGV0YWlscyk6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckRlYnVn
Z2VyQWdlbnQ6OmV2YWx1YXRlT25DYWxsRnJhbWUpOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNw
ZWN0b3JEZWJ1Z2dlckFnZW50OjpkaWRQYXVzZSk6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3Bl
Y3RvckRlYnVnZ2VyQWdlbnQ6OmJyZWFrcG9pbnRBY3Rpb25Qcm9iZSk6CisgICAgICAgIChJbnNw
ZWN0b3I6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmRpZENvbnRpbnVlKToKKyAgICAgICAgKElu
c3BlY3Rvcjo6SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6Y2xlYXJFeGNlcHRpb25WYWx1ZSk6Cisg
ICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50Lmg6CisgICAg
ICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JSdW50aW1lQWdlbnQuY3BwOgorICAgICAg
ICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JSdW50aW1lQWdlbnQ6Okluc3BlY3RvclJ1bnRpbWVBZ2Vu
dCk6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvclJ1bnRpbWVBZ2VudDo6Y2FsbEZ1bmN0
aW9uT24pOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JSdW50aW1lQWdlbnQ6OmdldFBy
b3BlcnRpZXMpOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JSdW50aW1lQWdlbnQ6Omdl
dERpc3BsYXlhYmxlUHJvcGVydGllcyk6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvclJ1
bnRpbWVBZ2VudDo6Z2V0Q29sbGVjdGlvbkVudHJpZXMpOgorICAgICAgICAoSW5zcGVjdG9yOjpJ
bnNwZWN0b3JSdW50aW1lQWdlbnQ6OnNhdmVSZXN1bHQpOgorICAgICAgICAoSW5zcGVjdG9yOjpJ
bnNwZWN0b3JSdW50aW1lQWdlbnQ6OnJlbGVhc2VPYmplY3QpOgorICAgICAgICAoSW5zcGVjdG9y
OjpJbnNwZWN0b3JSdW50aW1lQWdlbnQ6OnJlbGVhc2VPYmplY3RHcm91cCk6CisgICAgICAgICog
aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JSdW50aW1lQWdlbnQuaDoKKyAgICAgICAgKiBpbnNw
ZWN0b3IvYWdlbnRzL0pTR2xvYmFsT2JqZWN0Q29uc29sZUFnZW50LmNwcDoKKyAgICAgICAgKElu
c3BlY3Rvcjo6SlNHbG9iYWxPYmplY3RDb25zb2xlQWdlbnQ6OkpTR2xvYmFsT2JqZWN0Q29uc29s
ZUFnZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0pTR2xvYmFsT2JqZWN0Q29uc29s
ZUFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9KU0dsb2JhbE9iamVjdERlYnVn
Z2VyQWdlbnQuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpKU0dsb2JhbE9iamVjdERlYnVnZ2Vy
QWdlbnQ6OkpTR2xvYmFsT2JqZWN0RGVidWdnZXJBZ2VudCk6CisgICAgICAgIChJbnNwZWN0b3I6
OkpTR2xvYmFsT2JqZWN0RGVidWdnZXJBZ2VudDo6aW5qZWN0ZWRTY3JpcHRGb3JFdmFsKToKKyAg
ICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0pTR2xvYmFsT2JqZWN0RGVidWdnZXJBZ2VudC5oOgor
ICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSlNHbG9iYWxPYmplY3RSdW50aW1lQWdlbnQuY3Bw
OgorICAgICAgICAoSW5zcGVjdG9yOjpKU0dsb2JhbE9iamVjdFJ1bnRpbWVBZ2VudDo6SlNHbG9i
YWxPYmplY3RSdW50aW1lQWdlbnQpOgorICAgICAgICAoSW5zcGVjdG9yOjpKU0dsb2JhbE9iamVj
dFJ1bnRpbWVBZ2VudDo6aW5qZWN0ZWRTY3JpcHRGb3JFdmFsKToKKyAgICAgICAgKiBpbnNwZWN0
b3IvYWdlbnRzL0pTR2xvYmFsT2JqZWN0UnVudGltZUFnZW50Lmg6CisKIDIwMTUtMDgtMzEgIFl1
c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CiAKICAgICAgICAgW0VTNl0gSW50
cm9kdWNlIE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlIGZhbWlsaWVzIGFuZCBjb21waWxlIE1vZHVs
ZSBjb2RlIHRvIGJ5dGVjb2RlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzM1ZTViMWYwMDJkZmUyZGJhYmFmNDE3
Y2MyOWFlMmFkMzhmMDZmOS4uZDE2NGY4OWM1ZjVmZmIyYjZiZjBmNmM1OGFhODFiMTBmZjc1ZGEx
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4MSBAQAorMjAxNS0wOS0wMSAgQnJpYW4gQnVyZyAg
PGJidXJnQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiB0aWdodGVuIHVwIGxp
ZmV0aW1lcyBmb3IgSW5zcGVjdG9yQ29udHJvbGxlci1vd25lZCBvYmplY3RzOyBhZGQgYnJhY2Ug
aW5pdGlhbGl6ZXJzIHRvIGFnZW50cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTQ4NjEyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgSm9zZXBoIFBlY29y
YXJvLgorCisgICAgICAgIEJvdGggSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyIGFuZCBBZ2VudFJlZ2lz
dHJ5ICh0aHVzIGFsbCBhZ2VudHMpIGFyZQorICAgICAgICBvd25lZCBieSBbV29ya2VyXUluc3Bl
Y3RvckNvbnRyb2xsZXIuIFNvLCB1c2UgcmVmZXJlbmNlcy4KKworICAgICAgICBJbnN0cnVtZW50
aW5nQWdlbnRzIGlzIG1vcmFsbHkgb3duZWQgYnkgSW5zcGVjdG9yQ29udHJvbGxlciBhcyB3ZWxs
LCBidXQKKyAgICAgICAgbXVzdCBiZSBhIFJlZiBmb3Igbm93IHNpbmNlIGluc3RydW1lbnRhdGlv
biBjb29raWVzIHRha2UgYSBzdHJvbmcgcmVmZXJlbmNlLgorCisgICAgICAgIEFkZCBicmFjZSBp
bml0YWxpemVycyBmb3Igc2NhbGFyIGFuZCBwb2ludGVyIG1lbWJlcnMgaW4gYWdlbnQgY2xhc3Nl
cy4KKworICAgICAgICBObyBuZXcgdGVzdHMsIG5vIGJlaGF2aW9yIGNoYW5nZS4KKworICAgICAg
ICAqIGluc3BlY3Rvci9JbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50OjpJbnNwZWN0b3JBcHBs
aWNhdGlvbkNhY2hlQWdlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQXBwbGljYXRp
b25DYWNoZUFnZW50Ojp3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZCk6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQ6OmVuYWJsZSk6CisgICAgICAg
ICogaW5zcGVjdG9yL0luc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5oOgorICAgICAgICAq
IGluc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JDU1NBZ2VudDo6SW5zcGVjdG9yQ1NTQWdlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yQ1NTQWdlbnQ6OmVuYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NB
Z2VudDo6ZGlzYWJsZSk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50Lmg6
CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNvbnNvbGVJbnN0cnVtZW50YXRpb24uaDoK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6YWRkTWVzc2FnZVRv
Q29uc29sZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmNv
bnNvbGVDb3VudCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OnN0YXJ0UHJvZmlsaW5nKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6c3RvcFByb2ZpbGluZyk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNvbnRy
b2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6SW5zcGVj
dG9yQ29udHJvbGxlcik6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpj
b25uZWN0RnJvbnRlbmQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6
ZGlzY29ubmVjdEZyb250ZW5kKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xs
ZXI6OmRpc2Nvbm5lY3RBbGxGcm9udGVuZHMpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0
b3JDb250cm9sbGVyLmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpJbnNwZWN0b3JET01BZ2Vu
dCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6ZGlkQ3JlYXRlRnJvbnRl
bmRBbmRCYWNrZW5kKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50Ojp3aWxs
RGVzdHJveUZyb250ZW5kQW5kQmFja2VuZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JE
T01BZ2VudDo6Zm9jdXNOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50
OjpidWlsZE9iamVjdEZvckV2ZW50TGlzdGVuZXIpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yRE9NQWdlbnQ6Om5vZGVGb3JPYmplY3RJZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JET01BZ2VudDo6cmVzb2x2ZU5vZGUpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JE
T01BZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6Okluc3Bl
Y3RvckRPTURlYnVnZ2VyQWdlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NRGVi
dWdnZXJBZ2VudDo6fkluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6ZGVidWdnZXJXYXNFbmFibGVkKToKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6OmRpc2FibGUpOgorICAgICAg
ICAqIGluc3BlY3Rvci9JbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50Lmg6CisgICAgICAgICogaW5z
cGVjdG9yL0luc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JET01TdG9yYWdlQWdlbnQ6Okluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudCk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQ6On5JbnNwZWN0b3JET01TdG9y
YWdlQWdlbnQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JET01TdG9yYWdlQWdlbnQu
aDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JEYXRhYmFzZUFnZW50OjpJbnNwZWN0b3JEYXRhYmFzZUFn
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRhdGFiYXNlQWdlbnQ6On5JbnNwZWN0
b3JEYXRhYmFzZUFnZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VB
Z2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbmRleGVkREJBZ2VudDo6SW5zcGVjdG9ySW5k
ZXhlZERCQWdlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5kZXhlZERCQWdlbnQ6
OnJlcXVlc3REYXRhKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdl
bnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aW5zdHJ1bWVudGlu
Z0FnZW50c0ZvclBhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjppbnN0cnVtZW50aW5nQWdlbnRzRm9yV29ya2VyR2xvYmFsU2NvcGUpOgorICAgICAgICAq
IGluc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6bW91c2VEaWRNb3ZlT3ZlckVsZW1lbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzY3JpcHRzRW5hYmxlZCk6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFNjcm9sbCk6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246Om1hcmtSZXNvdXJj
ZUFzQ2FjaGVkKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
ZGlkTG9hZFJlc291cmNlRnJvbU1lbW9yeUNhY2hlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFJ1bkphdmFTY3JpcHREaWFsb2cpOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzZXNzaW9uQ3JlYXRlZCk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnNlc3Npb25Mb2FkZWQpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzZXNzaW9uTW9kaWZp
ZWQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzZWdtZW50
Q3JlYXRlZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnNl
Z21lbnRDb21wbGV0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjpzZWdtZW50TG9hZGVkKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6c2VnbWVudFVubG9hZGVkKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6Y2FwdHVyZVN0YXJ0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjpjYXB0dXJlU3RvcHBlZCk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnBsYXliYWNrU3RhcnRlZCk6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnBsYXliYWNrUGF1c2VkKToKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6cGxheWJhY2tGaW5pc2hlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnBsYXliYWNrSGl0UG9z
aXRpb24pOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JMYXllclRyZWVBZ2VudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JMYXllclRyZWVBZ2VudDo6SW5zcGVjdG9yTGF5
ZXJUcmVlQWdlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6
OmVuYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JMYXllclRyZWVBZ2VudDo6ZGlz
YWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JMYXllclRyZWVBZ2VudDo6bGF5ZXJz
Rm9yTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JMYXllclRyZWVBZ2VudDo6aWRG
b3JOb2RlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuaDoK
KyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvclBhZ2VBZ2VudDo6SW5zcGVjdG9yUGFnZUFnZW50KToKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvclBhZ2VBZ2VudDo6dGltZXN0YW1wKToKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvclBhZ2VBZ2VudDo6ZW5hYmxlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvclBhZ2VBZ2VudDo6ZGlzYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQYWdl
QWdlbnQ6OmZyYW1lU3RhcnRlZExvYWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
UGFnZUFnZW50OjpzbmFwc2hvdE5vZGUpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JQ
YWdlQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yUmVwbGF5QWdlbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUmVwbGF5QWdlbnQ6Okluc3BlY3RvclJlcGxh
eUFnZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJlcGxheUFnZW50OjpkaWRDcmVh
dGVGcm9udGVuZEFuZEJhY2tlbmQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUmVwbGF5
QWdlbnQ6OndpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKToKKyAgICAgICAgKiBpbnNwZWN0
b3IvSW5zcGVjdG9yUmVwbGF5QWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9y
UmVzb3VyY2VBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JSZXNvdXJjZUFn
ZW50OjpJbnNwZWN0b3JSZXNvdXJjZUFnZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
clJlc291cmNlQWdlbnQ6On5JbnNwZWN0b3JSZXNvdXJjZUFnZW50KToKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvclJlc291cmNlQWdlbnQ6OnRpbWVzdGFtcCk6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjplbmFibGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yUmVzb3VyY2VBZ2VudDo6ZGlzYWJsZSk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3Bl
Y3RvclJlc291cmNlQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxp
bmVBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JUaW1lbGluZUFnZW50Ojpk
aWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
VGltZWxpbmVBZ2VudDo6d2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQpOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6aW50ZXJuYWxTdGFydCk6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JUaW1lbGluZUFnZW50OjppbnRlcm5hbFN0b3ApOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6dGltZXN0YW1wKToKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OnN0YXJ0RnJvbUNvbnNvbGUpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6d2lsbENhbGxGdW5jdGlvbik6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JUaW1lbGluZUFnZW50Ojp3aWxsRXZhbHVhdGVT
Y3JpcHQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6SW5zcGVj
dG9yVGltZWxpbmVBZ2VudCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5l
QWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yV2ViQWdlbnRCYXNlLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JBZ2VudEJhc2U6Okluc3BlY3RvckFnZW50QmFzZSk6
CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvcldvcmtlckFnZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvcldvcmtlckFnZW50OjpJbnNwZWN0b3JXb3JrZXJBZ2VudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JXb3JrZXJBZ2VudDo6fkluc3BlY3RvcldvcmtlckFn
ZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yV29ya2VyQWdlbnQuaDoKKyAgICAg
ICAgKiBpbnNwZWN0b3IvSW5zdHJ1bWVudGluZ0FnZW50cy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJbnN0cnVtZW50aW5nQWdlbnRzOjpJbnN0cnVtZW50aW5nQWdlbnRzKTogRGVsZXRlZC4KKyAg
ICAgICAgKiBpbnNwZWN0b3IvSW5zdHJ1bWVudGluZ0FnZW50cy5oOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zdHJ1bWVudGluZ0FnZW50czo6Y3JlYXRlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvUGFn
ZUNvbnNvbGVBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlQ29uc29sZUFnZW50OjpQ
YWdlQ29uc29sZUFnZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VDb25zb2xlQWdlbnQ6OmFk
ZEluc3BlY3RlZE5vZGUpOgorICAgICAgICAqIGluc3BlY3Rvci9QYWdlQ29uc29sZUFnZW50Lmg6
CisgICAgICAgICogaW5zcGVjdG9yL1BhZ2VEZWJ1Z2dlckFnZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlBhZ2VEZWJ1Z2dlckFnZW50OjpQYWdlRGVidWdnZXJBZ2VudCk6CisgICAgICAgIChX
ZWJDb3JlOjpQYWdlRGVidWdnZXJBZ2VudDo6ZW5hYmxlKToKKyAgICAgICAgKFdlYkNvcmU6OlBh
Z2VEZWJ1Z2dlckFnZW50OjpkaXNhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VEZWJ1Z2dl
ckFnZW50OjppbmplY3RlZFNjcmlwdEZvckV2YWwpOgorICAgICAgICAqIGluc3BlY3Rvci9QYWdl
RGVidWdnZXJBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9QYWdlUnVudGltZUFnZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VSdW50aW1lQWdlbnQ6OlBhZ2VSdW50aW1lQWdlbnQp
OgorICAgICAgICAoV2ViQ29yZTo6UGFnZVJ1bnRpbWVBZ2VudDo6aW5qZWN0ZWRTY3JpcHRGb3JF
dmFsKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VSdW50aW1lQWdlbnQ6Om5vdGlmeUNvbnRleHRD
cmVhdGVkKToKKyAgICAgICAgKiBpbnNwZWN0b3IvUGFnZVJ1bnRpbWVBZ2VudC5oOgorICAgICAg
ICAqIGluc3BlY3Rvci9XZWJDb25zb2xlQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
Q29uc29sZUFnZW50OjpXZWJDb25zb2xlQWdlbnQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29u
c29sZUFnZW50OjpmcmFtZVdpbmRvd0Rpc2NhcmRlZCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJD
b25zb2xlQWdlbnQ6OmRpZEZpbmlzaFhIUkxvYWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
Q29uc29sZUFnZW50OjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
Q29uc29sZUFnZW50OjpkaWRGYWlsTG9hZGluZyk6CisgICAgICAgICogaW5zcGVjdG9yL1dlYkNv
bnNvbGVBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9XZWJEZWJ1Z2dlckFnZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OldlYkRlYnVnZ2VyQWdlbnQ6OldlYkRlYnVnZ2VyQWdlbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViRGVidWdnZXJBZ2VudDo6ZW5hYmxlKToKKyAgICAgICAgKFdl
YkNvcmU6OldlYkRlYnVnZ2VyQWdlbnQ6OmRpc2FibGUpOgorICAgICAgICAqIGluc3BlY3Rvci9X
ZWJEZWJ1Z2dlckFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL1dvcmtlckNvbnNvbGVBZ2Vu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJDb25zb2xlQWdlbnQ6OldvcmtlckNvbnNv
bGVBZ2VudCk6CisgICAgICAgICogaW5zcGVjdG9yL1dvcmtlckNvbnNvbGVBZ2VudC5oOgorICAg
ICAgICAqIGluc3BlY3Rvci9Xb3JrZXJEZWJ1Z2dlckFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OldvcmtlckRlYnVnZ2VyQWdlbnQ6OldvcmtlckRlYnVnZ2VyQWdlbnQpOgorICAgICAgICAo
V2ViQ29yZTo6V29ya2VyRGVidWdnZXJBZ2VudDo6aW5qZWN0ZWRTY3JpcHRGb3JFdmFsKToKKyAg
ICAgICAgKiBpbnNwZWN0b3IvV29ya2VyRGVidWdnZXJBZ2VudC5oOgorICAgICAgICAqIGluc3Bl
Y3Rvci9Xb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oldv
cmtlckluc3BlY3RvckNvbnRyb2xsZXI6Oldvcmtlckluc3BlY3RvckNvbnRyb2xsZXIpOgorICAg
ICAgICAqIGluc3BlY3Rvci9Xb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyLmg6CisgICAgICAgICog
aW5zcGVjdG9yL1dvcmtlclJ1bnRpbWVBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3Jr
ZXJSdW50aW1lQWdlbnQ6OldvcmtlclJ1bnRpbWVBZ2VudCk6CisgICAgICAgIChXZWJDb3JlOjpX
b3JrZXJSdW50aW1lQWdlbnQ6OmluamVjdGVkU2NyaXB0Rm9yRXZhbCk6CisgICAgICAgICogaW5z
cGVjdG9yL1dvcmtlclJ1bnRpbWVBZ2VudC5oOgorCiAyMDE1LTA5LTAxICBKb3NlcGggUGVjb3Jh
cm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CiAKICAgICAgICAgUG9zc2libGUgQ0ZBcnJheSBsZWFr
IGluIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGLmNwcApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9Db25zb2xlTWVzc2FnZS5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0NvbnNvbGVNZXNzYWdlLmNwcAppbmRleCA5YWMwZGRl
ZTJkYzkwYmFmODE4ZmFlM2EyZDQxNmRkNThhYTkxNDQ1Li42ZWY2N2NhZWNiZDcxZDk2MjY5OWQx
YWRhODdkN2FmMzk5N2I1ZDNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL0NvbnNvbGVNZXNzYWdlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL0NvbnNvbGVNZXNzYWdlLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMDcsIDIwMDgsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDA3LCAyMDA4LCAyMDE0LCAyMDE1IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAwOCBNYXR0IExpbGVrIDx3ZWJraXRA
bWF0dGxpbGVrLmNvbT4KICAqIENvcHlyaWdodCAoQykgMjAwOSwgMjAxMCBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKQEAgLTQ5LDkgKzQ5LDYgQEAgQ29uc29sZU1lc3NhZ2U6
OkNvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2Ugc291cmNlLCBNZXNzYWdlVHlwZSB0eXBlLCBN
ZXNzYWdlTGUKICAgICAsIG1fbGV2ZWwobGV2ZWwpCiAgICAgLCBtX21lc3NhZ2UobWVzc2FnZSkK
ICAgICAsIG1fdXJsKCkKLSAgICAsIG1fbGluZSgwKQotICAgICwgbV9jb2x1bW4oMCkKLSAgICAs
IG1fcmVwZWF0Q291bnQoMSkKICAgICAsIG1fcmVxdWVzdElkKElkZW50aWZpZXJzRmFjdG9yeTo6
cmVxdWVzdElkKHJlcXVlc3RJZGVudGlmaWVyKSkKIHsKIH0KQEAgLTY0LDcgKzYxLDYgQEAgQ29u
c29sZU1lc3NhZ2U6OkNvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2Ugc291cmNlLCBNZXNzYWdl
VHlwZSB0eXBlLCBNZXNzYWdlTGUKICAgICAsIG1fdXJsKHVybCkKICAgICAsIG1fbGluZShsaW5l
KQogICAgICwgbV9jb2x1bW4oY29sdW1uKQotICAgICwgbV9yZXBlYXRDb3VudCgxKQogICAgICwg
bV9yZXF1ZXN0SWQoSWRlbnRpZmllcnNGYWN0b3J5OjpyZXF1ZXN0SWQocmVxdWVzdElkZW50aWZp
ZXIpKQogewogICAgIGF1dG9nZW5lcmF0ZU1ldGFkYXRhKHN0YXRlKTsKQEAgLTc2LDkgKzcyLDYg
QEAgQ29uc29sZU1lc3NhZ2U6OkNvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2Ugc291cmNlLCBN
ZXNzYWdlVHlwZSB0eXBlLCBNZXNzYWdlTGUKICAgICAsIG1fbGV2ZWwobGV2ZWwpCiAgICAgLCBt
X21lc3NhZ2UobWVzc2FnZSkKICAgICAsIG1fdXJsKCkKLSAgICAsIG1fbGluZSgwKQotICAgICwg
bV9jb2x1bW4oMCkKLSAgICAsIG1fcmVwZWF0Q291bnQoMSkKICAgICAsIG1fcmVxdWVzdElkKElk
ZW50aWZpZXJzRmFjdG9yeTo6cmVxdWVzdElkKHJlcXVlc3RJZGVudGlmaWVyKSkKIHsKICAgICBt
X2NhbGxTdGFjayA9IGNhbGxTdGFjazsKQEAgLTk4LDkgKzkxLDYgQEAgQ29uc29sZU1lc3NhZ2U6
OkNvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2Ugc291cmNlLCBNZXNzYWdlVHlwZSB0eXBlLCBN
ZXNzYWdlTGUKICAgICAsIG1fbWVzc2FnZShtZXNzYWdlKQogICAgICwgbV9hcmd1bWVudHMoYXJn
dW1lbnRzKQogICAgICwgbV91cmwoKQotICAgICwgbV9saW5lKDApCi0gICAgLCBtX2NvbHVtbigw
KQotICAgICwgbV9yZXBlYXRDb3VudCgxKQogICAgICwgbV9yZXF1ZXN0SWQoSWRlbnRpZmllcnNG
YWN0b3J5OjpyZXF1ZXN0SWQocmVxdWVzdElkZW50aWZpZXIpKQogewogICAgIGF1dG9nZW5lcmF0
ZU1ldGFkYXRhKHN0YXRlKTsKQEAgLTE3OSw3ICsxNjksNyBAQCBzdGF0aWMgSW5zcGVjdG9yOjpQ
cm90b2NvbDo6Q29uc29sZTo6Q29uc29sZU1lc3NhZ2U6OkxldmVsIG1lc3NhZ2VMZXZlbFZhbHVl
KE1lcwogICAgIHJldHVybiBJbnNwZWN0b3I6OlByb3RvY29sOjpDb25zb2xlOjpDb25zb2xlTWVz
c2FnZTo6TGV2ZWw6OkxvZzsKIH0KIAotdm9pZCBDb25zb2xlTWVzc2FnZTo6YWRkVG9Gcm9udGVu
ZChDb25zb2xlRnJvbnRlbmREaXNwYXRjaGVyKiBjb25zb2xlRnJvbnRlbmREaXNwYXRjaGVyLCBJ
bmplY3RlZFNjcmlwdE1hbmFnZXIqIGluamVjdGVkU2NyaXB0TWFuYWdlciwgYm9vbCBnZW5lcmF0
ZVByZXZpZXcpCit2b2lkIENvbnNvbGVNZXNzYWdlOjphZGRUb0Zyb250ZW5kKENvbnNvbGVGcm9u
dGVuZERpc3BhdGNoZXImIGNvbnNvbGVGcm9udGVuZERpc3BhdGNoZXIsIEluamVjdGVkU2NyaXB0
TWFuYWdlciYgaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLCBib29sIGdlbmVyYXRlUHJldmlldykKIHsK
ICAgICBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q29uc29sZTo6Q29uc29sZU1lc3NhZ2U+IGpz
b25PYmogPSBJbnNwZWN0b3I6OlByb3RvY29sOjpDb25zb2xlOjpDb25zb2xlTWVzc2FnZTo6Y3Jl
YXRlKCkKICAgICAgICAgLnNldFNvdXJjZShtZXNzYWdlU291cmNlVmFsdWUobV9zb3VyY2UpKQpA
QCAtMTk4LDcgKzE4OCw3IEBAIHZvaWQgQ29uc29sZU1lc3NhZ2U6OmFkZFRvRnJvbnRlbmQoQ29u
c29sZUZyb250ZW5kRGlzcGF0Y2hlciogY29uc29sZUZyb250ZW5kRGlzCiAgICAgICAgIGpzb25P
YmotPnNldE5ldHdvcmtSZXF1ZXN0SWQobV9yZXF1ZXN0SWQpOwogCiAgICAgaWYgKG1fYXJndW1l
bnRzICYmIG1fYXJndW1lbnRzLT5hcmd1bWVudENvdW50KCkpIHsKLSAgICAgICAgSW5qZWN0ZWRT
Y3JpcHQgaW5qZWN0ZWRTY3JpcHQgPSBpbmplY3RlZFNjcmlwdE1hbmFnZXItPmluamVjdGVkU2Ny
aXB0Rm9yKG1fYXJndW1lbnRzLT5nbG9iYWxTdGF0ZSgpKTsKKyAgICAgICAgSW5qZWN0ZWRTY3Jp
cHQgaW5qZWN0ZWRTY3JpcHQgPSBpbmplY3RlZFNjcmlwdE1hbmFnZXIuaW5qZWN0ZWRTY3JpcHRG
b3IobV9hcmd1bWVudHMtPmdsb2JhbFN0YXRlKCkpOwogICAgICAgICBpZiAoIWluamVjdGVkU2Ny
aXB0Lmhhc05vVmFsdWUoKSkgewogICAgICAgICAgICAgUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4+IGpzb25B
cmdzID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVu
dGltZTo6UmVtb3RlT2JqZWN0Pjo6Y3JlYXRlKCk7CiAgICAgICAgICAgICBpZiAobV90eXBlID09
IE1lc3NhZ2VUeXBlOjpUYWJsZSAmJiBnZW5lcmF0ZVByZXZpZXcgJiYgbV9hcmd1bWVudHMtPmFy
Z3VtZW50Q291bnQoKSkgewpAQCAtMjI5LDEyICsyMTksMTIgQEAgdm9pZCBDb25zb2xlTWVzc2Fn
ZTo6YWRkVG9Gcm9udGVuZChDb25zb2xlRnJvbnRlbmREaXNwYXRjaGVyKiBjb25zb2xlRnJvbnRl
bmREaXMKICAgICBpZiAobV9jYWxsU3RhY2spCiAgICAgICAgIGpzb25PYmotPnNldFN0YWNrVHJh
Y2UobV9jYWxsU3RhY2stPmJ1aWxkSW5zcGVjdG9yQXJyYXkoKSk7CiAKLSAgICBjb25zb2xlRnJv
bnRlbmREaXNwYXRjaGVyLT5tZXNzYWdlQWRkZWQoV1RGOjptb3ZlKGpzb25PYmopKTsKKyAgICBj
b25zb2xlRnJvbnRlbmREaXNwYXRjaGVyLm1lc3NhZ2VBZGRlZChXVEY6Om1vdmUoanNvbk9iaikp
OwogfQogCi12b2lkIENvbnNvbGVNZXNzYWdlOjp1cGRhdGVSZXBlYXRDb3VudEluQ29uc29sZShD
b25zb2xlRnJvbnRlbmREaXNwYXRjaGVyKiBjb25zb2xlRnJvbnRlbmREaXNwYXRjaGVyKQordm9p
ZCBDb25zb2xlTWVzc2FnZTo6dXBkYXRlUmVwZWF0Q291bnRJbkNvbnNvbGUoQ29uc29sZUZyb250
ZW5kRGlzcGF0Y2hlciYgY29uc29sZUZyb250ZW5kRGlzcGF0Y2hlcikKIHsKLSAgICBjb25zb2xl
RnJvbnRlbmREaXNwYXRjaGVyLT5tZXNzYWdlUmVwZWF0Q291bnRVcGRhdGVkKG1fcmVwZWF0Q291
bnQpOworICAgIGNvbnNvbGVGcm9udGVuZERpc3BhdGNoZXIubWVzc2FnZVJlcGVhdENvdW50VXBk
YXRlZChtX3JlcGVhdENvdW50KTsKIH0KIAogYm9vbCBDb25zb2xlTWVzc2FnZTo6aXNFcXVhbChD
b25zb2xlTWVzc2FnZSogbXNnKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9Db25zb2xlTWVzc2FnZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9Db25zb2xlTWVzc2FnZS5oCmluZGV4IGE3M2UyODYzMGFmYzlkNzhkOWI5NDA5NDY4
ZmE0ODQ1Mzk5MTljZTkuLjIyOTZmMWMyOGVmYjg4N2MzMDVjZjU1MjkzZTJlZWE3M2ZlMDI5YTUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvQ29uc29sZU1lc3Nh
Z2UuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0NvbnNvbGVNZXNzYWdl
LmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA3LCAyMDA4IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNywgMjAwOCwg
MjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIw
MDggTWF0dCBMaWxlayA8d2Via2l0QG1hdHRsaWxlay5jb20+CiAgKiBDb3B5cmlnaHQgKEMpIDIw
MDksIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCkBAIC01NSw4ICs1
NSw4IEBAIHB1YmxpYzoKICAgICBDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlLCBNZXNzYWdl
VHlwZSwgTWVzc2FnZUxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIFBhc3NSZWZQdHI8U2Ny
aXB0QXJndW1lbnRzPiwgSlNDOjpFeGVjU3RhdGUqLCB1bnNpZ25lZCBsb25nIHJlcXVlc3RJZGVu
dGlmaWVyID0gMCk7CiAgICAgfkNvbnNvbGVNZXNzYWdlKCk7CiAKLSAgICB2b2lkIGFkZFRvRnJv
bnRlbmQoQ29uc29sZUZyb250ZW5kRGlzcGF0Y2hlciosIEluamVjdGVkU2NyaXB0TWFuYWdlcios
IGJvb2wgZ2VuZXJhdGVQcmV2aWV3KTsKLSAgICB2b2lkIHVwZGF0ZVJlcGVhdENvdW50SW5Db25z
b2xlKENvbnNvbGVGcm9udGVuZERpc3BhdGNoZXIqKTsKKyAgICB2b2lkIGFkZFRvRnJvbnRlbmQo
Q29uc29sZUZyb250ZW5kRGlzcGF0Y2hlciYsIEluamVjdGVkU2NyaXB0TWFuYWdlciYsIGJvb2wg
Z2VuZXJhdGVQcmV2aWV3KTsKKyAgICB2b2lkIHVwZGF0ZVJlcGVhdENvdW50SW5Db25zb2xlKENv
bnNvbGVGcm9udGVuZERpc3BhdGNoZXImKTsKIAogICAgIE1lc3NhZ2VTb3VyY2Ugc291cmNlKCkg
Y29uc3QgeyByZXR1cm4gbV9zb3VyY2U7IH0KICAgICBjb25zdCBTdHJpbmcmIG1lc3NhZ2UoKSBj
b25zdCB7IHJldHVybiBtX21lc3NhZ2U7IH0KQEAgLTg0LDkgKzg0LDkgQEAgcHJpdmF0ZToKICAg
ICBSZWZQdHI8U2NyaXB0QXJndW1lbnRzPiBtX2FyZ3VtZW50czsKICAgICBSZWZQdHI8U2NyaXB0
Q2FsbFN0YWNrPiBtX2NhbGxTdGFjazsKICAgICBTdHJpbmcgbV91cmw7Ci0gICAgdW5zaWduZWQg
bV9saW5lOwotICAgIHVuc2lnbmVkIG1fY29sdW1uOwotICAgIHVuc2lnbmVkIG1fcmVwZWF0Q291
bnQ7CisgICAgdW5zaWduZWQgbV9saW5lIHsgMCB9OworICAgIHVuc2lnbmVkIG1fY29sdW1uIHsg
MCB9OworICAgIHVuc2lnbmVkIG1fcmVwZWF0Q291bnQgeyAxIH07CiAgICAgU3RyaW5nIG1fcmVx
dWVzdElkOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9KU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXIuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9KU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXIuY3BwCmlu
ZGV4IDExZDg2ZWQzMjk3NTAzMTczNzE2YTg1ZDkzNTgwOGZjNjc3YjVkNDguLjE0M2Q3ZjEzNDdl
YWIyYzVmMWZjMWMzNzk4Y2I4NWYzMjQ3NTI5MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTR2xvYmFsT2JqZWN0SW5zcGVj
dG9yQ29udHJvbGxlci5jcHAKQEAgLTcyLDkgKzcyLDkgQEAgSlNHbG9iYWxPYmplY3RJbnNwZWN0
b3JDb250cm9sbGVyOjpKU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXIoSlNHbG9iYWxP
YmoKICNlbmRpZgogewogICAgIGF1dG8gaW5zcGVjdG9yQWdlbnQgPSBzdGQ6Om1ha2VfdW5pcXVl
PEluc3BlY3RvckFnZW50PigqdGhpcyk7Ci0gICAgYXV0byBydW50aW1lQWdlbnQgPSBzdGQ6Om1h
a2VfdW5pcXVlPEpTR2xvYmFsT2JqZWN0UnVudGltZUFnZW50PihtX2luamVjdGVkU2NyaXB0TWFu
YWdlci5nZXQoKSwgbV9nbG9iYWxPYmplY3QpOwotICAgIGF1dG8gY29uc29sZUFnZW50ID0gc3Rk
OjptYWtlX3VuaXF1ZTxKU0dsb2JhbE9iamVjdENvbnNvbGVBZ2VudD4obV9pbmplY3RlZFNjcmlw
dE1hbmFnZXIuZ2V0KCkpOwotICAgIGF1dG8gZGVidWdnZXJBZ2VudCA9IHN0ZDo6bWFrZV91bmlx
dWU8SlNHbG9iYWxPYmplY3REZWJ1Z2dlckFnZW50PihtX2luamVjdGVkU2NyaXB0TWFuYWdlci5n
ZXQoKSwgbV9nbG9iYWxPYmplY3QsIGNvbnNvbGVBZ2VudC5nZXQoKSk7CisgICAgYXV0byBydW50
aW1lQWdlbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEpTR2xvYmFsT2JqZWN0UnVudGltZUFnZW50Pigq
bV9pbmplY3RlZFNjcmlwdE1hbmFnZXIsIG1fZ2xvYmFsT2JqZWN0KTsKKyAgICBhdXRvIGNvbnNv
bGVBZ2VudCA9IHN0ZDo6bWFrZV91bmlxdWU8SlNHbG9iYWxPYmplY3RDb25zb2xlQWdlbnQ+KCpt
X2luamVjdGVkU2NyaXB0TWFuYWdlcik7CisgICAgYXV0byBkZWJ1Z2dlckFnZW50ID0gc3RkOjpt
YWtlX3VuaXF1ZTxKU0dsb2JhbE9iamVjdERlYnVnZ2VyQWdlbnQ+KCptX2luamVjdGVkU2NyaXB0
TWFuYWdlciwgbV9nbG9iYWxPYmplY3QsIGNvbnNvbGVBZ2VudC5nZXQoKSk7CiAKICAgICBtX2lu
c3BlY3RvckFnZW50ID0gaW5zcGVjdG9yQWdlbnQuZ2V0KCk7CiAgICAgbV9kZWJ1Z2dlckFnZW50
ID0gZGVidWdnZXJBZ2VudC5nZXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckFnZW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckFnZW50LmNwcAppbmRleCAwNTM4NjkwMWU2
MWU3ZmJjZGVjZTBiYzE1MjkwZDlmNWJhY2UwMTg4Li43YjJmM2NmMTgwYzRlNzgyODhkZDA5YzA5
MjQ2OTQ5MTljNjc5ODRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL2FnZW50cy9JbnNwZWN0b3JBZ2VudC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQWdlbnQuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDctMjAxMCwgMjAxNSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDggTWF0dCBMaWxl
ayA8d2Via2l0QG1hdHRsaWxlay5jb20+CiAgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCkBAIC00MCw3ICs0MCw2IEBAIG5hbWVzcGFjZSBJ
bnNwZWN0b3IgewogSW5zcGVjdG9yQWdlbnQ6Okluc3BlY3RvckFnZW50KEluc3BlY3RvckVudmly
b25tZW50JiBlbnZpcm9ubWVudCkKICAgICA6IEluc3BlY3RvckFnZW50QmFzZShBU0NJSUxpdGVy
YWwoIkluc3BlY3RvciIpKQogICAgICwgbV9lbnZpcm9ubWVudChlbnZpcm9ubWVudCkKLSAgICAs
IG1fZW5hYmxlZChmYWxzZSkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQWdlbnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckFnZW50LmgKaW5kZXggNGM2ZWY3ODJjMTc3
ZmUyYzg1YjI4YWRlYTVlNjRkYzczNjY5ZjljNS4uYjcxZjFjZWNmZmMyYzNkOWJjZjBkMzk3ODIz
YTUzM2ZmNjM0OWZlYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvSW5zcGVjdG9yQWdlbnQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JBZ2VudC5oCkBAIC03NSw3ICs3NSw3IEBAIHByaXZhdGU6
CiAjaWYgRU5BQkxFKElOU1BFQ1RPUl9BTFRFUk5BVEVfRElTUEFUQ0hFUlMpCiAgICAgUmVmUHRy
PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PFN0cmluZz4+IG1fcGVuZGluZ0V4dHJhRG9tYWlu
c0RhdGE7CiAjZW5kaWYKLSAgICBib29sIG1fZW5hYmxlZDsKKyAgICBib29sIG1fZW5hYmxlZCB7
IGZhbHNlIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBJbnNwZWN0b3IKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNvbnNvbGVBZ2Vu
dC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JD
b25zb2xlQWdlbnQuY3BwCmluZGV4IDlmZmQwNDg0ZjI4MDYyYzI5YmNhZGI0YjliOWQzNzBiMWY3
MTEzN2YuLjg4ZDgxNTE4MjZkZTQ1Nzc3NTI4MDgyNjA5NGZjZWE2ZWFiNDE3NjggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNvbnNv
bGVBZ2VudC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9yQ29uc29sZUFnZW50LmNwcApAQCAtNDIsMTIgKzQyLDkgQEAgbmFtZXNwYWNlIElu
c3BlY3RvciB7CiBzdGF0aWMgY29uc3QgdW5zaWduZWQgbWF4aW11bUNvbnNvbGVNZXNzYWdlcyA9
IDEwMDA7CiBzdGF0aWMgY29uc3QgaW50IGV4cGlyZUNvbnNvbGVNZXNzYWdlc1N0ZXAgPSAxMDA7
CiAKLUluc3BlY3RvckNvbnNvbGVBZ2VudDo6SW5zcGVjdG9yQ29uc29sZUFnZW50KEluamVjdGVk
U2NyaXB0TWFuYWdlciogaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKQorSW5zcGVjdG9yQ29uc29sZUFn
ZW50OjpJbnNwZWN0b3JDb25zb2xlQWdlbnQoSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyJiBpbmplY3Rl
ZFNjcmlwdE1hbmFnZXIpCiAgICAgOiBJbnNwZWN0b3JBZ2VudEJhc2UoQVNDSUlMaXRlcmFsKCJD
b25zb2xlIikpCiAgICAgLCBtX2luamVjdGVkU2NyaXB0TWFuYWdlcihpbmplY3RlZFNjcmlwdE1h
bmFnZXIpCi0gICAgLCBtX3ByZXZpb3VzTWVzc2FnZShudWxscHRyKQotICAgICwgbV9leHBpcmVk
Q29uc29sZU1lc3NhZ2VDb3VudCgwKQotICAgICwgbV9lbmFibGVkKGZhbHNlKQogewogfQogCkBA
IC03OSwxMiArNzYsMTIgQEAgdm9pZCBJbnNwZWN0b3JDb25zb2xlQWdlbnQ6OmVuYWJsZShFcnJv
clN0cmluZyYpCiAKICAgICBpZiAobV9leHBpcmVkQ29uc29sZU1lc3NhZ2VDb3VudCkgewogICAg
ICAgICBDb25zb2xlTWVzc2FnZSBleHBpcmVkTWVzc2FnZShNZXNzYWdlU291cmNlOjpPdGhlciwg
TWVzc2FnZVR5cGU6OkxvZywgTWVzc2FnZUxldmVsOjpXYXJuaW5nLCBTdHJpbmc6OmZvcm1hdCgi
JWQgY29uc29sZSBtZXNzYWdlcyBhcmUgbm90IHNob3duLiIsIG1fZXhwaXJlZENvbnNvbGVNZXNz
YWdlQ291bnQpKTsKLSAgICAgICAgZXhwaXJlZE1lc3NhZ2UuYWRkVG9Gcm9udGVuZChtX2Zyb250
ZW5kRGlzcGF0Y2hlci5nZXQoKSwgbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIsIGZhbHNlKTsKKyAg
ICAgICAgZXhwaXJlZE1lc3NhZ2UuYWRkVG9Gcm9udGVuZCgqbV9mcm9udGVuZERpc3BhdGNoZXIs
IG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLCBmYWxzZSk7CiAgICAgfQogCiAgICAgc2l6ZV90IG1l
c3NhZ2VDb3VudCA9IG1fY29uc29sZU1lc3NhZ2VzLnNpemUoKTsKICAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IG1lc3NhZ2VDb3VudDsgKytpKQotICAgICAgICBtX2NvbnNvbGVNZXNzYWdlc1tp
XS0+YWRkVG9Gcm9udGVuZChtX2Zyb250ZW5kRGlzcGF0Y2hlci5nZXQoKSwgbV9pbmplY3RlZFNj
cmlwdE1hbmFnZXIsIGZhbHNlKTsKKyAgICAgICAgbV9jb25zb2xlTWVzc2FnZXNbaV0tPmFkZFRv
RnJvbnRlbmQoKm1fZnJvbnRlbmREaXNwYXRjaGVyLCBtX2luamVjdGVkU2NyaXB0TWFuYWdlciwg
ZmFsc2UpOwogfQogCiB2b2lkIEluc3BlY3RvckNvbnNvbGVBZ2VudDo6ZGlzYWJsZShFcnJvclN0
cmluZyYpCkBAIC0xMDEsNyArOTgsNyBAQCB2b2lkIEluc3BlY3RvckNvbnNvbGVBZ2VudDo6Y2xl
YXJNZXNzYWdlcyhFcnJvclN0cmluZyYpCiAgICAgbV9leHBpcmVkQ29uc29sZU1lc3NhZ2VDb3Vu
dCA9IDA7CiAgICAgbV9wcmV2aW91c01lc3NhZ2UgPSBudWxscHRyOwogCi0gICAgbV9pbmplY3Rl
ZFNjcmlwdE1hbmFnZXItPnJlbGVhc2VPYmplY3RHcm91cChBU0NJSUxpdGVyYWwoImNvbnNvbGUi
KSk7CisgICAgbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIucmVsZWFzZU9iamVjdEdyb3VwKEFTQ0lJ
TGl0ZXJhbCgiY29uc29sZSIpKTsKIAogICAgIGlmIChtX2Zyb250ZW5kRGlzcGF0Y2hlciAmJiBt
X2VuYWJsZWQpCiAgICAgICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT5tZXNzYWdlc0NsZWFyZWQo
KTsKQEAgLTExOCw3ICsxMTUsNyBAQCB2b2lkIEluc3BlY3RvckNvbnNvbGVBZ2VudDo6cmVzZXQo
KQogCiB2b2lkIEluc3BlY3RvckNvbnNvbGVBZ2VudDo6YWRkTWVzc2FnZVRvQ29uc29sZShzdGQ6
OnVuaXF1ZV9wdHI8Q29uc29sZU1lc3NhZ2U+IG1lc3NhZ2UpCiB7Ci0gICAgaWYgKCFtX2luamVj
dGVkU2NyaXB0TWFuYWdlci0+aW5zcGVjdG9yRW52aXJvbm1lbnQoKS5kZXZlbG9wZXJFeHRyYXNF
bmFibGVkKCkpCisgICAgaWYgKCFtX2luamVjdGVkU2NyaXB0TWFuYWdlci5pbnNwZWN0b3JFbnZp
cm9ubWVudCgpLmRldmVsb3BlckV4dHJhc0VuYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgaWYgKG1lc3NhZ2UtPnR5cGUoKSA9PSBNZXNzYWdlVHlwZTo6Q2xlYXIpIHsKQEAgLTIwMCwx
OCArMTk3LDE4IEBAIHN0YXRpYyBib29sIGlzR3JvdXBNZXNzYWdlKE1lc3NhZ2VUeXBlIHR5cGUp
CiAKIHZvaWQgSW5zcGVjdG9yQ29uc29sZUFnZW50OjphZGRDb25zb2xlTWVzc2FnZShzdGQ6OnVu
aXF1ZV9wdHI8Q29uc29sZU1lc3NhZ2U+IGNvbnNvbGVNZXNzYWdlKQogewotICAgIEFTU0VSVCht
X2luamVjdGVkU2NyaXB0TWFuYWdlci0+aW5zcGVjdG9yRW52aXJvbm1lbnQoKS5kZXZlbG9wZXJF
eHRyYXNFbmFibGVkKCkpOworICAgIEFTU0VSVChtX2luamVjdGVkU2NyaXB0TWFuYWdlci5pbnNw
ZWN0b3JFbnZpcm9ubWVudCgpLmRldmVsb3BlckV4dHJhc0VuYWJsZWQoKSk7CiAgICAgQVNTRVJU
X0FSRyhjb25zb2xlTWVzc2FnZSwgY29uc29sZU1lc3NhZ2UpOwogCiAgICAgaWYgKG1fcHJldmlv
dXNNZXNzYWdlICYmICFpc0dyb3VwTWVzc2FnZShtX3ByZXZpb3VzTWVzc2FnZS0+dHlwZSgpKSAm
JiBtX3ByZXZpb3VzTWVzc2FnZS0+aXNFcXVhbChjb25zb2xlTWVzc2FnZS5nZXQoKSkpIHsKICAg
ICAgICAgbV9wcmV2aW91c01lc3NhZ2UtPmluY3JlbWVudENvdW50KCk7CiAgICAgICAgIGlmICht
X2Zyb250ZW5kRGlzcGF0Y2hlciAmJiBtX2VuYWJsZWQpCi0gICAgICAgICAgICBtX3ByZXZpb3Vz
TWVzc2FnZS0+dXBkYXRlUmVwZWF0Q291bnRJbkNvbnNvbGUobV9mcm9udGVuZERpc3BhdGNoZXIu
Z2V0KCkpOworICAgICAgICAgICAgbV9wcmV2aW91c01lc3NhZ2UtPnVwZGF0ZVJlcGVhdENvdW50
SW5Db25zb2xlKCptX2Zyb250ZW5kRGlzcGF0Y2hlcik7CiAgICAgfSBlbHNlIHsKICAgICAgICAg
bV9wcmV2aW91c01lc3NhZ2UgPSBjb25zb2xlTWVzc2FnZS5nZXQoKTsKICAgICAgICAgbV9jb25z
b2xlTWVzc2FnZXMuYXBwZW5kKFdURjo6bW92ZShjb25zb2xlTWVzc2FnZSkpOwogICAgICAgICBp
ZiAobV9mcm9udGVuZERpc3BhdGNoZXIgJiYgbV9lbmFibGVkKQotICAgICAgICAgICAgbV9wcmV2
aW91c01lc3NhZ2UtPmFkZFRvRnJvbnRlbmQobV9mcm9udGVuZERpc3BhdGNoZXIuZ2V0KCksIG1f
aW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLCB0cnVlKTsKKyAgICAgICAgICAgIG1fcHJldmlvdXNNZXNz
YWdlLT5hZGRUb0Zyb250ZW5kKCptX2Zyb250ZW5kRGlzcGF0Y2hlciwgbV9pbmplY3RlZFNjcmlw
dE1hbmFnZXIsIHRydWUpOwogICAgIH0KIAogICAgIGlmICghbV9mcm9udGVuZERpc3BhdGNoZXIg
JiYgbV9jb25zb2xlTWVzc2FnZXMuc2l6ZSgpID49IG1heGltdW1Db25zb2xlTWVzc2FnZXMpIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3RvckNvbnNvbGVBZ2VudC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2Vu
dHMvSW5zcGVjdG9yQ29uc29sZUFnZW50LmgKaW5kZXggYjlkYTk5ZDM4MmVmY2IxYjI2ZDk3YzI1
N2U2ZDBkNGM1MDVmMjEyMC4uYjIzZDZmNDZhYTkxOTgxNzVmZTQ3NTVkZTk4NTk0NzI2NzM5Njdj
YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9yQ29uc29sZUFnZW50LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvSW5zcGVjdG9yQ29uc29sZUFnZW50LmgKQEAgLTUyLDcgKzUyLDcgQEAgY2xhc3Mg
SlNfRVhQT1JUX1BSSVZBVEUgSW5zcGVjdG9yQ29uc29sZUFnZW50IDogcHVibGljIEluc3BlY3Rv
ckFnZW50QmFzZSwgcHVibGkKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShJbnNwZWN0b3JDb25z
b2xlQWdlbnQpOwogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIElu
c3BlY3RvckNvbnNvbGVBZ2VudChJbmplY3RlZFNjcmlwdE1hbmFnZXIqKTsKKyAgICBJbnNwZWN0
b3JDb25zb2xlQWdlbnQoSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyJik7CiAgICAgdmlydHVhbCB+SW5z
cGVjdG9yQ29uc29sZUFnZW50KCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRl
bmRBbmRCYWNrZW5kKEZyb250ZW5kQ2hhbm5lbCosIEJhY2tlbmREaXNwYXRjaGVyKikgb3ZlcnJp
ZGU7CkBAIC04MCwxNSArODAsMTUgQEAgcHVibGljOgogcHJvdGVjdGVkOgogICAgIHZvaWQgYWRk
Q29uc29sZU1lc3NhZ2Uoc3RkOjp1bmlxdWVfcHRyPENvbnNvbGVNZXNzYWdlPik7CiAKLSAgICBJ
bmplY3RlZFNjcmlwdE1hbmFnZXIqIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOworICAgIEluamVj
dGVkU2NyaXB0TWFuYWdlciYgbV9pbmplY3RlZFNjcmlwdE1hbmFnZXI7CiAgICAgc3RkOjp1bmlx
dWVfcHRyPENvbnNvbGVGcm9udGVuZERpc3BhdGNoZXI+IG1fZnJvbnRlbmREaXNwYXRjaGVyOwog
ICAgIFJlZlB0cjxDb25zb2xlQmFja2VuZERpc3BhdGNoZXI+IG1fYmFja2VuZERpc3BhdGNoZXI7
Ci0gICAgQ29uc29sZU1lc3NhZ2UqIG1fcHJldmlvdXNNZXNzYWdlOworICAgIENvbnNvbGVNZXNz
YWdlKiBtX3ByZXZpb3VzTWVzc2FnZSB7IG51bGxwdHIgfTsKICAgICBWZWN0b3I8c3RkOjp1bmlx
dWVfcHRyPENvbnNvbGVNZXNzYWdlPj4gbV9jb25zb2xlTWVzc2FnZXM7Ci0gICAgaW50IG1fZXhw
aXJlZENvbnNvbGVNZXNzYWdlQ291bnQ7CisgICAgaW50IG1fZXhwaXJlZENvbnNvbGVNZXNzYWdl
Q291bnQgeyAwIH07CiAgICAgSGFzaE1hcDxTdHJpbmcsIHVuc2lnbmVkPiBtX2NvdW50czsKICAg
ICBIYXNoTWFwPFN0cmluZywgZG91YmxlPiBtX3RpbWVzOwotICAgIGJvb2wgbV9lbmFibGVkOwor
ICAgIGJvb2wgbV9lbmFibGVkIHsgZmFsc2UgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEluc3Bl
Y3RvcgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL2FnZW50cy9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcAppbmRleCBmMGYwYjQ4ZGQ0ZDQ3
Y2RlM2EwZjJhODgyMmM0NjMyNWRlNWFhYjRmLi5jMmY2M2NlY2FjNmI2YTg1YjM1NGFmMGUwNTIy
YTViOTQzNzJiODAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcApAQCAtNTUs
NyArNTUsNyBAQCBzdGF0aWMgU3RyaW5nIG9iamVjdEdyb3VwRm9yQnJlYWtwb2ludEFjdGlvbihj
b25zdCBTY3JpcHRCcmVha3BvaW50QWN0aW9uJiBhY3RpbwogICAgIHJldHVybiBtYWtlU3RyaW5n
KG9iamVjdEdyb3VwLCBTdHJpbmc6Om51bWJlcihhY3Rpb24uaWRlbnRpZmllcikpOwogfQogCi1J
bnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50KEluamVjdGVkU2Ny
aXB0TWFuYWdlciogaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKQorSW5zcGVjdG9yRGVidWdnZXJBZ2Vu
dDo6SW5zcGVjdG9yRGVidWdnZXJBZ2VudChJbmplY3RlZFNjcmlwdE1hbmFnZXImIGluamVjdGVk
U2NyaXB0TWFuYWdlcikKICAgICA6IEluc3BlY3RvckFnZW50QmFzZShBU0NJSUxpdGVyYWwoIkRl
YnVnZ2VyIikpCiAgICAgLCBtX2luamVjdGVkU2NyaXB0TWFuYWdlcihpbmplY3RlZFNjcmlwdE1h
bmFnZXIpCiAgICAgLCBtX2NvbnRpbnVlVG9Mb2NhdGlvbkJyZWFrcG9pbnRJRChKU0M6Om5vQnJl
YWtwb2ludElEKQpAQCAtMzgyLDcgKzM4Miw3IEBAIHZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2Vu
dDo6cmVtb3ZlQnJlYWtwb2ludChFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgYnJlYWtwCiAK
ICAgICAgICAgY29uc3QgQnJlYWtwb2ludEFjdGlvbnMmIGJyZWFrcG9pbnRBY3Rpb25zID0gc2Ny
aXB0RGVidWdTZXJ2ZXIoKS5nZXRBY3Rpb25zRm9yQnJlYWtwb2ludChicmVha3BvaW50SUQpOwog
ICAgICAgICBmb3IgKGF1dG8mIGFjdGlvbiA6IGJyZWFrcG9pbnRBY3Rpb25zKQotICAgICAgICAg
ICAgbV9pbmplY3RlZFNjcmlwdE1hbmFnZXItPnJlbGVhc2VPYmplY3RHcm91cChvYmplY3RHcm91
cEZvckJyZWFrcG9pbnRBY3Rpb24oYWN0aW9uKSk7CisgICAgICAgICAgICBtX2luamVjdGVkU2Ny
aXB0TWFuYWdlci5yZWxlYXNlT2JqZWN0R3JvdXAob2JqZWN0R3JvdXBGb3JCcmVha3BvaW50QWN0
aW9uKGFjdGlvbikpOwogCiAgICAgICAgIHNjcmlwdERlYnVnU2VydmVyKCkucmVtb3ZlQnJlYWtw
b2ludChicmVha3BvaW50SUQpOwogICAgIH0KQEAgLTQ2Miw3ICs0NjIsNyBAQCB2b2lkIEluc3Bl
Y3RvckRlYnVnZ2VyQWdlbnQ6OmdldFNjcmlwdFNvdXJjZShFcnJvclN0cmluZyYgZXJyb3IsIGNv
bnN0IFN0cmluZyYgcwogCiB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmdldEZ1bmN0aW9u
RGV0YWlscyhFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgZnVuY3Rpb25J
ZCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRlYnVnZ2VyOjpGdW5jdGlvbkRldGFpbHM+
JiBkZXRhaWxzKQogewotICAgIEluamVjdGVkU2NyaXB0IGluamVjdGVkU2NyaXB0ID0gbV9pbmpl
Y3RlZFNjcmlwdE1hbmFnZXItPmluamVjdGVkU2NyaXB0Rm9yT2JqZWN0SWQoZnVuY3Rpb25JZCk7
CisgICAgSW5qZWN0ZWRTY3JpcHQgaW5qZWN0ZWRTY3JpcHQgPSBtX2luamVjdGVkU2NyaXB0TWFu
YWdlci5pbmplY3RlZFNjcmlwdEZvck9iamVjdElkKGZ1bmN0aW9uSWQpOwogICAgIGlmIChpbmpl
Y3RlZFNjcmlwdC5oYXNOb1ZhbHVlKCkpIHsKICAgICAgICAgZXJyb3JTdHJpbmcgPSBBU0NJSUxp
dGVyYWwoIkZ1bmN0aW9uIG9iamVjdCBpZCBpcyBvYnNvbGV0ZSIpOwogICAgICAgICByZXR1cm47
CkBAIC01NTMsNyArNTUzLDcgQEAgdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpzZXRQYXVz
ZU9uRXhjZXB0aW9ucyhFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnMKIAogdm9pZCBJbnNw
ZWN0b3JEZWJ1Z2dlckFnZW50OjpldmFsdWF0ZU9uQ2FsbEZyYW1lKEVycm9yU3RyaW5nJiBlcnJv
clN0cmluZywgY29uc3QgU3RyaW5nJiBjYWxsRnJhbWVJZCwgY29uc3QgU3RyaW5nJiBleHByZXNz
aW9uLCBjb25zdCBTdHJpbmcqIGNvbnN0IG9iamVjdEdyb3VwLCBjb25zdCBib29sKiBjb25zdCBp
bmNsdWRlQ29tbWFuZExpbmVBUEksIGNvbnN0IGJvb2wqIGNvbnN0IGRvTm90UGF1c2VPbkV4Y2Vw
dGlvbnNBbmRNdXRlQ29uc29sZSwgY29uc3QgYm9vbCogY29uc3QgcmV0dXJuQnlWYWx1ZSwgY29u
c3QgYm9vbCogZ2VuZXJhdGVQcmV2aWV3LCBjb25zdCBib29sKiBzYXZlUmVzdWx0LCBSZWZQdHI8
SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiYgcmVzdWx0LCBJbnNw
ZWN0b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8Ym9vbD4qIHdhc1Rocm93biwgSW5zcGVjdG9yOjpQ
cm90b2NvbDo6T3B0T3V0cHV0PGludD4qIHNhdmVkUmVzdWx0SW5kZXgpCiB7Ci0gICAgSW5qZWN0
ZWRTY3JpcHQgaW5qZWN0ZWRTY3JpcHQgPSBtX2luamVjdGVkU2NyaXB0TWFuYWdlci0+aW5qZWN0
ZWRTY3JpcHRGb3JPYmplY3RJZChjYWxsRnJhbWVJZCk7CisgICAgSW5qZWN0ZWRTY3JpcHQgaW5q
ZWN0ZWRTY3JpcHQgPSBtX2luamVjdGVkU2NyaXB0TWFuYWdlci5pbmplY3RlZFNjcmlwdEZvck9i
amVjdElkKGNhbGxGcmFtZUlkKTsKICAgICBpZiAoaW5qZWN0ZWRTY3JpcHQuaGFzTm9WYWx1ZSgp
KSB7CiAgICAgICAgIGVycm9yU3RyaW5nID0gQVNDSUlMaXRlcmFsKCJJbnNwZWN0ZWQgZnJhbWUg
aGFzIGdvbmUiKTsKICAgICAgICAgcmV0dXJuOwpAQCAtNjYxLDcgKzY2MSw3IEBAIHZvaWQgSW5z
cGVjdG9yRGVidWdnZXJBZ2VudDo6ZGlkUGF1c2UoSlNDOjpFeGVjU3RhdGUqIHNjcmlwdFN0YXRl
LCBjb25zdCBEZXByZWNhCiAgICAgbV9wYXVzZWRTY3JpcHRTdGF0ZSA9IHNjcmlwdFN0YXRlOwog
ICAgIG1fY3VycmVudENhbGxTdGFjayA9IGNhbGxGcmFtZXM7CiAKLSAgICBJbmplY3RlZFNjcmlw
dCBpbmplY3RlZFNjcmlwdCA9IG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLT5pbmplY3RlZFNjcmlw
dEZvcihzY3JpcHRTdGF0ZSk7CisgICAgSW5qZWN0ZWRTY3JpcHQgaW5qZWN0ZWRTY3JpcHQgPSBt
X2luamVjdGVkU2NyaXB0TWFuYWdlci5pbmplY3RlZFNjcmlwdEZvcihzY3JpcHRTdGF0ZSk7CiAK
ICAgICAvLyBJZiBhIGhpZ2ggbGV2ZWwgcGF1c2UgcGF1c2UgcmVhc29uIGlzIG5vdCBhbHJlYWR5
IHNldCwgdHJ5IHRvIGluZmVyIGEgcmVhc29uIGZyb20gdGhlIGRlYnVnZ2VyLgogICAgIGlmICht
X2JyZWFrUmVhc29uID09IERlYnVnZ2VyRnJvbnRlbmREaXNwYXRjaGVyOjpSZWFzb246Ok90aGVy
KSB7CkBAIC03MTIsNyArNzEyLDcgQEAgdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpkaWRQ
YXVzZShKU0M6OkV4ZWNTdGF0ZSogc2NyaXB0U3RhdGUsIGNvbnN0IERlcHJlY2EKICAgICBpZiAo
bV9saXN0ZW5lcikKICAgICAgICAgbV9saXN0ZW5lci0+ZGlkUGF1c2UoKTsKIAotICAgIFJlZlB0
cjxTdG9wd2F0Y2g+IHN0b3B3YXRjaCA9IG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLT5pbnNwZWN0
b3JFbnZpcm9ubWVudCgpLmV4ZWN1dGlvblN0b3B3YXRjaCgpOworICAgIFJlZlB0cjxTdG9wd2F0
Y2g+IHN0b3B3YXRjaCA9IG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmluc3BlY3RvckVudmlyb25t
ZW50KCkuZXhlY3V0aW9uU3RvcHdhdGNoKCk7CiAgICAgaWYgKHN0b3B3YXRjaCAmJiBzdG9wd2F0
Y2gtPmlzQWN0aXZlKCkpIHsKICAgICAgICAgc3RvcHdhdGNoLT5zdG9wKCk7CiAgICAgICAgIG1f
ZGlkUGF1c2VTdG9wd2F0Y2ggPSB0cnVlOwpAQCAtNzI2LDEzICs3MjYsMTMgQEAgdm9pZCBJbnNw
ZWN0b3JEZWJ1Z2dlckFnZW50OjpicmVha3BvaW50QWN0aW9uU291bmQoaW50IGJyZWFrcG9pbnRB
Y3Rpb25JZGVudGlmaWUKIAogdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpicmVha3BvaW50
QWN0aW9uUHJvYmUoSlNDOjpFeGVjU3RhdGUqIHNjcmlwdFN0YXRlLCBjb25zdCBTY3JpcHRCcmVh
a3BvaW50QWN0aW9uJiBhY3Rpb24sIHVuc2lnbmVkIGJhdGNoSWQsIHVuc2lnbmVkIHNhbXBsZUlk
LCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYgc2FtcGxlKQogewotICAgIEluamVjdGVk
U2NyaXB0IGluamVjdGVkU2NyaXB0ID0gbV9pbmplY3RlZFNjcmlwdE1hbmFnZXItPmluamVjdGVk
U2NyaXB0Rm9yKHNjcmlwdFN0YXRlKTsKKyAgICBJbmplY3RlZFNjcmlwdCBpbmplY3RlZFNjcmlw
dCA9IG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmluamVjdGVkU2NyaXB0Rm9yKHNjcmlwdFN0YXRl
KTsKICAgICBSZWZQdHI8UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4gcGF5bG9hZCA9
IGluamVjdGVkU2NyaXB0LndyYXBPYmplY3Qoc2FtcGxlLCBvYmplY3RHcm91cEZvckJyZWFrcG9p
bnRBY3Rpb24oYWN0aW9uKSwgdHJ1ZSk7CiAgICAgYXV0byByZXN1bHQgPSBQcm90b2NvbDo6RGVi
dWdnZXI6OlByb2JlU2FtcGxlOjpjcmVhdGUoKQogICAgICAgICAuc2V0UHJvYmVJZChhY3Rpb24u
aWRlbnRpZmllcikKICAgICAgICAgLnNldEJhdGNoSWQoYmF0Y2hJZCkKICAgICAgICAgLnNldFNh
bXBsZUlkKHNhbXBsZUlkKQotICAgICAgICAuc2V0VGltZXN0YW1wKG1faW5qZWN0ZWRTY3JpcHRN
YW5hZ2VyLT5pbnNwZWN0b3JFbnZpcm9ubWVudCgpLmV4ZWN1dGlvblN0b3B3YXRjaCgpLT5lbGFw
c2VkVGltZSgpKQorICAgICAgICAuc2V0VGltZXN0YW1wKG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2Vy
Lmluc3BlY3RvckVudmlyb25tZW50KCkuZXhlY3V0aW9uU3RvcHdhdGNoKCktPmVsYXBzZWRUaW1l
KCkpCiAgICAgICAgIC5zZXRQYXlsb2FkKHBheWxvYWQucmVsZWFzZSgpKQogICAgICAgICAucmVs
ZWFzZSgpOwogCkBAIC03NDMsMTIgKzc0MywxMiBAQCB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdl
bnQ6OmRpZENvbnRpbnVlKCkKIHsKICAgICBpZiAobV9kaWRQYXVzZVN0b3B3YXRjaCkgewogICAg
ICAgICBtX2RpZFBhdXNlU3RvcHdhdGNoID0gZmFsc2U7Ci0gICAgICAgIG1faW5qZWN0ZWRTY3Jp
cHRNYW5hZ2VyLT5pbnNwZWN0b3JFbnZpcm9ubWVudCgpLmV4ZWN1dGlvblN0b3B3YXRjaCgpLT5z
dGFydCgpOworICAgICAgICBtX2luamVjdGVkU2NyaXB0TWFuYWdlci5pbnNwZWN0b3JFbnZpcm9u
bWVudCgpLmV4ZWN1dGlvblN0b3B3YXRjaCgpLT5zdGFydCgpOwogICAgIH0KIAogICAgIG1fcGF1
c2VkU2NyaXB0U3RhdGUgPSBudWxscHRyOwogICAgIG1fY3VycmVudENhbGxTdGFjayA9IERlcHJl
Y2F0ZWQ6OlNjcmlwdFZhbHVlKCk7Ci0gICAgbV9pbmplY3RlZFNjcmlwdE1hbmFnZXItPnJlbGVh
c2VPYmplY3RHcm91cChJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpiYWNrdHJhY2VPYmplY3RHcm91
cCk7CisgICAgbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIucmVsZWFzZU9iamVjdEdyb3VwKEluc3Bl
Y3RvckRlYnVnZ2VyQWdlbnQ6OmJhY2t0cmFjZU9iamVjdEdyb3VwKTsKICAgICBjbGVhckJyZWFr
RGV0YWlscygpOwogICAgIGNsZWFyRXhjZXB0aW9uVmFsdWUoKTsKIApAQCAtODIxLDcgKzgyMSw3
IEBAIHZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6Y2xlYXJCcmVha0RldGFpbHMoKQogdm9p
ZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpjbGVhckV4Y2VwdGlvblZhbHVlKCkKIHsKICAgICBp
ZiAobV9oYXNFeGNlcHRpb25WYWx1ZSkgewotICAgICAgICBtX2luamVjdGVkU2NyaXB0TWFuYWdl
ci0+Y2xlYXJFeGNlcHRpb25WYWx1ZSgpOworICAgICAgICBtX2luamVjdGVkU2NyaXB0TWFuYWdl
ci5jbGVhckV4Y2VwdGlvblZhbHVlKCk7CiAgICAgICAgIG1faGFzRXhjZXB0aW9uVmFsdWUgPSBm
YWxzZTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL2FnZW50cy9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmgKaW5kZXggMjgyNDll
Mjc2MmQwNGYyZjE3MzQ2MzQxZDdmNGFlNjAyNTVlMjA2MC4uMDBiNjJjOGM3ZDE4MzM1NDNhZjNj
Y2UyZmUxMGMxYWI5ZjI5NmEwZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuaApAQCAt
MTA5LDkgKzEwOSw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFNjcmlwdERlYnVnU2VydmVyJiBz
Y3JpcHREZWJ1Z1NlcnZlcigpID0gMDsKIAogcHJvdGVjdGVkOgotICAgIEluc3BlY3RvckRlYnVn
Z2VyQWdlbnQoSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKik7CisgICAgSW5zcGVjdG9yRGVidWdnZXJB
Z2VudChJbmplY3RlZFNjcmlwdE1hbmFnZXImKTsKIAotICAgIEluamVjdGVkU2NyaXB0TWFuYWdl
ciogaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKCkgY29uc3QgeyByZXR1cm4gbV9pbmplY3RlZFNjcmlw
dE1hbmFnZXI7IH0KKyAgICBJbmplY3RlZFNjcmlwdE1hbmFnZXImIGluamVjdGVkU2NyaXB0TWFu
YWdlcigpIGNvbnN0IHsgcmV0dXJuIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOyB9CiAgICAgdmly
dHVhbCBJbmplY3RlZFNjcmlwdCBpbmplY3RlZFNjcmlwdEZvckV2YWwoRXJyb3JTdHJpbmcmLCBj
b25zdCBpbnQqIGV4ZWN1dGlvbkNvbnRleHRJZCkgPSAwOwogCiAgICAgdmlydHVhbCB2b2lkIHN0
YXJ0TGlzdGVuaW5nU2NyaXB0RGVidWdTZXJ2ZXIoKSA9IDA7CkBAIC0xNTQsMTEgKzE1NCwxMSBA
QCBwcml2YXRlOgogICAgIHR5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIFJlZlB0cjxJbnNwZWN0b3JP
YmplY3Q+PiBCcmVha3BvaW50SWRlbnRpZmllclRvQnJlYWtwb2ludE1hcDsKICAgICB0eXBlZGVm
IEhhc2hNYXA8SlNDOjpCcmVha3BvaW50SUQsIFN0cmluZz4gRGVidWdTZXJ2ZXJCcmVha3BvaW50
SURUb0JyZWFrcG9pbnRJZGVudGlmaWVyOwogCi0gICAgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiBt
X2luamVjdGVkU2NyaXB0TWFuYWdlcjsKKyAgICBJbmplY3RlZFNjcmlwdE1hbmFnZXImIG1faW5q
ZWN0ZWRTY3JpcHRNYW5hZ2VyOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxEZWJ1Z2dlckZyb250ZW5k
RGlzcGF0Y2hlcj4gbV9mcm9udGVuZERpc3BhdGNoZXI7CiAgICAgUmVmUHRyPERlYnVnZ2VyQmFj
a2VuZERpc3BhdGNoZXI+IG1fYmFja2VuZERpc3BhdGNoZXI7Ci0gICAgTGlzdGVuZXIqIG1fbGlz
dGVuZXIge251bGxwdHJ9OwotICAgIEpTQzo6RXhlY1N0YXRlKiBtX3BhdXNlZFNjcmlwdFN0YXRl
IHtudWxscHRyfTsKKyAgICBMaXN0ZW5lciogbV9saXN0ZW5lciB7IG51bGxwdHIgfTsKKyAgICBK
U0M6OkV4ZWNTdGF0ZSogbV9wYXVzZWRTY3JpcHRTdGF0ZSB7IG51bGxwdHIgfTsKICAgICBEZXBy
ZWNhdGVkOjpTY3JpcHRWYWx1ZSBtX2N1cnJlbnRDYWxsU3RhY2s7CiAgICAgU2NyaXB0c01hcCBt
X3NjcmlwdHM7CiAgICAgQnJlYWtwb2ludElkZW50aWZpZXJUb0RlYnVnU2VydmVyQnJlYWtwb2lu
dElEc01hcCBtX2JyZWFrcG9pbnRJZGVudGlmaWVyVG9EZWJ1Z1NlcnZlckJyZWFrcG9pbnRJRHM7
CkBAIC0xNjcsMTAgKzE2NywxMCBAQCBwcml2YXRlOgogICAgIEpTQzo6QnJlYWtwb2ludElEIG1f
Y29udGludWVUb0xvY2F0aW9uQnJlYWtwb2ludElEOwogICAgIERlYnVnZ2VyRnJvbnRlbmREaXNw
YXRjaGVyOjpSZWFzb24gbV9icmVha1JlYXNvbjsKICAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0
PiBtX2JyZWFrQXV4RGF0YTsKLSAgICBib29sIG1fZW5hYmxlZCB7ZmFsc2V9OwotICAgIGJvb2wg
bV9qYXZhU2NyaXB0UGF1c2VTY2hlZHVsZWQge2ZhbHNlfTsKLSAgICBib29sIG1faGFzRXhjZXB0
aW9uVmFsdWUge2ZhbHNlfTsKLSAgICBib29sIG1fZGlkUGF1c2VTdG9wd2F0Y2gge2ZhbHNlfTsK
KyAgICBib29sIG1fZW5hYmxlZCB7IGZhbHNlIH07CisgICAgYm9vbCBtX2phdmFTY3JpcHRQYXVz
ZVNjaGVkdWxlZCB7IGZhbHNlIH07CisgICAgYm9vbCBtX2hhc0V4Y2VwdGlvblZhbHVlIHsgZmFs
c2UgfTsKKyAgICBib29sIG1fZGlkUGF1c2VTdG9wd2F0Y2ggeyBmYWxzZSB9OwogICAgIFJlZlB0
cjxXVEY6OlN0b3B3YXRjaD4gbV9zdG9wd2F0Y2g7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JSdW50aW1lQWdlbnQuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUnVudGlt
ZUFnZW50LmNwcAppbmRleCBhZTE4YWZjYWRjZmEzNmJkY2EzOGM3Mjg0YTlmMmYyOWRhN2IxMGYy
Li4zMjEwNGEyZGYyOGE5NjBhM2Q0OTgyZmY4NGFjMTkzZDI3MzNiM2EyIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JSdW50aW1lQWdl
bnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3RvclJ1bnRpbWVBZ2VudC5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDEzLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxMy0yMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHly
aWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dApAQCAtNTYsMTIgKzU2LDkgQEAgc3RhdGljIGJvb2wgYXNCb29sKGNvbnN0IGJvb2wq
IGNvbnN0IGIpCiAgICAgcmV0dXJuIGIgPyAqYiA6IGZhbHNlOwogfQogCi1JbnNwZWN0b3JSdW50
aW1lQWdlbnQ6Okluc3BlY3RvclJ1bnRpbWVBZ2VudChJbmplY3RlZFNjcmlwdE1hbmFnZXIqIGlu
amVjdGVkU2NyaXB0TWFuYWdlcikKK0luc3BlY3RvclJ1bnRpbWVBZ2VudDo6SW5zcGVjdG9yUnVu
dGltZUFnZW50KEluamVjdGVkU2NyaXB0TWFuYWdlciYgaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKQog
ICAgIDogSW5zcGVjdG9yQWdlbnRCYXNlKEFTQ0lJTGl0ZXJhbCgiUnVudGltZSIpKQogICAgICwg
bV9pbmplY3RlZFNjcmlwdE1hbmFnZXIoaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKQotICAgICwgbV9z
Y3JpcHREZWJ1Z1NlcnZlcihudWxscHRyKQotICAgICwgbV9lbmFibGVkKGZhbHNlKQotICAgICwg
bV9pc1R5cGVQcm9maWxpbmdFbmFibGVkKGZhbHNlKQogewogfQogCkBAIC0xMzcsNyArMTM0LDcg
QEAgdm9pZCBJbnNwZWN0b3JSdW50aW1lQWdlbnQ6OmV2YWx1YXRlKEVycm9yU3RyaW5nJiBlcnJv
clN0cmluZywgY29uc3QgU3RyaW5nJiBleHAKIAogdm9pZCBJbnNwZWN0b3JSdW50aW1lQWdlbnQ6
OmNhbGxGdW5jdGlvbk9uKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBv
YmplY3RJZCwgY29uc3QgU3RyaW5nJiBleHByZXNzaW9uLCBjb25zdCBJbnNwZWN0b3JBcnJheSog
b3B0aW9uYWxBcmd1bWVudHMsIGNvbnN0IGJvb2wqIGNvbnN0IGRvTm90UGF1c2VPbkV4Y2VwdGlv
bnNBbmRNdXRlQ29uc29sZSwgY29uc3QgYm9vbCogY29uc3QgcmV0dXJuQnlWYWx1ZSwgY29uc3Qg
Ym9vbCogZ2VuZXJhdGVQcmV2aWV3LCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGlt
ZTo6UmVtb3RlT2JqZWN0PiYgcmVzdWx0LCBJbnNwZWN0b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8
Ym9vbD4qIHdhc1Rocm93bikKIHsKLSAgICBJbmplY3RlZFNjcmlwdCBpbmplY3RlZFNjcmlwdCA9
IG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLT5pbmplY3RlZFNjcmlwdEZvck9iamVjdElkKG9iamVj
dElkKTsKKyAgICBJbmplY3RlZFNjcmlwdCBpbmplY3RlZFNjcmlwdCA9IG1faW5qZWN0ZWRTY3Jp
cHRNYW5hZ2VyLmluamVjdGVkU2NyaXB0Rm9yT2JqZWN0SWQob2JqZWN0SWQpOwogICAgIGlmIChp
bmplY3RlZFNjcmlwdC5oYXNOb1ZhbHVlKCkpIHsKICAgICAgICAgZXJyb3JTdHJpbmcgPSBBU0NJ
SUxpdGVyYWwoIkluc3BlY3RlZCBmcmFtZSBoYXMgZ29uZSIpOwogICAgICAgICByZXR1cm47CkBA
IC0xNjMsNyArMTYwLDcgQEAgdm9pZCBJbnNwZWN0b3JSdW50aW1lQWdlbnQ6OmNhbGxGdW5jdGlv
bk9uKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW4KIAogdm9pZCBJbnNwZWN0
b3JSdW50aW1lQWdlbnQ6OmdldFByb3BlcnRpZXMoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBj
b25zdCBTdHJpbmcmIG9iamVjdElkLCBjb25zdCBib29sKiBjb25zdCBvd25Qcm9wZXJ0aWVzLCBj
b25zdCBib29sKiBjb25zdCBnZW5lcmF0ZVByZXZpZXcsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3Rv
Y29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpQcm9wZXJ0eURlc2NyaXB0
b3I+PiYgcmVzdWx0LCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9y
OjpQcm90b2NvbDo6UnVudGltZTo6SW50ZXJuYWxQcm9wZXJ0eURlc2NyaXB0b3I+PiYgaW50ZXJu
YWxQcm9wZXJ0aWVzKQogewotICAgIEluamVjdGVkU2NyaXB0IGluamVjdGVkU2NyaXB0ID0gbV9p
bmplY3RlZFNjcmlwdE1hbmFnZXItPmluamVjdGVkU2NyaXB0Rm9yT2JqZWN0SWQob2JqZWN0SWQp
OworICAgIEluamVjdGVkU2NyaXB0IGluamVjdGVkU2NyaXB0ID0gbV9pbmplY3RlZFNjcmlwdE1h
bmFnZXIuaW5qZWN0ZWRTY3JpcHRGb3JPYmplY3RJZChvYmplY3RJZCk7CiAgICAgaWYgKGluamVj
dGVkU2NyaXB0Lmhhc05vVmFsdWUoKSkgewogICAgICAgICBlcnJvclN0cmluZyA9IEFTQ0lJTGl0
ZXJhbCgiSW5zcGVjdGVkIGZyYW1lIGhhcyBnb25lIik7CiAgICAgICAgIHJldHVybjsKQEAgLTE4
MSw3ICsxNzgsNyBAQCB2b2lkIEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6Z2V0UHJvcGVydGllcyhF
cnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZwogCiB2b2lkIEluc3BlY3RvclJ1
bnRpbWVBZ2VudDo6Z2V0RGlzcGxheWFibGVQcm9wZXJ0aWVzKEVycm9yU3RyaW5nJiBlcnJvclN0
cmluZywgY29uc3QgU3RyaW5nJiBvYmplY3RJZCwgY29uc3QgYm9vbCogY29uc3QgZ2VuZXJhdGVQ
cmV2aWV3LCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90
b2NvbDo6UnVudGltZTo6UHJvcGVydHlEZXNjcmlwdG9yPj4mIHJlc3VsdCwgUmVmUHRyPEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OkludGVy
bmFsUHJvcGVydHlEZXNjcmlwdG9yPj4mIGludGVybmFsUHJvcGVydGllcykKIHsKLSAgICBJbmpl
Y3RlZFNjcmlwdCBpbmplY3RlZFNjcmlwdCA9IG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLT5pbmpl
Y3RlZFNjcmlwdEZvck9iamVjdElkKG9iamVjdElkKTsKKyAgICBJbmplY3RlZFNjcmlwdCBpbmpl
Y3RlZFNjcmlwdCA9IG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmluamVjdGVkU2NyaXB0Rm9yT2Jq
ZWN0SWQob2JqZWN0SWQpOwogICAgIGlmIChpbmplY3RlZFNjcmlwdC5oYXNOb1ZhbHVlKCkpIHsK
ICAgICAgICAgZXJyb3JTdHJpbmcgPSBBU0NJSUxpdGVyYWwoIkluc3BlY3RlZCBmcmFtZSBoYXMg
Z29uZSIpOwogICAgICAgICByZXR1cm47CkBAIC0xOTksNyArMTk2LDcgQEAgdm9pZCBJbnNwZWN0
b3JSdW50aW1lQWdlbnQ6OmdldERpc3BsYXlhYmxlUHJvcGVydGllcyhFcnJvclN0cmluZyYgZXJy
b3JTdHJpbmcsIGMKIAogdm9pZCBJbnNwZWN0b3JSdW50aW1lQWdlbnQ6OmdldENvbGxlY3Rpb25F
bnRyaWVzKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBvYmplY3RJZCwg
Y29uc3QgU3RyaW5nKiBvYmplY3RHcm91cCwgY29uc3QgaW50KiBzdGFydEluZGV4LCBjb25zdCBp
bnQqIG51bWJlclRvRmV0Y2gsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNw
ZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpDb2xsZWN0aW9uRW50cnk+PiYgZW50cmllcykKIHsK
LSAgICBJbmplY3RlZFNjcmlwdCBpbmplY3RlZFNjcmlwdCA9IG1faW5qZWN0ZWRTY3JpcHRNYW5h
Z2VyLT5pbmplY3RlZFNjcmlwdEZvck9iamVjdElkKG9iamVjdElkKTsKKyAgICBJbmplY3RlZFNj
cmlwdCBpbmplY3RlZFNjcmlwdCA9IG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmluamVjdGVkU2Ny
aXB0Rm9yT2JqZWN0SWQob2JqZWN0SWQpOwogICAgIGlmIChpbmplY3RlZFNjcmlwdC5oYXNOb1Zh
bHVlKCkpIHsKICAgICAgICAgZXJyb3JTdHJpbmcgPSBBU0NJSUxpdGVyYWwoIkluc3BlY3RlZCBm
cmFtZSBoYXMgZ29uZSIpOwogICAgICAgICByZXR1cm47CkBAIC0yMTcsNyArMjE0LDcgQEAgdm9p
ZCBJbnNwZWN0b3JSdW50aW1lQWdlbnQ6OnNhdmVSZXN1bHQoRXJyb3JTdHJpbmcmIGVycm9yU3Ry
aW5nLCBjb25zdCBJbnNwZWN0b3IKIAogICAgIFN0cmluZyBvYmplY3RJZDsKICAgICBpZiAoY2Fs
bEFyZ3VtZW50LmdldFN0cmluZyhBU0NJSUxpdGVyYWwoIm9iamVjdElkIiksIG9iamVjdElkKSkg
ewotICAgICAgICBpbmplY3RlZFNjcmlwdCA9IG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLT5pbmpl
Y3RlZFNjcmlwdEZvck9iamVjdElkKG9iamVjdElkKTsKKyAgICAgICAgaW5qZWN0ZWRTY3JpcHQg
PSBtX2luamVjdGVkU2NyaXB0TWFuYWdlci5pbmplY3RlZFNjcmlwdEZvck9iamVjdElkKG9iamVj
dElkKTsKICAgICAgICAgaWYgKGluamVjdGVkU2NyaXB0Lmhhc05vVmFsdWUoKSkgewogICAgICAg
ICAgICAgZXJyb3JTdHJpbmcgPSBBU0NJSUxpdGVyYWwoIkluc3BlY3RlZCBmcmFtZSBoYXMgZ29u
ZSIpOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMjMzLDE0ICsyMzAsMTQgQEAgdm9pZCBJbnNw
ZWN0b3JSdW50aW1lQWdlbnQ6OnNhdmVSZXN1bHQoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBj
b25zdCBJbnNwZWN0b3IKIAogdm9pZCBJbnNwZWN0b3JSdW50aW1lQWdlbnQ6OnJlbGVhc2VPYmpl
Y3QoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIG9iamVjdElkKQogewotICAgIEluamVjdGVk
U2NyaXB0IGluamVjdGVkU2NyaXB0ID0gbV9pbmplY3RlZFNjcmlwdE1hbmFnZXItPmluamVjdGVk
U2NyaXB0Rm9yT2JqZWN0SWQob2JqZWN0SWQpOworICAgIEluamVjdGVkU2NyaXB0IGluamVjdGVk
U2NyaXB0ID0gbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIuaW5qZWN0ZWRTY3JpcHRGb3JPYmplY3RJ
ZChvYmplY3RJZCk7CiAgICAgaWYgKCFpbmplY3RlZFNjcmlwdC5oYXNOb1ZhbHVlKCkpCiAgICAg
ICAgIGluamVjdGVkU2NyaXB0LnJlbGVhc2VPYmplY3Qob2JqZWN0SWQpOwogfQogCiB2b2lkIElu
c3BlY3RvclJ1bnRpbWVBZ2VudDo6cmVsZWFzZU9iamVjdEdyb3VwKEVycm9yU3RyaW5nJiwgY29u
c3QgU3RyaW5nJiBvYmplY3RHcm91cCkKIHsKLSAgICBtX2luamVjdGVkU2NyaXB0TWFuYWdlci0+
cmVsZWFzZU9iamVjdEdyb3VwKG9iamVjdEdyb3VwKTsKKyAgICBtX2luamVjdGVkU2NyaXB0TWFu
YWdlci5yZWxlYXNlT2JqZWN0R3JvdXAob2JqZWN0R3JvdXApOwogfQogCiB2b2lkIEluc3BlY3Rv
clJ1bnRpbWVBZ2VudDo6cnVuKEVycm9yU3RyaW5nJikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclJ1bnRpbWVBZ2VudC5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUnVudGltZUFnZW50
LmgKaW5kZXggMjVmM2Q3YzE0YWFjYzA1NTcyNDBiN2IxNzZiY2YzYzNjNWE5YjIxMy4uMmUyZDc5
NDEyZGYzYzIxYWE4OGExYjc4NGNmMDBkYzE1Njc1NzkxYyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUnVudGltZUFnZW50LmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUnVudGlt
ZUFnZW50LmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTc5LDkg
Kzc5LDkgQEAgcHVibGljOgogICAgIGJvb2wgZW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fZW5h
YmxlZDsgfQogCiBwcm90ZWN0ZWQ6Ci0gICAgSW5zcGVjdG9yUnVudGltZUFnZW50KEluamVjdGVk
U2NyaXB0TWFuYWdlciopOworICAgIEluc3BlY3RvclJ1bnRpbWVBZ2VudChJbmplY3RlZFNjcmlw
dE1hbmFnZXImKTsKIAotICAgIEluamVjdGVkU2NyaXB0TWFuYWdlciogaW5qZWN0ZWRTY3JpcHRN
YW5hZ2VyKCkgeyByZXR1cm4gbV9pbmplY3RlZFNjcmlwdE1hbmFnZXI7IH0KKyAgICBJbmplY3Rl
ZFNjcmlwdE1hbmFnZXImIGluamVjdGVkU2NyaXB0TWFuYWdlcigpIHsgcmV0dXJuIG1faW5qZWN0
ZWRTY3JpcHRNYW5hZ2VyOyB9CiAKICAgICB2aXJ0dWFsIEpTQzo6Vk0mIGdsb2JhbFZNKCkgPSAw
OwogICAgIHZpcnR1YWwgSW5qZWN0ZWRTY3JpcHQgaW5qZWN0ZWRTY3JpcHRGb3JFdmFsKEVycm9y
U3RyaW5nJiwgY29uc3QgaW50KiBleGVjdXRpb25Db250ZXh0SWQpID0gMDsKQEAgLTkyLDEwICs5
MiwxMCBAQCBwcm90ZWN0ZWQ6CiBwcml2YXRlOgogICAgIHZvaWQgc2V0VHlwZVByb2ZpbGVyRW5h
YmxlZFN0YXRlKGJvb2wpOwogCi0gICAgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiBtX2luamVjdGVk
U2NyaXB0TWFuYWdlcjsKLSAgICBTY3JpcHREZWJ1Z1NlcnZlciogbV9zY3JpcHREZWJ1Z1NlcnZl
cjsKLSAgICBib29sIG1fZW5hYmxlZDsKLSAgICBib29sIG1faXNUeXBlUHJvZmlsaW5nRW5hYmxl
ZDsKKyAgICBJbmplY3RlZFNjcmlwdE1hbmFnZXImIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOwor
ICAgIFNjcmlwdERlYnVnU2VydmVyKiBtX3NjcmlwdERlYnVnU2VydmVyIHsgbnVsbHB0ciB9Owor
ICAgIGJvb2wgbV9lbmFibGVkIHsgZmFsc2UgfTsKKyAgICBib29sIG1faXNUeXBlUHJvZmlsaW5n
RW5hYmxlZCB7IGZhbHNlIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBJbnNwZWN0b3IKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0pTR2xvYmFsT2Jq
ZWN0Q29uc29sZUFnZW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdl
bnRzL0pTR2xvYmFsT2JqZWN0Q29uc29sZUFnZW50LmNwcAppbmRleCBmZTExMmRkMWVhZThjYWVj
ZTIzY2FiOGMwMzFiMDZlNjQzOTA5ZmVhLi45NmUxYTQ5YWRmMmY3OWFmZjJkYWJlNWE0ZGIxZDVl
MzhiZWM0ZDI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9KU0dsb2JhbE9iamVjdENvbnNvbGVBZ2VudC5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSlNHbG9iYWxPYmplY3RDb25zb2xlQWdlbnQuY3BwCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQsIDIwMTUgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0y
OCw3ICsyOCw3IEBACiAKIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogCi1KU0dsb2JhbE9iamVjdENv
bnNvbGVBZ2VudDo6SlNHbG9iYWxPYmplY3RDb25zb2xlQWdlbnQoSW5qZWN0ZWRTY3JpcHRNYW5h
Z2VyKiBpbmplY3RlZFNjcmlwdE1hbmFnZXIpCitKU0dsb2JhbE9iamVjdENvbnNvbGVBZ2VudDo6
SlNHbG9iYWxPYmplY3RDb25zb2xlQWdlbnQoSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyJiBpbmplY3Rl
ZFNjcmlwdE1hbmFnZXIpCiAgICAgOiBJbnNwZWN0b3JDb25zb2xlQWdlbnQoaW5qZWN0ZWRTY3Jp
cHRNYW5hZ2VyKQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvSlNHbG9iYWxPYmplY3RDb25zb2xlQWdlbnQuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0pTR2xvYmFsT2JqZWN0Q29uc29sZUFnZW50LmgKaW5k
ZXggMGQ3OWM1ZDFiZjFiYmVlNzZiOWFiYjg1M2Y5OTNjMWFhYzA2NWE0OS4uOWMyODVlMmVmZjIz
NmVhZWRlYTlkNzE4NjUwZTE5MDkxNjgyNTU1NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSlNHbG9iYWxPYmplY3RDb25zb2xlQWdlbnQuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9KU0dsb2JhbE9iamVjdENv
bnNvbGVBZ2VudC5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQsIDIw
MTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC0zNSw3ICszNSw3IEBAIGNsYXNzIEpTR2xvYmFsT2JqZWN0Q29uc29sZUFn
ZW50IGZpbmFsIDogcHVibGljIEluc3BlY3RvckNvbnNvbGVBZ2VudCB7CiAgICAgV1RGX01BS0Vf
Tk9OQ09QWUFCTEUoSlNHbG9iYWxPYmplY3RDb25zb2xlQWdlbnQpOwogICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIEpTR2xvYmFsT2JqZWN0Q29uc29sZUFnZW50KElu
amVjdGVkU2NyaXB0TWFuYWdlciopOworICAgIEpTR2xvYmFsT2JqZWN0Q29uc29sZUFnZW50KElu
amVjdGVkU2NyaXB0TWFuYWdlciYpOwogICAgIHZpcnR1YWwgfkpTR2xvYmFsT2JqZWN0Q29uc29s
ZUFnZW50KCkgeyB9CiAKICAgICAvLyBGSVhNRTogWEhScyBhbmQgTm9kZXMgb25seSBtYWtlcyBz
ZW5zZSBkZWJ1Z2dpbmcgYSBXZWIgY29udGV4dC4gQ2FuIHRoaXMgYmUgbW92ZWQgdG8gYSBkaWZm
ZXJlbnQgYWdlbnQ/CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L2FnZW50cy9KU0dsb2JhbE9iamVjdERlYnVnZ2VyQWdlbnQuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSlNHbG9iYWxPYmplY3REZWJ1Z2dlckFnZW50LmNwcApp
bmRleCA5YWU3NmM2MmE2YzljNWFiMDNjNzA5MTVkMmQyMzFkOGZmNjczZGU5Li40ZDM4MzA3NjVi
MThjZDVlYWI1MGVjZmE5YzliOWY4ODRhYzA3ZmQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9KU0dsb2JhbE9iamVjdERlYnVnZ2VyQWdlbnQuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0pTR2xvYmFsT2Jq
ZWN0RGVidWdnZXJBZ2VudC5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAxNCwgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTM4LDcgKzM4LDcgQEAgdXNpbmcgbmFtZXNwYWNlIEpTQzsK
IAogbmFtZXNwYWNlIEluc3BlY3RvciB7CiAKLUpTR2xvYmFsT2JqZWN0RGVidWdnZXJBZ2VudDo6
SlNHbG9iYWxPYmplY3REZWJ1Z2dlckFnZW50KEluamVjdGVkU2NyaXB0TWFuYWdlciogaW5qZWN0
ZWRTY3JpcHRNYW5hZ2VyLCBKU0M6OkpTR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QsIEluc3Bl
Y3RvckNvbnNvbGVBZ2VudCogY29uc29sZUFnZW50KQorSlNHbG9iYWxPYmplY3REZWJ1Z2dlckFn
ZW50OjpKU0dsb2JhbE9iamVjdERlYnVnZ2VyQWdlbnQoSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyJiBp
bmplY3RlZFNjcmlwdE1hbmFnZXIsIEpTQzo6SlNHbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCwg
SW5zcGVjdG9yQ29uc29sZUFnZW50KiBjb25zb2xlQWdlbnQpCiAgICAgOiBJbnNwZWN0b3JEZWJ1
Z2dlckFnZW50KGluamVjdGVkU2NyaXB0TWFuYWdlcikKICAgICAsIG1fc2NyaXB0RGVidWdTZXJ2
ZXIoZ2xvYmFsT2JqZWN0KQogICAgICwgbV9jb25zb2xlQWdlbnQoY29uc29sZUFnZW50KQpAQCAt
NjMsNyArNjMsNyBAQCBJbmplY3RlZFNjcmlwdCBKU0dsb2JhbE9iamVjdERlYnVnZ2VyQWdlbnQ6
OmluamVjdGVkU2NyaXB0Rm9yRXZhbChFcnJvclN0cmluZyYgZQogICAgIH0KIAogICAgIEV4ZWNT
dGF0ZSogZXhlYyA9IG1fc2NyaXB0RGVidWdTZXJ2ZXIuZ2xvYmFsT2JqZWN0KCkuZ2xvYmFsRXhl
YygpOwotICAgIHJldHVybiBpbmplY3RlZFNjcmlwdE1hbmFnZXIoKS0+aW5qZWN0ZWRTY3JpcHRG
b3IoZXhlYyk7CisgICAgcmV0dXJuIGluamVjdGVkU2NyaXB0TWFuYWdlcigpLmluamVjdGVkU2Ny
aXB0Rm9yKGV4ZWMpOwogfQogCiB2b2lkIEpTR2xvYmFsT2JqZWN0RGVidWdnZXJBZ2VudDo6YnJl
YWtwb2ludEFjdGlvbkxvZyhKU0M6OkV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU3RyaW5nJiBtZXNz
YWdlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMv
SlNHbG9iYWxPYmplY3REZWJ1Z2dlckFnZW50LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL2FnZW50cy9KU0dsb2JhbE9iamVjdERlYnVnZ2VyQWdlbnQuaAppbmRleCBhYzZiODcx
NjlmNDc1YTI4MmI2MDEwZWNiZDAxOWIzNTJkNzU1ODBlLi4xOGMxMWE5NjgxYjEwN2FiMzk3MDRm
ODkwN2Y2NDQ3ZTY5OTcwMmU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL2FnZW50cy9KU0dsb2JhbE9iamVjdERlYnVnZ2VyQWdlbnQuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9KU0dsb2JhbE9iamVjdERlYnVnZ2VyQWdl
bnQuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE0LCAyMDE1IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtMzcsNyArMzcsNyBAQCBjbGFzcyBKU0dsb2JhbE9iamVjdERlYnVnZ2VyQWdlbnQgZmlu
YWwgOiBwdWJsaWMgSW5zcGVjdG9yRGVidWdnZXJBZ2VudCB7CiAgICAgV1RGX01BS0VfTk9OQ09Q
WUFCTEUoSlNHbG9iYWxPYmplY3REZWJ1Z2dlckFnZW50KTsKICAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKIHB1YmxpYzoKLSAgICBKU0dsb2JhbE9iamVjdERlYnVnZ2VyQWdlbnQoSW5qZWN0
ZWRTY3JpcHRNYW5hZ2VyKiwgSlNDOjpKU0dsb2JhbE9iamVjdCYsIEluc3BlY3RvckNvbnNvbGVB
Z2VudCopOworICAgIEpTR2xvYmFsT2JqZWN0RGVidWdnZXJBZ2VudChJbmplY3RlZFNjcmlwdE1h
bmFnZXImLCBKU0M6OkpTR2xvYmFsT2JqZWN0JiwgSW5zcGVjdG9yQ29uc29sZUFnZW50Kik7CiAg
ICAgdmlydHVhbCB+SlNHbG9iYWxPYmplY3REZWJ1Z2dlckFnZW50KCkgeyB9CiAKICAgICB2aXJ0
dWFsIEpTR2xvYmFsT2JqZWN0U2NyaXB0RGVidWdTZXJ2ZXImIHNjcmlwdERlYnVnU2VydmVyKCkg
b3ZlcnJpZGUgeyByZXR1cm4gbV9zY3JpcHREZWJ1Z1NlcnZlcjsgfQpAQCAtNTUsNyArNTUsNyBA
QCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgSlNHbG9iYWxPYmplY3RTY3JpcHREZWJ1Z1NlcnZl
ciBtX3NjcmlwdERlYnVnU2VydmVyOwotICAgIEluc3BlY3RvckNvbnNvbGVBZ2VudCogbV9jb25z
b2xlQWdlbnQ7CisgICAgSW5zcGVjdG9yQ29uc29sZUFnZW50KiBtX2NvbnNvbGVBZ2VudCAgeyBu
dWxscHRyIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBJbnNwZWN0b3IKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0pTR2xvYmFsT2JqZWN0UnVudGlt
ZUFnZW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0pTR2xv
YmFsT2JqZWN0UnVudGltZUFnZW50LmNwcAppbmRleCA0NjA0OWY1NmM3NWFkNzM5OGYzYzlkMDc1
ODQ2Y2U3YTFjMTI4MjY4Li5lZGFiYmUyM2VhYTBiMWVmZTM0NjBkYmM3MzJjYjJjZmJiNWE0NjRk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9KU0ds
b2JhbE9iamVjdFJ1bnRpbWVBZ2VudC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvSlNHbG9iYWxPYmplY3RSdW50aW1lQWdlbnQuY3BwCkBAIC0zNCw3ICsz
NCw3IEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogCi1K
U0dsb2JhbE9iamVjdFJ1bnRpbWVBZ2VudDo6SlNHbG9iYWxPYmplY3RSdW50aW1lQWdlbnQoSW5q
ZWN0ZWRTY3JpcHRNYW5hZ2VyKiBpbmplY3RlZFNjcmlwdE1hbmFnZXIsIEpTR2xvYmFsT2JqZWN0
JiBnbG9iYWxPYmplY3QpCitKU0dsb2JhbE9iamVjdFJ1bnRpbWVBZ2VudDo6SlNHbG9iYWxPYmpl
Y3RSdW50aW1lQWdlbnQoSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyJiBpbmplY3RlZFNjcmlwdE1hbmFn
ZXIsIEpTR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCiAgICAgOiBJbnNwZWN0b3JSdW50aW1l
QWdlbnQoaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKQogICAgICwgbV9nbG9iYWxPYmplY3QoZ2xvYmFs
T2JqZWN0KQogewpAQCAtNjQsNyArNjQsNyBAQCBJbmplY3RlZFNjcmlwdCBKU0dsb2JhbE9iamVj
dFJ1bnRpbWVBZ2VudDo6aW5qZWN0ZWRTY3JpcHRGb3JFdmFsKEVycm9yU3RyaW5nJiBlcgogICAg
IEFTU0VSVF9VTlVTRUQoZXhlY3V0aW9uQ29udGV4dElkLCAhZXhlY3V0aW9uQ29udGV4dElkKTsK
IAogICAgIEpTQzo6RXhlY1N0YXRlKiBzY3JpcHRTdGF0ZSA9IG1fZ2xvYmFsT2JqZWN0Lmdsb2Jh
bEV4ZWMoKTsKLSAgICBJbmplY3RlZFNjcmlwdCBpbmplY3RlZFNjcmlwdCA9IGluamVjdGVkU2Ny
aXB0TWFuYWdlcigpLT5pbmplY3RlZFNjcmlwdEZvcihzY3JpcHRTdGF0ZSk7CisgICAgSW5qZWN0
ZWRTY3JpcHQgaW5qZWN0ZWRTY3JpcHQgPSBpbmplY3RlZFNjcmlwdE1hbmFnZXIoKS5pbmplY3Rl
ZFNjcmlwdEZvcihzY3JpcHRTdGF0ZSk7CiAgICAgaWYgKGluamVjdGVkU2NyaXB0Lmhhc05vVmFs
dWUoKSkKICAgICAgICAgZXJyb3JTdHJpbmcgPSBBU0NJSUxpdGVyYWwoIkludGVybmFsIGVycm9y
OiBtYWluIHdvcmxkIGV4ZWN1dGlvbiBjb250ZXh0IG5vdCBmb3VuZC4iKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSlNHbG9iYWxPYmplY3RS
dW50aW1lQWdlbnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0pT
R2xvYmFsT2JqZWN0UnVudGltZUFnZW50LmgKaW5kZXggNjMxYmFlYzBlYjMzZGI5ZTA4OWI1Y2Nj
MTM5MWI5NTgwYTdmZjRlOC4uZWUwYTQ1ZDY2NDFjNjVhMGViZmY5MDU1OWM5ODIzYWEwMTg1YTY0
MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSlNH
bG9iYWxPYmplY3RSdW50aW1lQWdlbnQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL2FnZW50cy9KU0dsb2JhbE9iamVjdFJ1bnRpbWVBZ2VudC5oCkBAIC0zNiw3ICszNiw3
IEBAIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogCiBjbGFzcyBKU0dsb2JhbE9iamVjdFJ1bnRpbWVB
Z2VudCBmaW5hbCA6IHB1YmxpYyBJbnNwZWN0b3JSdW50aW1lQWdlbnQgewogcHVibGljOgotICAg
IEpTR2xvYmFsT2JqZWN0UnVudGltZUFnZW50KEluamVjdGVkU2NyaXB0TWFuYWdlciosIEpTQzo6
SlNHbG9iYWxPYmplY3QmKTsKKyAgICBKU0dsb2JhbE9iamVjdFJ1bnRpbWVBZ2VudChJbmplY3Rl
ZFNjcmlwdE1hbmFnZXImLCBKU0M6OkpTR2xvYmFsT2JqZWN0Jik7CiAKICAgICB2aXJ0dWFsIHZv
aWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEZyb250ZW5kQ2hhbm5lbCosIEJhY2tlbmRE
aXNwYXRjaGVyKikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHdpbGxEZXN0cm95RnJvbnRl
bmRBbmRCYWNrZW5kKERpc2Nvbm5lY3RSZWFzb24pIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50
LmNwcAppbmRleCAyZGNkMjZlOTliZjNhMDdhNjc2MDhhYWUxMmQ1NzQ0MzkwNWE2MjY1Li4yOTZh
MDdkOTViNjI5NzU0MTFhN2FjNmRiNGQyMTM2NWFkMmVhYzM4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50
LmNwcApAQCAtNDMsNyArNDMsNyBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLUluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudDo6SW5zcGVj
dG9yQXBwbGljYXRpb25DYWNoZUFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRp
bmdBZ2VudHMsIEluc3BlY3RvclBhZ2VBZ2VudCogcGFnZUFnZW50KQorSW5zcGVjdG9yQXBwbGlj
YXRpb25DYWNoZUFnZW50OjpJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQoSW5zdHJ1bWVu
dGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgSW5zcGVjdG9yUGFnZUFnZW50KiBwYWdl
QWdlbnQpCiAgICAgOiBJbnNwZWN0b3JBZ2VudEJhc2UoQVNDSUlMaXRlcmFsKCJBcHBsaWNhdGlv
bkNhY2hlIiksIGluc3RydW1lbnRpbmdBZ2VudHMpCiAgICAgLCBtX3BhZ2VBZ2VudChwYWdlQWdl
bnQpCiB7CkBAIC02MCwxMiArNjAsMTIgQEAgdm9pZCBJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hl
QWdlbnQ6OndpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6RGkKICAgICBt
X2Zyb250ZW5kRGlzcGF0Y2hlciA9IG51bGxwdHI7CiAgICAgbV9iYWNrZW5kRGlzcGF0Y2hlciA9
IG51bGxwdHI7CiAKLSAgICBtX2luc3RydW1lbnRpbmdBZ2VudHMtPnNldEluc3BlY3RvckFwcGxp
Y2F0aW9uQ2FjaGVBZ2VudChudWxscHRyKTsKKyAgICBtX2luc3RydW1lbnRpbmdBZ2VudHMuc2V0
SW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50KG51bGxwdHIpOwogfQogCiB2b2lkIEluc3Bl
Y3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudDo6ZW5hYmxlKEVycm9yU3RyaW5nJikKIHsKLSAgICBt
X2luc3RydW1lbnRpbmdBZ2VudHMtPnNldEluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudCh0
aGlzKTsKKyAgICBtX2luc3RydW1lbnRpbmdBZ2VudHMuc2V0SW5zcGVjdG9yQXBwbGljYXRpb25D
YWNoZUFnZW50KHRoaXMpOwogCiAgICAgLy8gV2UgbmVlZCB0byBwYXNzIGluaXRpYWwgbmF2aWdh
dG9yLm9uT25saW5lLgogICAgIG5ldHdvcmtTdGF0ZUNoYW5nZWQoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQu
aAppbmRleCAyZDYyMThkZDYxZWVlMGIwZDZlNjdmNDQ0ZTZlOTJkNGU4M2Y5OGM2Li4xMTdjODVl
NmQyZjcyNDM3NTQyMGNhZWZmNDc1NjFkOGVkODc0OTJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5oCkBA
IC01MCw3ICs1MCw3IEBAIHR5cGVkZWYgU3RyaW5nIEVycm9yU3RyaW5nOwogY2xhc3MgSW5zcGVj
dG9yQXBwbGljYXRpb25DYWNoZUFnZW50IGZpbmFsIDogcHVibGljIEluc3BlY3RvckFnZW50QmFz
ZSwgcHVibGljIEluc3BlY3Rvcjo6QXBwbGljYXRpb25DYWNoZUJhY2tlbmREaXNwYXRjaGVySGFu
ZGxlciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSW5zcGVjdG9yQXBwbGljYXRpb25DYWNo
ZUFnZW50KTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgSW5zcGVjdG9y
QXBwbGljYXRpb25DYWNoZUFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMqLCBJbnNwZWN0b3JQYWdl
QWdlbnQqKTsKKyAgICBJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQoSW5zdHJ1bWVudGlu
Z0FnZW50cyYsIEluc3BlY3RvclBhZ2VBZ2VudCopOwogICAgIHZpcnR1YWwgfkluc3BlY3RvckFw
cGxpY2F0aW9uQ2FjaGVBZ2VudCgpIHsgfQogCiAgICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZy
b250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkZyb250ZW5kQ2hhbm5lbCosIEluc3BlY3Rvcjo6
QmFja2VuZERpc3BhdGNoZXIqKSBvdmVycmlkZTsKQEAgLTcxLDkgKzcxLDkgQEAgcHJpdmF0ZToK
IAogICAgIERvY3VtZW50TG9hZGVyKiBhc3NlcnRGcmFtZVdpdGhEb2N1bWVudExvYWRlcihFcnJv
clN0cmluZyYsIGNvbnN0IFN0cmluZyYgZnJhbWVJZCk7CiAKLSAgICBJbnNwZWN0b3JQYWdlQWdl
bnQqIG1fcGFnZUFnZW50OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3I6OkFwcGxpY2F0
aW9uQ2FjaGVGcm9udGVuZERpc3BhdGNoZXI+IG1fZnJvbnRlbmREaXNwYXRjaGVyOwogICAgIFJl
ZlB0cjxJbnNwZWN0b3I6OkFwcGxpY2F0aW9uQ2FjaGVCYWNrZW5kRGlzcGF0Y2hlcj4gbV9iYWNr
ZW5kRGlzcGF0Y2hlcjsKKyAgICBJbnNwZWN0b3JQYWdlQWdlbnQqIG1fcGFnZUFnZW50IHsgbnVs
bHB0ciB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5jcHAKaW5kZXggZDliNTA4OTFlMDU4ZjBiNjM5
ODBjZDdjNThiOWUzMjBkNzhiZDU4YS4uYTc5MjQ0NGIyZTA3ZWNkYzA1MDkwZWZjNTY4NWQ4OGQ1
NTQ2NjQzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNT
U0FnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdl
bnQuY3BwCkBAIC0xLDUgKzEsNiBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCwgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtMzQwLDEwICszNDEsOSBAQCBDU1NTdHlsZVJ1bGUqIEluc3BlY3RvckNTU0FnZW50Ojphc0NT
U1N0eWxlUnVsZShDU1NSdWxlJiBydWxlKQogICAgIHJldHVybiBkb3duY2FzdDxDU1NTdHlsZVJ1
bGU+KCZydWxlKTsKIH0KIAotSW5zcGVjdG9yQ1NTQWdlbnQ6Okluc3BlY3RvckNTU0FnZW50KElu
c3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMsIEluc3BlY3RvckRPTUFnZW50
KiBkb21BZ2VudCkKK0luc3BlY3RvckNTU0FnZW50OjpJbnNwZWN0b3JDU1NBZ2VudChJbnN0cnVt
ZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBJbnNwZWN0b3JET01BZ2VudCogZG9t
QWdlbnQpCiAgICAgOiBJbnNwZWN0b3JBZ2VudEJhc2UoQVNDSUlMaXRlcmFsKCJDU1MiKSwgaW5z
dHJ1bWVudGluZ0FnZW50cykKICAgICAsIG1fZG9tQWdlbnQoZG9tQWdlbnQpCi0gICAgLCBtX2xh
c3RTdHlsZVNoZWV0SWQoMSkKIHsKICAgICBtX2RvbUFnZW50LT5zZXRET01MaXN0ZW5lcih0aGlz
KTsKIH0KQEAgLTM5NSw3ICszOTUsNyBAQCB2b2lkIEluc3BlY3RvckNTU0FnZW50OjpyZXNldE5v
blBlcnNpc3RlbnREYXRhKCkKIAogdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6ZW5hYmxlKEVycm9y
U3RyaW5nJikKIHsKLSAgICBtX2luc3RydW1lbnRpbmdBZ2VudHMtPnNldEluc3BlY3RvckNTU0Fn
ZW50KHRoaXMpOworICAgIG1faW5zdHJ1bWVudGluZ0FnZW50cy5zZXRJbnNwZWN0b3JDU1NBZ2Vu
dCh0aGlzKTsKIAogICAgIGZvciAoYXV0byogZG9jdW1lbnQgOiBtX2RvbUFnZW50LT5kb2N1bWVu
dHMoKSkKICAgICAgICAgYWN0aXZlU3R5bGVTaGVldHNVcGRhdGVkKCpkb2N1bWVudCk7CkBAIC00
MDMsNyArNDAzLDcgQEAgdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6ZW5hYmxlKEVycm9yU3RyaW5n
JikKIAogdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6ZGlzYWJsZShFcnJvclN0cmluZyYpCiB7Ci0g
ICAgbV9pbnN0cnVtZW50aW5nQWdlbnRzLT5zZXRJbnNwZWN0b3JDU1NBZ2VudChudWxscHRyKTsK
KyAgICBtX2luc3RydW1lbnRpbmdBZ2VudHMuc2V0SW5zcGVjdG9yQ1NTQWdlbnQobnVsbHB0cik7
CiB9CiAKIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmRvY3VtZW50RGV0YWNoZWQoRG9jdW1lbnQm
IGRvY3VtZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckNTU0FnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQu
aAppbmRleCAzZTliNDFlOWQwYjE5ODQzNDQ3ODI4YjMwZTA1MjU2NGZjZWU3OGY4Li5kYmQyOTRl
NTYzMzRmOGZmN2U2NTFkOWEyMmMwYzdkZjA3MTVlNzI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuaApAQCAtMSw1ICsxLDYgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTAsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTgxLDcgKzgyLDcgQEAgcHVibGljOgogICAgICAgICBD
b250ZW50U2VjdXJpdHlQb2xpY3kqIG1fY29udGVudFNlY3VyaXR5UG9saWN5OwogICAgIH07CiAK
LSAgICBJbnNwZWN0b3JDU1NBZ2VudChJbnN0cnVtZW50aW5nQWdlbnRzKiwgSW5zcGVjdG9yRE9N
QWdlbnQqKTsKKyAgICBJbnNwZWN0b3JDU1NBZ2VudChJbnN0cnVtZW50aW5nQWdlbnRzJiwgSW5z
cGVjdG9yRE9NQWdlbnQqKTsKICAgICB2aXJ0dWFsIH5JbnNwZWN0b3JDU1NBZ2VudCgpOwogCiAg
ICAgc3RhdGljIENTU1N0eWxlUnVsZSogYXNDU1NTdHlsZVJ1bGUoQ1NTUnVsZSYpOwpAQCAtMTY5
LDcgKzE3MCw3IEBAIHByaXZhdGU6CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yOjpD
U1NGcm9udGVuZERpc3BhdGNoZXI+IG1fZnJvbnRlbmREaXNwYXRjaGVyOwogICAgIFJlZlB0cjxJ
bnNwZWN0b3I6OkNTU0JhY2tlbmREaXNwYXRjaGVyPiBtX2JhY2tlbmREaXNwYXRjaGVyOwotICAg
IEluc3BlY3RvckRPTUFnZW50KiBtX2RvbUFnZW50OworICAgIEluc3BlY3RvckRPTUFnZW50KiBt
X2RvbUFnZW50IHsgbnVsbHB0ciB9OwogCiAgICAgSWRUb0luc3BlY3RvclN0eWxlU2hlZXQgbV9p
ZFRvSW5zcGVjdG9yU3R5bGVTaGVldDsKICAgICBDU1NTdHlsZVNoZWV0VG9JbnNwZWN0b3JTdHls
ZVNoZWV0IG1fY3NzU3R5bGVTaGVldFRvSW5zcGVjdG9yU3R5bGVTaGVldDsKQEAgLTE4MCw3ICsx
ODEsNyBAQCBwcml2YXRlOgogICAgIEhhc2hTZXQ8aW50PiBtX25hbWVkRmxvd0NvbGxlY3Rpb25z
UmVxdWVzdGVkOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxDaGFuZ2VSZWdpb25PdmVyc2V0VGFzaz4g
bV9jaGFuZ2VSZWdpb25PdmVyc2V0VGFzazsKIAotICAgIGludCBtX2xhc3RTdHlsZVNoZWV0SWQ7
CisgICAgaW50IG1fbGFzdFN0eWxlU2hlZXRJZCB7IDEgfTsKICAgICBib29sIG1fY3JlYXRpbmdW
aWFJbnNwZWN0b3JTdHlsZVNoZWV0IHsgZmFsc2UgfTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb25zb2xlSW5zdHJ1bWVudGF0aW9uLmggYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29uc29sZUluc3RydW1lbnRhdGlvbi5o
CmluZGV4IGFhNGY1MzVlNzgwNTU2YmJiMTc2MzFjMzU4ZTc0MzVmNjlhZTYxMjcuLjI3NzM3ZTM1
MDdmN2IxODgyZGY2MDFiZGIxODUzZGViYjcwNTVhNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb25zb2xlSW5zdHJ1bWVudGF0aW9uLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnNvbGVJbnN0cnVtZW50YXRpb24uaApA
QCAtMSw1ICsxLDYgQEAKIC8qCiAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogKgogKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQpAQCAtNDAsOCAr
NDEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGlubGluZSB2b2lkIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6YWRkTWVzc2FnZVRvQ29uc29sZShQYWdlJiBwYWdlLCBzdGQ6OnVuaXF1ZV9w
dHI8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZT4gbWVzc2FnZSkKIHsKLSAgICBpZiAoSW5zdHJ1
bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cyA9IGluc3RydW1lbnRpbmdBZ2VudHNG
b3JQYWdlKHBhZ2UpKQotICAgICAgICBhZGRNZXNzYWdlVG9Db25zb2xlSW1wbCgqaW5zdHJ1bWVu
dGluZ0FnZW50cywgV1RGOjptb3ZlKG1lc3NhZ2UpKTsKKyAgICBhZGRNZXNzYWdlVG9Db25zb2xl
SW1wbChpbnN0cnVtZW50aW5nQWdlbnRzRm9yUGFnZShwYWdlKSwgV1RGOjptb3ZlKG1lc3NhZ2Up
KTsKIH0KIAogaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjphZGRNZXNzYWdl
VG9Db25zb2xlKFdvcmtlckdsb2JhbFNjb3BlKiB3b3JrZXJHbG9iYWxTY29wZSwgc3RkOjp1bmlx
dWVfcHRyPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+IG1lc3NhZ2UpCkBAIC01Miw4ICs1Miw3
IEBAIGlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6YWRkTWVzc2FnZVRvQ29u
c29sZShXb3JrZXJHbG9iYWxTY29wZSogd29yCiAKIGlubGluZSB2b2lkIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6Y29uc29sZUNvdW50KFBhZ2UmIHBhZ2UsIEpTQzo6RXhlY1N0YXRlKiBzdGF0
ZSwgUmVmUHRyPEluc3BlY3Rvcjo6U2NyaXB0QXJndW1lbnRzPiYmIGFyZ3VtZW50cykKIHsKLSAg
ICBpZiAoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cyA9IGluc3RydW1l
bnRpbmdBZ2VudHNGb3JQYWdlKHBhZ2UpKQotICAgICAgICBjb25zb2xlQ291bnRJbXBsKCppbnN0
cnVtZW50aW5nQWdlbnRzLCBzdGF0ZSwgV1RGOjptb3ZlKGFyZ3VtZW50cykpOworICAgIGNvbnNv
bGVDb3VudEltcGwoaW5zdHJ1bWVudGluZ0FnZW50c0ZvclBhZ2UocGFnZSksIHN0YXRlLCBXVEY6
Om1vdmUoYXJndW1lbnRzKSk7CiB9CiAKIGlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6c3RhcnRDb25zb2xlVGltaW5nKEZyYW1lJiBmcmFtZSwgY29uc3QgU3RyaW5nJiB0aXRs
ZSkKQEAgLTc3LDE1ICs3NiwxMiBAQCBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OmNvbnNvbGVUaW1lU3RhbXAoRnJhbWUmIGZyYW1lLCBSZWZQdHI8SW5zcAogCiBpbmxpbmUg
dm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnN0YXJ0UHJvZmlsaW5nKFBhZ2UmIHBhZ2Us
IEpTQzo6RXhlY1N0YXRlKiBleGVjLCBjb25zdCBTdHJpbmcgJnRpdGxlKQogewotICAgIGlmIChJ
bnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzID0gaW5zdHJ1bWVudGluZ0Fn
ZW50c0ZvclBhZ2UocGFnZSkpCi0gICAgICAgIHN0YXJ0UHJvZmlsaW5nSW1wbCgqaW5zdHJ1bWVu
dGluZ0FnZW50cywgZXhlYywgdGl0bGUpOworICAgIHN0YXJ0UHJvZmlsaW5nSW1wbChpbnN0cnVt
ZW50aW5nQWdlbnRzRm9yUGFnZShwYWdlKSwgZXhlYywgdGl0bGUpOwogfQogCiBpbmxpbmUgUmVm
UHRyPEpTQzo6UHJvZmlsZT4gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzdG9wUHJvZmlsaW5n
KFBhZ2UmIHBhZ2UsIEpTQzo6RXhlY1N0YXRlKiBleGVjLCBjb25zdCBTdHJpbmcgJnRpdGxlKQog
ewotICAgIGlmIChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzID0gaW5z
dHJ1bWVudGluZ0FnZW50c0ZvclBhZ2UocGFnZSkpCi0gICAgICAgIHJldHVybiBzdG9wUHJvZmls
aW5nSW1wbCgqaW5zdHJ1bWVudGluZ0FnZW50cywgZXhlYywgdGl0bGUpOwotICAgIHJldHVybiBu
dWxscHRyOworICAgIHJldHVybiBzdG9wUHJvZmlsaW5nSW1wbChpbnN0cnVtZW50aW5nQWdlbnRz
Rm9yUGFnZShwYWdlKSwgZXhlYywgdGl0bGUpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAK
aW5kZXggM2IwMTIzZGZhYjU2ZjU5ZDAwZmIxYzY3NGFiZWQ4MzJhMDM3NjdlMS4uMjc3ZjE2YjZm
NDc1MDU3YjE3NDYzN2IzNjdkM2NhNWEwNWE4M2NiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcApAQCAtMTAyLDEyICsxMDIsMTIgQEAg
SW5zcGVjdG9yQ29udHJvbGxlcjo6SW5zcGVjdG9yQ29udHJvbGxlcihQYWdlJiBwYWdlLCBJbnNw
ZWN0b3JDbGllbnQqIGluc3BlY3RvckMKICAgICBtX3BhZ2VBZ2VudCA9IHBhZ2VBZ2VudFB0ci5n
ZXQoKTsKICAgICBtX2FnZW50cy5hcHBlbmQoV1RGOjptb3ZlKHBhZ2VBZ2VudFB0cikpOwogCi0g
ICAgYXV0byBydW50aW1lQWdlbnRQdHIgPSBzdGQ6Om1ha2VfdW5pcXVlPFBhZ2VSdW50aW1lQWdl
bnQ+KG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmdldCgpLCAmcGFnZSwgcGFnZUFnZW50KTsKKyAg
ICBhdXRvIHJ1bnRpbWVBZ2VudFB0ciA9IHN0ZDo6bWFrZV91bmlxdWU8UGFnZVJ1bnRpbWVBZ2Vu
dD4oKm1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLCAmcGFnZSwgcGFnZUFnZW50KTsKICAgICBQYWdl
UnVudGltZUFnZW50KiBydW50aW1lQWdlbnQgPSBydW50aW1lQWdlbnRQdHIuZ2V0KCk7CiAgICAg
bV9pbnN0cnVtZW50aW5nQWdlbnRzLT5zZXRQYWdlUnVudGltZUFnZW50KHJ1bnRpbWVBZ2VudCk7
CiAgICAgbV9hZ2VudHMuYXBwZW5kKFdURjo6bW92ZShydW50aW1lQWdlbnRQdHIpKTsKIAotICAg
IGF1dG8gZG9tQWdlbnRQdHIgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvckRPTUFnZW50Piht
X2luc3RydW1lbnRpbmdBZ2VudHMuZ2V0KCksIHBhZ2VBZ2VudCwgbV9pbmplY3RlZFNjcmlwdE1h
bmFnZXIuZ2V0KCksIG1fb3ZlcmxheS5nZXQoKSk7CisgICAgYXV0byBkb21BZ2VudFB0ciA9IHN0
ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yRE9NQWdlbnQ+KG1faW5zdHJ1bWVudGluZ0FnZW50cy5n
ZXQoKSwgcGFnZUFnZW50LCAqbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIsIG1fb3ZlcmxheS5nZXQo
KSk7CiAgICAgbV9kb21BZ2VudCA9IGRvbUFnZW50UHRyLmdldCgpOwogICAgIG1fYWdlbnRzLmFw
cGVuZChXVEY6Om1vdmUoZG9tQWdlbnRQdHIpKTsKIApAQCAtMTE4LDcgKzExOCw3IEBAIEluc3Bl
Y3RvckNvbnRyb2xsZXI6Okluc3BlY3RvckNvbnRyb2xsZXIoUGFnZSYgcGFnZSwgSW5zcGVjdG9y
Q2xpZW50KiBpbnNwZWN0b3JDCiAgICAgbV9hZ2VudHMuYXBwZW5kKFdURjo6bW92ZShkYXRhYmFz
ZUFnZW50UHRyKSk7CiAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKLSAgICBtX2FnZW50
cy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JJbmRleGVkREJBZ2VudD4obV9pbnN0
cnVtZW50aW5nQWdlbnRzLmdldCgpLCBtX2luamVjdGVkU2NyaXB0TWFuYWdlci5nZXQoKSwgcGFn
ZUFnZW50KSk7CisgICAgbV9hZ2VudHMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9y
SW5kZXhlZERCQWdlbnQ+KG1faW5zdHJ1bWVudGluZ0FnZW50cy5nZXQoKSwgKm1faW5qZWN0ZWRT
Y3JpcHRNYW5hZ2VyLCBwYWdlQWdlbnQpKTsKICNlbmRpZgogCiAjaWYgRU5BQkxFKFdFQl9SRVBM
QVkpCkBAIC0xMzcsMTIgKzEzNywxMiBAQCBJbnNwZWN0b3JDb250cm9sbGVyOjpJbnNwZWN0b3JD
b250cm9sbGVyKFBhZ2UmIHBhZ2UsIEluc3BlY3RvckNsaWVudCogaW5zcGVjdG9yQwogICAgIG1f
cmVzb3VyY2VBZ2VudCA9IHJlc291cmNlQWdlbnRQdHIuZ2V0KCk7CiAgICAgbV9hZ2VudHMuYXBw
ZW5kKFdURjo6bW92ZShyZXNvdXJjZUFnZW50UHRyKSk7CiAKLSAgICBhdXRvIGNvbnNvbGVBZ2Vu
dFB0ciA9IHN0ZDo6bWFrZV91bmlxdWU8UGFnZUNvbnNvbGVBZ2VudD4obV9pbmplY3RlZFNjcmlw
dE1hbmFnZXIuZ2V0KCksIG1fZG9tQWdlbnQpOworICAgIGF1dG8gY29uc29sZUFnZW50UHRyID0g
c3RkOjptYWtlX3VuaXF1ZTxQYWdlQ29uc29sZUFnZW50PigqbV9pbmplY3RlZFNjcmlwdE1hbmFn
ZXIsIG1fZG9tQWdlbnQpOwogICAgIFdlYkNvbnNvbGVBZ2VudCogY29uc29sZUFnZW50ID0gY29u
c29sZUFnZW50UHRyLmdldCgpOwogICAgIG1faW5zdHJ1bWVudGluZ0FnZW50cy0+c2V0V2ViQ29u
c29sZUFnZW50KGNvbnNvbGVBZ2VudFB0ci5nZXQoKSk7CiAgICAgbV9hZ2VudHMuYXBwZW5kKFdU
Rjo6bW92ZShjb25zb2xlQWdlbnRQdHIpKTsKIAotICAgIGF1dG8gZGVidWdnZXJBZ2VudFB0ciA9
IHN0ZDo6bWFrZV91bmlxdWU8UGFnZURlYnVnZ2VyQWdlbnQ+KG1faW5qZWN0ZWRTY3JpcHRNYW5h
Z2VyLmdldCgpLCBtX2luc3RydW1lbnRpbmdBZ2VudHMuZ2V0KCksIHBhZ2VBZ2VudCwgbV9vdmVy
bGF5LmdldCgpKTsKKyAgICBhdXRvIGRlYnVnZ2VyQWdlbnRQdHIgPSBzdGQ6Om1ha2VfdW5pcXVl
PFBhZ2VEZWJ1Z2dlckFnZW50PigqbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIsIG1faW5zdHJ1bWVu
dGluZ0FnZW50cy5nZXQoKSwgcGFnZUFnZW50LCBtX292ZXJsYXkuZ2V0KCkpOwogICAgIG1fZGVi
dWdnZXJBZ2VudCA9IGRlYnVnZ2VyQWdlbnRQdHIuZ2V0KCk7CiAgICAgbV9hZ2VudHMuYXBwZW5k
KFdURjo6bW92ZShkZWJ1Z2dlckFnZW50UHRyKSk7CiAKQEAgLTIzMSw3ICsyMzEsNyBAQCB2b2lk
IEluc3BlY3RvckNvbnRyb2xsZXI6OmNvbm5lY3RGcm9udGVuZChJbnNwZWN0b3I6OkZyb250ZW5k
Q2hhbm5lbCogZnJvbnRlbmRDaAogCiAgICAgbV9hZ2VudHMuZGlkQ3JlYXRlRnJvbnRlbmRBbmRC
YWNrZW5kKGZyb250ZW5kQ2hhbm5lbCwgbV9iYWNrZW5kRGlzcGF0Y2hlci5nZXQoKSk7CiAKLSAg
ICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnJlZ2lzdGVySW5zdHJ1bWVudGluZ0FnZW50cygq
bV9pbnN0cnVtZW50aW5nQWdlbnRzKTsKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnJl
Z2lzdGVySW5zdHJ1bWVudGluZ0FnZW50cyhtX2luc3RydW1lbnRpbmdBZ2VudHMuZ2V0KCkpOwog
ICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZnJvbnRlbmRDcmVhdGVkKCk7CiAKICNpZiBF
TkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKQEAgLTI2MSw3ICsyNjEsNyBAQCB2b2lkIEluc3BlY3Rv
ckNvbnRyb2xsZXI6OmRpc2Nvbm5lY3RGcm9udGVuZChEaXNjb25uZWN0UmVhc29uIHJlYXNvbikK
ICAgICAvLyBSZWxlYXNlIG92ZXJsYXkgcGFnZSByZXNvdXJjZXMuCiAgICAgbV9vdmVybGF5LT5m
cmVlUGFnZSgpOwogICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZnJvbnRlbmREZWxldGVk
KCk7Ci0gICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp1bnJlZ2lzdGVySW5zdHJ1bWVudGlu
Z0FnZW50cygqbV9pbnN0cnVtZW50aW5nQWdlbnRzKTsKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OnVucmVnaXN0ZXJJbnN0cnVtZW50aW5nQWdlbnRzKG1faW5zdHJ1bWVudGluZ0FnZW50
cy5nZXQoKSk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6c2hvdygpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaAppbmRleCBjZWIzZGUy
YWYxNWI4NGJjYjc3YmJhYWRkY2UyMTU3MjdiYjRhOWYwLi5kZmI3ZTg1MDlhYzZjN2I5NzA0Zjli
NTRhMzJhMDY4OTRhYTFmODhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JDb250cm9sbGVyLmgKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAy
MDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zIGFyZQpAQCAtMTM3LDI1ICsxMzgsMjYgQEAgcHVibGljOgogcHJpdmF0ZToKICAg
ICBmcmllbmQgY2xhc3MgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOwogCi0gICAgUmVmUHRyPElu
c3RydW1lbnRpbmdBZ2VudHM+IG1faW5zdHJ1bWVudGluZ0FnZW50czsKKyAgICBSZWY8SW5zdHJ1
bWVudGluZ0FnZW50cz4gbV9pbnN0cnVtZW50aW5nQWdlbnRzOwogICAgIHN0ZDo6dW5pcXVlX3B0
cjxXZWJJbmplY3RlZFNjcmlwdE1hbmFnZXI+IG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOwotICAg
IHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3JPdmVybGF5PiBtX292ZXJsYXk7Ci0KLSAgICBJbnNw
ZWN0b3I6Okluc3BlY3RvckFnZW50KiBtX2luc3BlY3RvckFnZW50OwotICAgIEluc3BlY3RvckRP
TUFnZW50KiBtX2RvbUFnZW50OwotICAgIEluc3BlY3RvclJlc291cmNlQWdlbnQqIG1fcmVzb3Vy
Y2VBZ2VudDsKLSAgICBJbnNwZWN0b3JQYWdlQWdlbnQqIG1fcGFnZUFnZW50OwotICAgIFBhZ2VE
ZWJ1Z2dlckFnZW50KiBtX2RlYnVnZ2VyQWdlbnQ7Ci0gICAgSW5zcGVjdG9yRE9NRGVidWdnZXJB
Z2VudCogbV9kb21EZWJ1Z2dlckFnZW50OwotICAgIEluc3BlY3RvclRpbWVsaW5lQWdlbnQqIG1f
dGltZWxpbmVBZ2VudDsKLQogICAgIFJlZlB0cjxJbnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVy
PiBtX2JhY2tlbmREaXNwYXRjaGVyOwogICAgIEluc3BlY3Rvcjo6RnJvbnRlbmRDaGFubmVsKiBt
X2Zyb250ZW5kQ2hhbm5lbCB7IG51bGxwdHIgfTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVj
dG9yT3ZlcmxheT4gbV9vdmVybGF5OwogICAgIFJlZjxXVEY6OlN0b3B3YXRjaD4gbV9leGVjdXRp
b25TdG9wd2F0Y2g7CisgICAgSW5zcGVjdG9yOjpBZ2VudFJlZ2lzdHJ5IG1fYWdlbnRzOworCiAg
ICAgUGFnZSYgbV9wYWdlOwogICAgIEluc3BlY3RvckNsaWVudCogbV9pbnNwZWN0b3JDbGllbnQ7
CiAgICAgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQqIG1faW5zcGVjdG9yRnJvbnRlbmRDbGllbnQg
eyBudWxscHRyIH07Ci0gICAgSW5zcGVjdG9yOjpBZ2VudFJlZ2lzdHJ5IG1fYWdlbnRzOworCisg
ICAgSW5zcGVjdG9yOjpJbnNwZWN0b3JBZ2VudCogbV9pbnNwZWN0b3JBZ2VudCB7IG51bGxwdHIg
fTsKKyAgICBJbnNwZWN0b3JET01BZ2VudCogbV9kb21BZ2VudCB7IG51bGxwdHIgfTsKKyAgICBJ
bnNwZWN0b3JSZXNvdXJjZUFnZW50KiBtX3Jlc291cmNlQWdlbnQgeyBudWxscHRyIH07CisgICAg
SW5zcGVjdG9yUGFnZUFnZW50KiBtX3BhZ2VBZ2VudCB7IG51bGxwdHIgfTsKKyAgICBQYWdlRGVi
dWdnZXJBZ2VudCogbV9kZWJ1Z2dlckFnZW50IHsgbnVsbHB0ciB9OworICAgIEluc3BlY3RvckRP
TURlYnVnZ2VyQWdlbnQqIG1fZG9tRGVidWdnZXJBZ2VudCB7IG51bGxwdHIgfTsKKyAgICBJbnNw
ZWN0b3JUaW1lbGluZUFnZW50KiBtX3RpbWVsaW5lQWdlbnQgeyBudWxscHRyIH07CisKICAgICBW
ZWN0b3I8SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llLCAyPiBtX2luamVjdGVkU2NyaXB0
SW5zdHJ1bWVudGF0aW9uQ29va2llczsKICAgICBib29sIG1faXNVbmRlclRlc3QgeyBmYWxzZSB9
OwogICAgIGJvb2wgbV9pc0F1dG9tYXRpY0luc3BlY3Rpb24geyBmYWxzZSB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAKaW5kZXggNTY0ODI5ZmMx
Y2Q2MGUzNWM4ZmRkMDM5NWZjYTlhOTExMTRjYzMwNy4uOTRhZWViNGJjMGNlNDBlYzk4ZTYxMGFi
MGI1YjFkZTE3ZDIxM2ZlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckRPTUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yRE9NQWdlbnQuY3BwCkBAIC0yMDEsMTcgKzIwMSwxMSBAQCBTdHJpbmcgSW5zcGVjdG9yRE9N
QWdlbnQ6OnRvRXJyb3JTdHJpbmcoY29uc3QgRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAgcmV0dXJu
ICIiOwogfQogCi1JbnNwZWN0b3JET01BZ2VudDo6SW5zcGVjdG9yRE9NQWdlbnQoSW5zdHJ1bWVu
dGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgSW5zcGVjdG9yUGFnZUFnZW50KiBwYWdl
QWdlbnQsIEluamVjdGVkU2NyaXB0TWFuYWdlciogaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLCBJbnNw
ZWN0b3JPdmVybGF5KiBvdmVybGF5KQorSW5zcGVjdG9yRE9NQWdlbnQ6Okluc3BlY3RvckRPTUFn
ZW50KEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIEluc3BlY3RvclBh
Z2VBZ2VudCogcGFnZUFnZW50LCBJbmplY3RlZFNjcmlwdE1hbmFnZXImIGluamVjdGVkU2NyaXB0
TWFuYWdlciwgSW5zcGVjdG9yT3ZlcmxheSogb3ZlcmxheSkKICAgICA6IEluc3BlY3RvckFnZW50
QmFzZShBU0NJSUxpdGVyYWwoIkRPTSIpLCBpbnN0cnVtZW50aW5nQWdlbnRzKQotICAgICwgbV9w
YWdlQWdlbnQocGFnZUFnZW50KQogICAgICwgbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIoaW5qZWN0
ZWRTY3JpcHRNYW5hZ2VyKQorICAgICwgbV9wYWdlQWdlbnQocGFnZUFnZW50KQogICAgICwgbV9v
dmVybGF5KG92ZXJsYXkpCi0gICAgLCBtX2RvbUxpc3RlbmVyKDApCi0gICAgLCBtX2xhc3ROb2Rl
SWQoMSkKLSAgICAsIG1fbGFzdEJhY2tlbmROb2RlSWQoLTEpCi0gICAgLCBtX3NlYXJjaGluZ0Zv
ck5vZGUoZmFsc2UpCi0gICAgLCBtX3N1cHByZXNzQXR0cmlidXRlTW9kaWZpZWRFdmVudChmYWxz
ZSkKLSAgICAsIG1fZG9jdW1lbnRSZXF1ZXN0ZWQoZmFsc2UpCiB7CiB9CiAKQEAgLTIyOSw3ICsy
MjMsNyBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tl
bmQoSW5zcGVjdG9yOjpGcm9udGVuZENoYW5uZWwqCiAgICAgbV9oaXN0b3J5ID0gc3RkOjptYWtl
X3VuaXF1ZTxJbnNwZWN0b3JIaXN0b3J5PigpOwogICAgIG1fZG9tRWRpdG9yID0gc3RkOjptYWtl
X3VuaXF1ZTxET01FZGl0b3I+KG1faGlzdG9yeS5nZXQoKSk7CiAKLSAgICBtX2luc3RydW1lbnRp
bmdBZ2VudHMtPnNldEluc3BlY3RvckRPTUFnZW50KHRoaXMpOworICAgIG1faW5zdHJ1bWVudGlu
Z0FnZW50cy5zZXRJbnNwZWN0b3JET01BZ2VudCh0aGlzKTsKICAgICBtX2RvY3VtZW50ID0gbV9w
YWdlQWdlbnQtPm1haW5GcmFtZSgpLT5kb2N1bWVudCgpOwogCiAgICAgaWYgKG1fbm9kZVRvRm9j
dXMpCkBAIC0yNDgsNyArMjQyLDcgQEAgdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6d2lsbERlc3Ry
b3lGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpEaXNjb25uZWN0UmVhc28KICAgICBzZXRT
ZWFyY2hpbmdGb3JOb2RlKHVudXNlZCwgZmFsc2UsIDApOwogICAgIGhpZGVIaWdobGlnaHQodW51
c2VkKTsKIAotICAgIG1faW5zdHJ1bWVudGluZ0FnZW50cy0+c2V0SW5zcGVjdG9yRE9NQWdlbnQo
MCk7CisgICAgbV9pbnN0cnVtZW50aW5nQWdlbnRzLnNldEluc3BlY3RvckRPTUFnZW50KDApOwog
ICAgIG1fZG9jdW1lbnRSZXF1ZXN0ZWQgPSBmYWxzZTsKICAgICByZXNldCgpOwogfQpAQCAtMTAw
Niw3ICsxMDAwLDcgQEAgdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6Zm9jdXNOb2RlKCkKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgSlNDOjpFeGVjU3RhdGUqIHNjcmlwdFN0YXRlID0gbWFpbldvcmxk
RXhlY1N0YXRlKGZyYW1lKTsKLSAgICBJbmplY3RlZFNjcmlwdCBpbmplY3RlZFNjcmlwdCA9IG1f
aW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLT5pbmplY3RlZFNjcmlwdEZvcihzY3JpcHRTdGF0ZSk7Cisg
ICAgSW5qZWN0ZWRTY3JpcHQgaW5qZWN0ZWRTY3JpcHQgPSBtX2luamVjdGVkU2NyaXB0TWFuYWdl
ci5pbmplY3RlZFNjcmlwdEZvcihzY3JpcHRTdGF0ZSk7CiAgICAgaWYgKGluamVjdGVkU2NyaXB0
Lmhhc05vVmFsdWUoKSkKICAgICAgICAgcmV0dXJuOwogCkBAIC0xNDgyLDcgKzE0NzYsNyBAQCBS
ZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NOjpFdmVudExpc3RlbmVyPiBJbnNwZWN0b3JET01B
Z2VudDo6YnVpbGRPYmplY3RGb3JFdgogICAgICAgICAuc2V0SGFuZGxlckJvZHkoYm9keSkKICAg
ICAgICAgLnJlbGVhc2UoKTsKICAgICBpZiAob2JqZWN0R3JvdXBJZCAmJiBoYW5kbGVyICYmIHN0
YXRlKSB7Ci0gICAgICAgIEluamVjdGVkU2NyaXB0IGluamVjdGVkU2NyaXB0ID0gbV9pbmplY3Rl
ZFNjcmlwdE1hbmFnZXItPmluamVjdGVkU2NyaXB0Rm9yKHN0YXRlKTsKKyAgICAgICAgSW5qZWN0
ZWRTY3JpcHQgaW5qZWN0ZWRTY3JpcHQgPSBtX2luamVjdGVkU2NyaXB0TWFuYWdlci5pbmplY3Rl
ZFNjcmlwdEZvcihzdGF0ZSk7CiAgICAgICAgIGlmICghaW5qZWN0ZWRTY3JpcHQuaGFzTm9WYWx1
ZSgpKQogICAgICAgICAgICAgdmFsdWUtPnNldEhhbmRsZXIoaW5qZWN0ZWRTY3JpcHQud3JhcE9i
amVjdChEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZShzdGF0ZS0+dm0oKSwgaGFuZGxlciksICpvYmpl
Y3RHcm91cElkKSk7CiAgICAgfQpAQCAtMjA3Miw3ICsyMDY2LDcgQEAgTm9kZSogSW5zcGVjdG9y
RE9NQWdlbnQ6Om5vZGVGb3JQYXRoKGNvbnN0IFN0cmluZyYgcGF0aCkKIAogTm9kZSogSW5zcGVj
dG9yRE9NQWdlbnQ6Om5vZGVGb3JPYmplY3RJZChjb25zdCBTdHJpbmcmIG9iamVjdElkKQogewot
ICAgIEluamVjdGVkU2NyaXB0IGluamVjdGVkU2NyaXB0ID0gbV9pbmplY3RlZFNjcmlwdE1hbmFn
ZXItPmluamVjdGVkU2NyaXB0Rm9yT2JqZWN0SWQob2JqZWN0SWQpOworICAgIEluamVjdGVkU2Ny
aXB0IGluamVjdGVkU2NyaXB0ID0gbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIuaW5qZWN0ZWRTY3Jp
cHRGb3JPYmplY3RJZChvYmplY3RJZCk7CiAgICAgaWYgKGluamVjdGVkU2NyaXB0Lmhhc05vVmFs
dWUoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKQEAgLTIxMTIsNyArMjEwNiw3IEBAIFJl
ZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+IEluc3BlY3Rv
ckRPTUFnZW50OjpyZXNvbHZlTm9kCiAgICAgICAgIHJldHVybiAwOwogCiAgICAgSlNDOjpFeGVj
U3RhdGUqIHNjcmlwdFN0YXRlID0gbWFpbldvcmxkRXhlY1N0YXRlKGZyYW1lKTsKLSAgICBJbmpl
Y3RlZFNjcmlwdCBpbmplY3RlZFNjcmlwdCA9IG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLT5pbmpl
Y3RlZFNjcmlwdEZvcihzY3JpcHRTdGF0ZSk7CisgICAgSW5qZWN0ZWRTY3JpcHQgaW5qZWN0ZWRT
Y3JpcHQgPSBtX2luamVjdGVkU2NyaXB0TWFuYWdlci5pbmplY3RlZFNjcmlwdEZvcihzY3JpcHRT
dGF0ZSk7CiAgICAgaWYgKGluamVjdGVkU2NyaXB0Lmhhc05vVmFsdWUoKSkKICAgICAgICAgcmV0
dXJuIDA7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JE
T01BZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmgK
aW5kZXggN2RiZTI0Yzg0ZDZjYjFkYWZhMjVhZTg4MDA0NWM0NTE3NGU5YTZlNy4uN2IwZDY1OGY3
ZmEzYTgwZGE1OThjYjYyNDFiYmVmMDhhOWRiYzlhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmgKQEAgLTEwNCw3ICsxMDQsNyBAQCBwdWJsaWM6CiAg
ICAgICAgIHZpcnR1YWwgdm9pZCBkaWRNb2RpZnlET01BdHRyKEVsZW1lbnQqKSA9IDA7CiAgICAg
fTsKIAotICAgIEluc3BlY3RvckRPTUFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMqLCBJbnNwZWN0
b3JQYWdlQWdlbnQqLCBJbnNwZWN0b3I6OkluamVjdGVkU2NyaXB0TWFuYWdlciosIEluc3BlY3Rv
ck92ZXJsYXkqKTsKKyAgICBJbnNwZWN0b3JET01BZ2VudChJbnN0cnVtZW50aW5nQWdlbnRzJiwg
SW5zcGVjdG9yUGFnZUFnZW50KiwgSW5zcGVjdG9yOjpJbmplY3RlZFNjcmlwdE1hbmFnZXImLCBJ
bnNwZWN0b3JPdmVybGF5Kik7CiAgICAgdmlydHVhbCB+SW5zcGVjdG9yRE9NQWdlbnQoKTsKIAog
ICAgIHN0YXRpYyBTdHJpbmcgdG9FcnJvclN0cmluZyhjb25zdCBFeGNlcHRpb25Db2RlJik7CkBA
IC0yNDcsMTIgKzI0NywxMyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBpbm5lckhpZ2hsaWdodFF1
YWQoc3RkOjp1bmlxdWVfcHRyPEZsb2F0UXVhZD4sIGNvbnN0IEluc3BlY3Rvcjo6SW5zcGVjdG9y
T2JqZWN0KiBjb2xvciwgY29uc3QgSW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3QqIG91dGxpbmVD
b2xvciwgY29uc3QgYm9vbCogdXNlUGFnZUNvb3JkaW5hdGVzKTsKIAotICAgIEluc3BlY3RvclBh
Z2VBZ2VudCogbV9wYWdlQWdlbnQ7Ci0gICAgSW5zcGVjdG9yOjpJbmplY3RlZFNjcmlwdE1hbmFn
ZXIqIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOwotICAgIEluc3BlY3Rvck92ZXJsYXkqIG1fb3Zl
cmxheTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yOjpET01Gcm9udGVuZERpc3BhdGNo
ZXI+IG1fZnJvbnRlbmREaXNwYXRjaGVyOwogICAgIFJlZlB0cjxJbnNwZWN0b3I6OkRPTUJhY2tl
bmREaXNwYXRjaGVyPiBtX2JhY2tlbmREaXNwYXRjaGVyOwotICAgIERPTUxpc3RlbmVyKiBtX2Rv
bUxpc3RlbmVyOworICAgIEluc3BlY3Rvcjo6SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyJiBtX2luamVj
dGVkU2NyaXB0TWFuYWdlcjsKKyAgICBJbnNwZWN0b3JQYWdlQWdlbnQqIG1fcGFnZUFnZW50IHsg
bnVsbHB0ciB9OworCisgICAgSW5zcGVjdG9yT3ZlcmxheSogbV9vdmVybGF5IHsgbnVsbHB0ciB9
OworICAgIERPTUxpc3RlbmVyKiBtX2RvbUxpc3RlbmVyIHsgbnVsbHB0ciB9OwogICAgIE5vZGVU
b0lkTWFwIG1fZG9jdW1lbnROb2RlVG9JZE1hcDsKICAgICB0eXBlZGVmIEhhc2hNYXA8UmVmUHRy
PE5vZGU+LCBCYWNrZW5kTm9kZUlkPiBOb2RlVG9CYWNrZW5kSWRNYXA7CiAgICAgSGFzaE1hcDxT
dHJpbmcsIE5vZGVUb0JhY2tlbmRJZE1hcD4gbV9ub2RlR3JvdXBUb0JhY2tlbmRJZE1hcDsKQEAg
LTI2MiwxOSArMjYzLDE5IEBAIHByaXZhdGU6CiAgICAgSGFzaE1hcDxpbnQsIE5vZGVUb0lkTWFw
Kj4gbV9pZFRvTm9kZXNNYXA7CiAgICAgSGFzaFNldDxpbnQ+IG1fY2hpbGRyZW5SZXF1ZXN0ZWQ7
CiAgICAgSGFzaE1hcDxCYWNrZW5kTm9kZUlkLCBzdGQ6OnBhaXI8Tm9kZSosIFN0cmluZz4+IG1f
YmFja2VuZElkVG9Ob2RlOwotICAgIGludCBtX2xhc3ROb2RlSWQ7Ci0gICAgQmFja2VuZE5vZGVJ
ZCBtX2xhc3RCYWNrZW5kTm9kZUlkOworICAgIGludCBtX2xhc3ROb2RlSWQgeyAxIH07CisgICAg
QmFja2VuZE5vZGVJZCBtX2xhc3RCYWNrZW5kTm9kZUlkIHsgLTEgfTsKICAgICBSZWZQdHI8RG9j
dW1lbnQ+IG1fZG9jdW1lbnQ7CiAgICAgdHlwZWRlZiBIYXNoTWFwPFN0cmluZywgVmVjdG9yPFJl
ZlB0cjxOb2RlPj4+IFNlYXJjaFJlc3VsdHM7CiAgICAgU2VhcmNoUmVzdWx0cyBtX3NlYXJjaFJl
c3VsdHM7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFJldmFsaWRhdGVTdHlsZUF0dHJpYnV0ZVRhc2s+
IG1fcmV2YWxpZGF0ZVN0eWxlQXR0clRhc2s7CiAgICAgUmVmUHRyPE5vZGU+IG1fbm9kZVRvRm9j
dXM7Ci0gICAgYm9vbCBtX3NlYXJjaGluZ0Zvck5vZGU7CisgICAgYm9vbCBtX3NlYXJjaGluZ0Zv
ck5vZGUgeyBmYWxzZSB9OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxIaWdobGlnaHRDb25maWc+IG1f
aW5zcGVjdE1vZGVIaWdobGlnaHRDb25maWc7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEluc3BlY3Rv
ckhpc3Rvcnk+IG1faGlzdG9yeTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8RE9NRWRpdG9yPiBtX2Rv
bUVkaXRvcjsKLSAgICBib29sIG1fc3VwcHJlc3NBdHRyaWJ1dGVNb2RpZmllZEV2ZW50OwotICAg
IGJvb2wgbV9kb2N1bWVudFJlcXVlc3RlZDsKKyAgICBib29sIG1fc3VwcHJlc3NBdHRyaWJ1dGVN
b2RpZmllZEV2ZW50IHsgZmFsc2UgfTsKKyAgICBib29sIG1fZG9jdW1lbnRSZXF1ZXN0ZWQgeyBm
YWxzZSB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQuY3BwCmluZGV4IGQ1
MWQ0YmVhZTkxMjIzNTA3YjZjNDQ2Nzc5NDRjYjI3YmEzNmM0NjQuLjkzOTJhNTVhZTNiYmM5MTVi
MGRkMWU2NWE5NWI1NmU4ODRlMDAyZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudC5jcHAKQEAgLTU5LDEyICs1OSwxMCBA
QCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUlu
c3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6Okluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQoSW5zdHJ1
bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgSW5zcGVjdG9yRE9NQWdlbnQqIGRv
bUFnZW50LCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50KiBkZWJ1Z2dlckFnZW50KQorSW5zcGVjdG9y
RE9NRGVidWdnZXJBZ2VudDo6SW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudChJbnN0cnVtZW50aW5n
QWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBJbnNwZWN0b3JET01BZ2VudCogZG9tQWdlbnQs
IEluc3BlY3RvckRlYnVnZ2VyQWdlbnQqIGRlYnVnZ2VyQWdlbnQpCiAgICAgOiBJbnNwZWN0b3JB
Z2VudEJhc2UoQVNDSUlMaXRlcmFsKCJET01EZWJ1Z2dlciIpLCBpbnN0cnVtZW50aW5nQWdlbnRz
KQogICAgICwgbV9kb21BZ2VudChkb21BZ2VudCkKICAgICAsIG1fZGVidWdnZXJBZ2VudChkZWJ1
Z2dlckFnZW50KQotICAgICwgbV9wYXVzZUluTmV4dEV2ZW50TGlzdGVuZXIoZmFsc2UpCi0gICAg
LCBtX3BhdXNlT25BbGxYSFJzRW5hYmxlZChmYWxzZSkKIHsKICAgICBtX2RlYnVnZ2VyQWdlbnQt
PnNldExpc3RlbmVyKHRoaXMpOwogfQpAQCAtNzIsMTMgKzcwLDEzIEBAIEluc3BlY3RvckRPTURl
YnVnZ2VyQWdlbnQ6Okluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50
cyogaW5zdHJ1CiBJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50Ojp+SW5zcGVjdG9yRE9NRGVidWdn
ZXJBZ2VudCgpCiB7CiAgICAgQVNTRVJUKCFtX2RlYnVnZ2VyQWdlbnQpOwotICAgIEFTU0VSVCgh
bV9pbnN0cnVtZW50aW5nQWdlbnRzLT5pbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50KCkpOworICAg
IEFTU0VSVCghbV9pbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQo
KSk7CiB9CiAKIC8vIEJyb3dzZXIgZGVidWdnZXIgYWdlbnQgZW5hYmxlZCBvbmx5IHdoZW4gSlMg
ZGVidWdnZXIgaXMgZW5hYmxlZC4KIHZvaWQgSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6ZGVi
dWdnZXJXYXNFbmFibGVkKCkKIHsKLSAgICBtX2luc3RydW1lbnRpbmdBZ2VudHMtPnNldEluc3Bl
Y3RvckRPTURlYnVnZ2VyQWdlbnQodGhpcyk7CisgICAgbV9pbnN0cnVtZW50aW5nQWdlbnRzLnNl
dEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQodGhpcyk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yRE9N
RGVidWdnZXJBZ2VudDo6ZGVidWdnZXJXYXNEaXNhYmxlZCgpCkBAIC05OCw3ICs5Niw3IEBAIHZv
aWQgSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6ZGlkUGF1c2UoKQogCiB2b2lkIEluc3BlY3Rv
ckRPTURlYnVnZ2VyQWdlbnQ6OmRpc2FibGUoKQogewotICAgIG1faW5zdHJ1bWVudGluZ0FnZW50
cy0+c2V0SW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudChudWxscHRyKTsKKyAgICBtX2luc3RydW1l
bnRpbmdBZ2VudHMuc2V0SW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudChudWxscHRyKTsKICAgICBj
bGVhcigpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yRE9NRGVidWdnZXJBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckRPTURlYnVnZ2VyQWdlbnQuaAppbmRleCBhZmUzY2ZiOWQzMDk1NWRmYTMzMjk1ZWYwOTllYmZm
Y2EyNDdjZTY3Li4wMWIzMTM5ZTBlYTZiNTAxYmNjYzQ3YWU3OTRiNDI2NjU2YTI1MTJhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2Vu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01EZWJ1Z2dlckFn
ZW50LmgKQEAgLTU1LDcgKzU1LDcgQEAgY2xhc3MgSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudCBm
aW5hbCA6IHB1YmxpYyBJbnNwZWN0b3JBZ2VudEJhc2UsIHB1YmxpYyBJbnNwZWMKICAgICBXVEZf
TUFLRV9OT05DT1BZQUJMRShJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50KTsKICAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50
KEluc3RydW1lbnRpbmdBZ2VudHMqLCBJbnNwZWN0b3JET01BZ2VudCosIEluc3BlY3Rvcjo6SW5z
cGVjdG9yRGVidWdnZXJBZ2VudCopOworICAgIEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQoSW5z
dHJ1bWVudGluZ0FnZW50cyYsIEluc3BlY3RvckRPTUFnZW50KiwgSW5zcGVjdG9yOjpJbnNwZWN0
b3JEZWJ1Z2dlckFnZW50Kik7CiAgICAgdmlydHVhbCB+SW5zcGVjdG9yRE9NRGVidWdnZXJBZ2Vu
dCgpOwogCiAgICAgLy8gRE9NRGVidWdnZXIgQVBJCkBAIC05OSwxNCArOTksMTUgQEAgcHJpdmF0
ZToKIAogICAgIHZvaWQgY2xlYXIoKTsKIAotICAgIEluc3BlY3RvckRPTUFnZW50KiBtX2RvbUFn
ZW50OwotICAgIEluc3BlY3Rvcjo6SW5zcGVjdG9yRGVidWdnZXJBZ2VudCogbV9kZWJ1Z2dlckFn
ZW50OwogICAgIFJlZlB0cjxJbnNwZWN0b3I6OkRPTURlYnVnZ2VyQmFja2VuZERpc3BhdGNoZXI+
IG1fYmFja2VuZERpc3BhdGNoZXI7CisgICAgSW5zcGVjdG9yRE9NQWdlbnQqIG1fZG9tQWdlbnQg
eyBudWxscHRyIH07CisgICAgSW5zcGVjdG9yOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50KiBtX2Rl
YnVnZ2VyQWdlbnQgeyBudWxscHRyIH07CisKICAgICBIYXNoTWFwPE5vZGUqLCB1aW50MzJfdD4g
bV9kb21CcmVha3BvaW50czsKICAgICBIYXNoU2V0PFN0cmluZz4gbV9ldmVudExpc3RlbmVyQnJl
YWtwb2ludHM7CiAgICAgSGFzaFNldDxTdHJpbmc+IG1feGhyQnJlYWtwb2ludHM7Ci0gICAgYm9v
bCBtX3BhdXNlSW5OZXh0RXZlbnRMaXN0ZW5lcjsKLSAgICBib29sIG1fcGF1c2VPbkFsbFhIUnNF
bmFibGVkOworICAgIGJvb2wgbV9wYXVzZUluTmV4dEV2ZW50TGlzdGVuZXIgeyBmYWxzZSB9Owor
ICAgIGJvb2wgbV9wYXVzZU9uQWxsWEhSc0VuYWJsZWQgeyBmYWxzZSB9OwogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yRE9NU3RvcmFnZUFnZW50LmNwcAppbmRleCAwNGFmODhiY2UzZGMwMDUxNDg1YjNlMmE1
MGQ5NzE2MDE3YzJmNjlmLi4yZDM5OTc1OWU1OTljNmM1MTQ5MTg1ZGY0YTk1ZjdkNWVkMTU2ODg4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFn
ZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NU3Rv
cmFnZUFnZW50LmNwcApAQCAtNTMsMTggKzUzLDE2IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0
b3I7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50OjpJ
bnNwZWN0b3JET01TdG9yYWdlQWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGlu
Z0FnZW50cywgSW5zcGVjdG9yUGFnZUFnZW50KiBwYWdlQWdlbnQpCitJbnNwZWN0b3JET01TdG9y
YWdlQWdlbnQ6Okluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudChJbnN0cnVtZW50aW5nQWdlbnRzJiBp
bnN0cnVtZW50aW5nQWdlbnRzLCBJbnNwZWN0b3JQYWdlQWdlbnQqIHBhZ2VBZ2VudCkKICAgICA6
IEluc3BlY3RvckFnZW50QmFzZShBU0NJSUxpdGVyYWwoIkRPTVN0b3JhZ2UiKSwgaW5zdHJ1bWVu
dGluZ0FnZW50cykKICAgICAsIG1fcGFnZUFnZW50KHBhZ2VBZ2VudCkKLSAgICAsIG1fZW5hYmxl
ZChmYWxzZSkKIHsKLSAgICBtX2luc3RydW1lbnRpbmdBZ2VudHMtPnNldEluc3BlY3RvckRPTVN0
b3JhZ2VBZ2VudCh0aGlzKTsKKyAgICBtX2luc3RydW1lbnRpbmdBZ2VudHMuc2V0SW5zcGVjdG9y
RE9NU3RvcmFnZUFnZW50KHRoaXMpOwogfQogCiBJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQ6On5J
bnNwZWN0b3JET01TdG9yYWdlQWdlbnQoKQogewotICAgIG1faW5zdHJ1bWVudGluZ0FnZW50cy0+
c2V0SW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50KG51bGxwdHIpOwotICAgIG1faW5zdHJ1bWVudGlu
Z0FnZW50cyA9IG51bGxwdHI7CisgICAgbV9pbnN0cnVtZW50aW5nQWdlbnRzLnNldEluc3BlY3Rv
ckRPTVN0b3JhZ2VBZ2VudChudWxscHRyKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JET01TdG9yYWdl
QWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkZyb250ZW5kQ2hh
bm5lbCogZnJvbnRlbmRDaGFubmVsLCBJbnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyKiBiYWNr
ZW5kRGlzcGF0Y2hlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JET01TdG9yYWdlQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JET01TdG9yYWdlQWdlbnQuaAppbmRleCA1MGExZGQyMWM1NzFiMmMzMzg3MTE0MTlhOGY0ZjEw
ZWE3OWM5MGRkLi43OGE3YTI4NThkMmZmMDgxYzQ2ZWFiYzEyOTU4MTI5MTA1M2IxN2YzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTVN0b3JhZ2VBZ2Vu
dC5oCkBAIC01NCw3ICs1NCw3IEBAIHR5cGVkZWYgU3RyaW5nIEVycm9yU3RyaW5nOwogY2xhc3Mg
SW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50IGZpbmFsIDogcHVibGljIEluc3BlY3RvckFnZW50QmFz
ZSwgcHVibGljIEluc3BlY3Rvcjo6RE9NU3RvcmFnZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlciB7
CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgSW5zcGVjdG9yRE9N
U3RvcmFnZUFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMqLCBJbnNwZWN0b3JQYWdlQWdlbnQqKTsK
KyAgICBJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50cyYsIEluc3Bl
Y3RvclBhZ2VBZ2VudCopOwogICAgIHZpcnR1YWwgfkluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudCgp
OwogCiAgICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0
b3I6OkZyb250ZW5kQ2hhbm5lbCosIEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXIqKSBvdmVy
cmlkZTsKQEAgLTc3LDEwICs3NywxMSBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIFJlZlB0cjxT
dG9yYWdlQXJlYT4gZmluZFN0b3JhZ2VBcmVhKEVycm9yU3RyaW5nJiwgY29uc3QgSW5zcGVjdG9y
OjpJbnNwZWN0b3JPYmplY3QmLCBGcmFtZSomKTsKIAotICAgIEluc3BlY3RvclBhZ2VBZ2VudCog
bV9wYWdlQWdlbnQ7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEluc3BlY3Rvcjo6RE9NU3RvcmFnZUZy
b250ZW5kRGlzcGF0Y2hlcj4gbV9mcm9udGVuZERpc3BhdGNoZXI7CiAgICAgUmVmUHRyPEluc3Bl
Y3Rvcjo6RE9NU3RvcmFnZUJhY2tlbmREaXNwYXRjaGVyPiBtX2JhY2tlbmREaXNwYXRjaGVyOwot
ICAgIGJvb2wgbV9lbmFibGVkOworICAgIEluc3BlY3RvclBhZ2VBZ2VudCogbV9wYWdlQWdlbnQg
eyBudWxscHRyIH07CisKKyAgICBib29sIG1fZW5hYmxlZCB7IGZhbHNlIH07CiB9OwogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yRGF0YWJhc2VBZ2VudC5jcHAKaW5kZXggYmUyN2Y5NTYxNDQ1OWZiZmZkMWIwMmQ0ODVj
ZjFkNzdkZWQ5NjZlZC4uY2M0NzNkNzYxN2I3Yjk5ZmIzZWYxMGEyOWFhM2VjZjlhNWQwNjc1YyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRhdGFiYXNlQWdl
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFzZUFn
ZW50LmNwcApAQCAtMjEwLDE2ICsyMTAsMTUgQEAgdm9pZCBJbnNwZWN0b3JEYXRhYmFzZUFnZW50
OjpjbGVhclJlc291cmNlcygpCiAgICAgbV9yZXNvdXJjZXMuY2xlYXIoKTsKIH0KIAotSW5zcGVj
dG9yRGF0YWJhc2VBZ2VudDo6SW5zcGVjdG9yRGF0YWJhc2VBZ2VudChJbnN0cnVtZW50aW5nQWdl
bnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzKQorSW5zcGVjdG9yRGF0YWJhc2VBZ2VudDo6SW5zcGVj
dG9yRGF0YWJhc2VBZ2VudChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRz
KQogICAgIDogSW5zcGVjdG9yQWdlbnRCYXNlKEFTQ0lJTGl0ZXJhbCgiRGF0YWJhc2UiKSwgaW5z
dHJ1bWVudGluZ0FnZW50cykKLSAgICAsIG1fZW5hYmxlZChmYWxzZSkKIHsKLSAgICBtX2luc3Ry
dW1lbnRpbmdBZ2VudHMtPnNldEluc3BlY3RvckRhdGFiYXNlQWdlbnQodGhpcyk7CisgICAgbV9p
bnN0cnVtZW50aW5nQWdlbnRzLnNldEluc3BlY3RvckRhdGFiYXNlQWdlbnQodGhpcyk7CiB9CiAK
IEluc3BlY3RvckRhdGFiYXNlQWdlbnQ6On5JbnNwZWN0b3JEYXRhYmFzZUFnZW50KCkKIHsKLSAg
ICBtX2luc3RydW1lbnRpbmdBZ2VudHMtPnNldEluc3BlY3RvckRhdGFiYXNlQWdlbnQobnVsbHB0
cik7CisgICAgbV9pbnN0cnVtZW50aW5nQWdlbnRzLnNldEluc3BlY3RvckRhdGFiYXNlQWdlbnQo
bnVsbHB0cik7CiB9CiAKIHZvaWQgSW5zcGVjdG9yRGF0YWJhc2VBZ2VudDo6ZGlkQ3JlYXRlRnJv
bnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6RnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5u
ZWwsIEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRhdGFiYXNlQWdlbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFzZUFnZW50LmgKaW5k
ZXggM2ZkYWEyY2I3NDE4ZTUyMzBhMmZmOWJhYWQwNGY2ZTZmM2YyYWQ1NC4uMWRmOTQ5NDdmZThh
NmRmNDM5M2Y2ZWNhNTQzYWIyZDBiMjE2N2Q2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckRhdGFiYXNlQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5oCkBAIC01MCw3ICs1MCw3IEBAIHR5cGVk
ZWYgU3RyaW5nIEVycm9yU3RyaW5nOwogY2xhc3MgSW5zcGVjdG9yRGF0YWJhc2VBZ2VudCBmaW5h
bCA6IHB1YmxpYyBJbnNwZWN0b3JBZ2VudEJhc2UsIHB1YmxpYyBJbnNwZWN0b3I6OkRhdGFiYXNl
QmFja2VuZERpc3BhdGNoZXJIYW5kbGVyIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
IHB1YmxpYzoKLSAgICBleHBsaWNpdCBJbnNwZWN0b3JEYXRhYmFzZUFnZW50KEluc3RydW1lbnRp
bmdBZ2VudHMqKTsKKyAgICBleHBsaWNpdCBJbnNwZWN0b3JEYXRhYmFzZUFnZW50KEluc3RydW1l
bnRpbmdBZ2VudHMmKTsKICAgICB2aXJ0dWFsIH5JbnNwZWN0b3JEYXRhYmFzZUFnZW50KCk7CiAK
ICAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6
RnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlciopIG92ZXJyaWRl
OwpAQCAtNzQsOSArNzQsMTAgQEAgcHJpdmF0ZToKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxJbnNw
ZWN0b3I6OkRhdGFiYXNlRnJvbnRlbmREaXNwYXRjaGVyPiBtX2Zyb250ZW5kRGlzcGF0Y2hlcjsK
ICAgICBSZWZQdHI8SW5zcGVjdG9yOjpEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyPiBtX2JhY2tl
bmREaXNwYXRjaGVyOworCiAgICAgdHlwZWRlZiBIYXNoTWFwPFN0cmluZywgUmVmUHRyPEluc3Bl
Y3RvckRhdGFiYXNlUmVzb3VyY2U+PiBEYXRhYmFzZVJlc291cmNlc01hcDsKICAgICBEYXRhYmFz
ZVJlc291cmNlc01hcCBtX3Jlc291cmNlczsKLSAgICBib29sIG1fZW5hYmxlZDsKKyAgICBib29s
IG1fZW5hYmxlZCB7IGZhbHNlIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNw
cAppbmRleCAxNzJmYjU4MTI4MDIwYTNhZTU1ZDY1ZDRmMDhmNTdhZTE2YTBlY2Y3Li5lZjNiMTg1
YzM2MWQ4NzI3NGZjMDRjZGViNDU1ZTEyYjRkZWFhNDkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHAKQEAgLTU2NCw3ICs1
NjQsNyBAQCBwdWJsaWM6CiAKIH0gLy8gbmFtZXNwYWNlCiAKLUluc3BlY3RvckluZGV4ZWREQkFn
ZW50OjpJbnNwZWN0b3JJbmRleGVkREJBZ2VudChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVt
ZW50aW5nQWdlbnRzLCBJbmplY3RlZFNjcmlwdE1hbmFnZXIqIGluamVjdGVkU2NyaXB0TWFuYWdl
ciwgSW5zcGVjdG9yUGFnZUFnZW50KiBwYWdlQWdlbnQpCitJbnNwZWN0b3JJbmRleGVkREJBZ2Vu
dDo6SW5zcGVjdG9ySW5kZXhlZERCQWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVu
dGluZ0FnZW50cywgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyJiBpbmplY3RlZFNjcmlwdE1hbmFnZXIs
IEluc3BlY3RvclBhZ2VBZ2VudCogcGFnZUFnZW50KQogICAgIDogSW5zcGVjdG9yQWdlbnRCYXNl
KEFTQ0lJTGl0ZXJhbCgiSW5kZXhlZERCIiksIGluc3RydW1lbnRpbmdBZ2VudHMpCiAgICAgLCBt
X2luamVjdGVkU2NyaXB0TWFuYWdlcihpbmplY3RlZFNjcmlwdE1hbmFnZXIpCiAgICAgLCBtX3Bh
Z2VBZ2VudChwYWdlQWdlbnQpCkBAIC02NjYsNyArNjY2LDcgQEAgdm9pZCBJbnNwZWN0b3JJbmRl
eGVkREJBZ2VudDo6cmVxdWVzdERhdGEoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBT
dHJpbmcKICAgICBpZiAoIWlkYkZhY3RvcnkpCiAgICAgICAgIHJldHVybjsKIAotICAgIEluamVj
dGVkU2NyaXB0IGluamVjdGVkU2NyaXB0ID0gbV9pbmplY3RlZFNjcmlwdE1hbmFnZXItPmluamVj
dGVkU2NyaXB0Rm9yKG1haW5Xb3JsZEV4ZWNTdGF0ZShmcmFtZSkpOworICAgIEluamVjdGVkU2Ny
aXB0IGluamVjdGVkU2NyaXB0ID0gbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIuaW5qZWN0ZWRTY3Jp
cHRGb3IobWFpbldvcmxkRXhlY1N0YXRlKGZyYW1lKSk7CiAKICAgICBSZWZQdHI8SURCS2V5UmFu
Z2U+IGlkYktleVJhbmdlID0ga2V5UmFuZ2UgPyBpZGJLZXlSYW5nZUZyb21LZXlSYW5nZShrZXlS
YW5nZSkgOiBudWxscHRyOwogICAgIGlmIChrZXlSYW5nZSAmJiAhaWRiS2V5UmFuZ2UpIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbmRleGVkREJBZ2Vu
dC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmgK
aW5kZXggMTEwNzI4YTI2ZjUwNGU1Yzg2YjZlYmNiMWNkMTdhNGExMTYyMDliMC4uN2I4Y2U5OGI5
YjJjMjgyZWEzODI5ZWRkZGU0OTMxMTdmYmVmMmZkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmgKQEAgLTUwLDcgKzUwLDcgQEAg
dHlwZWRlZiBTdHJpbmcgRXJyb3JTdHJpbmc7CiBjbGFzcyBJbnNwZWN0b3JJbmRleGVkREJBZ2Vu
dCBmaW5hbCA6IHB1YmxpYyBJbnNwZWN0b3JBZ2VudEJhc2UsIHB1YmxpYyBJbnNwZWN0b3I6Oklu
ZGV4ZWREQkJhY2tlbmREaXNwYXRjaGVySGFuZGxlciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiBwdWJsaWM6Ci0gICAgSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQoSW5zdHJ1bWVudGlu
Z0FnZW50cyosIEluc3BlY3Rvcjo6SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiwgSW5zcGVjdG9yUGFn
ZUFnZW50Kik7CisgICAgSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50
cyYsIEluc3BlY3Rvcjo6SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyJiwgSW5zcGVjdG9yUGFnZUFnZW50
Kik7CiAgICAgdmlydHVhbCB+SW5zcGVjdG9ySW5kZXhlZERCQWdlbnQoKTsKIAogICAgIHZpcnR1
YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpGcm9udGVuZENo
YW5uZWwqLCBJbnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyKikgb3ZlcnJpZGU7CkBAIC02NSw5
ICs2NSw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgY2xlYXJPYmplY3RTdG9yZShFcnJv
clN0cmluZyYsIGNvbnN0IFN0cmluZyYgaW5fc2VjdXJpdHlPcmlnaW4sIGNvbnN0IFN0cmluZyYg
aW5fZGF0YWJhc2VOYW1lLCBjb25zdCBTdHJpbmcmIGluX29iamVjdFN0b3JlTmFtZSwgUmVmPENs
ZWFyT2JqZWN0U3RvcmVDYWxsYmFjaz4mJikgb3ZlcnJpZGU7CiAKIHByaXZhdGU6Ci0gICAgSW5z
cGVjdG9yOjpJbmplY3RlZFNjcmlwdE1hbmFnZXIqIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOwot
ICAgIEluc3BlY3RvclBhZ2VBZ2VudCogbV9wYWdlQWdlbnQ7CiAgICAgUmVmUHRyPEluc3BlY3Rv
cjo6SW5kZXhlZERCQmFja2VuZERpc3BhdGNoZXI+IG1fYmFja2VuZERpc3BhdGNoZXI7CisgICAg
SW5zcGVjdG9yOjpJbmplY3RlZFNjcmlwdE1hbmFnZXImIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2Vy
OworICAgIEluc3BlY3RvclBhZ2VBZ2VudCogbV9wYWdlQWdlbnQgeyBudWxscHRyIH07CiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCmluZGV4IGUyOGMxY2FjNTg0NmMwNDgw
YzU3ZjAzYWJiODUxNDE0MTFmMTFmMDguLmE4YzViYWQ4YjNhNDFkYWVlMWYyMjIyNGE0YTI5Yzc5
MDQ1MjQ0YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JJbnN0cnVtZW50YXRpb24uY3BwCkBAIC0xLDYgKzEsNiBAQAogLyoKICogQ29weXJpZ2h0IChD
KSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0qIENvcHlyaWdodCAoQykg
MjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisqIENvcHlyaWdodCAoQykgMjAx
NCwgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAqCiAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMgYXJlCkBAIC0xMjYxLDEwICsxMjYxLDEwIEBAIEluc3BlY3RvclRpbWVsaW5l
QWdlbnQqIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6cmV0cmlldmVUaW1lbGluZUFnZW50KGNv
bnN0IEluCiAKIEluc3RydW1lbnRpbmdBZ2VudHMqIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
aW5zdHJ1bWVudGluZ0FnZW50c0ZvclBhZ2UoUGFnZSogcGFnZSkKIHsKLSAgICByZXR1cm4gcGFn
ZSA/IGluc3RydW1lbnRpbmdBZ2VudHNGb3JQYWdlKCpwYWdlKSA6IG51bGxwdHI7CisgICAgcmV0
dXJuIHBhZ2UgPyAmaW5zdHJ1bWVudGluZ0FnZW50c0ZvclBhZ2UoKnBhZ2UpIDogbnVsbHB0cjsK
IH0KIAotSW5zdHJ1bWVudGluZ0FnZW50cyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjppbnN0
cnVtZW50aW5nQWdlbnRzRm9yUGFnZShQYWdlJiBwYWdlKQorSW5zdHJ1bWVudGluZ0FnZW50cyYg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjppbnN0cnVtZW50aW5nQWdlbnRzRm9yUGFnZShQYWdl
JiBwYWdlKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgcmV0dXJuIHBhZ2Uu
aW5zcGVjdG9yQ29udHJvbGxlcigpLm1faW5zdHJ1bWVudGluZ0FnZW50cy5nZXQoKTsKQEAgLTEy
NzcsNyArMTI3Nyw3IEBAIEluc3RydW1lbnRpbmdBZ2VudHMqIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6aW5zdHJ1bWVudGluZ0FnZW50c0ZvclJlbmRlcmVyKFJlCiAKIEluc3RydW1lbnRpbmdB
Z2VudHMqIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aW5zdHJ1bWVudGluZ0FnZW50c0Zvcldv
cmtlckdsb2JhbFNjb3BlKFdvcmtlckdsb2JhbFNjb3BlKiB3b3JrZXJHbG9iYWxTY29wZSkKIHsK
LSAgICByZXR1cm4gd29ya2VyR2xvYmFsU2NvcGUgPyB3b3JrZXJHbG9iYWxTY29wZS0+d29ya2Vy
SW5zcGVjdG9yQ29udHJvbGxlcigpLm1faW5zdHJ1bWVudGluZ0FnZW50cy5nZXQoKSA6IG51bGxw
dHI7CisgICAgcmV0dXJuIHdvcmtlckdsb2JhbFNjb3BlID8gJndvcmtlckdsb2JhbFNjb3BlLT53
b3JrZXJJbnNwZWN0b3JDb250cm9sbGVyKCkubV9pbnN0cnVtZW50aW5nQWdlbnRzLmdldCgpIDog
bnVsbHB0cjsKIH0KIAogSW5zdHJ1bWVudGluZ0FnZW50cyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjppbnN0cnVtZW50aW5nQWdlbnRzRm9yTm9uRG9jdW1lbnRDb250ZXh0KFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIGNvbnRleHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgKaW5kZXggZDE3Y2I2M2M0Yjk1MDM0ZjljNDVjZGQ4
M2U1NzU1MDM5ZjAzNDkxYi4uOWY2MzY1ZTg4ZDMyOGNlM2U1NjA5NjUyYTUwYjllNGExZjVhY2M2
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1l
bnRhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb24uaApAQCAtMSw2ICsxLDYgQEAKIC8qCiAqIENvcHlyaWdodCAoQykgMjAxMCBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorKiBDb3B5cmlnaHQgKEMpIDIwMTQsIDIwMTUgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogKgogKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
IGFyZQpAQCAtNDU3LDcgKzQ1Nyw3IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIHZvaWQgbGF5ZXJU
cmVlRGlkQ2hhbmdlSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJik7CiAgICAgc3RhdGljIHZvaWQg
cmVuZGVyTGF5ZXJEZXN0cm95ZWRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBjb25zdCBSZW5k
ZXJMYXllciYpOwogCi0gICAgc3RhdGljIEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRp
bmdBZ2VudHNGb3JQYWdlKFBhZ2UmKTsKKyAgICBzdGF0aWMgSW5zdHJ1bWVudGluZ0FnZW50cyYg
aW5zdHJ1bWVudGluZ0FnZW50c0ZvclBhZ2UoUGFnZSYpOwogICAgIHN0YXRpYyBJbnN0cnVtZW50
aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzRm9yRnJhbWUoRnJhbWUmKTsKICAgICBzdGF0
aWMgSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50c0ZvckZyYW1lKEZyYW1l
Kik7CiAgICAgc3RhdGljIEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHNG
b3JDb250ZXh0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKQEAgLTYzOSw4ICs2MzksNyBAQCBp
bmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFVucmVnaXN0ZXJOYW1lZEZs
b3dDb250ZW50RWxlbWVudChEb2N1bQogaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjptb3VzZURpZE1vdmVPdmVyRWxlbWVudChQYWdlJiBwYWdlLCBjb25zdCBIaXRUZXN0UmVz
dWx0JiByZXN1bHQsIHVuc2lnbmVkIG1vZGlmaWVyRmxhZ3MpCiB7CiAgICAgRkFTVF9SRVRVUk5f
SUZfTk9fRlJPTlRFTkRTKHZvaWQoKSk7Ci0gICAgaWYgKEluc3RydW1lbnRpbmdBZ2VudHMqIGlu
c3RydW1lbnRpbmdBZ2VudHMgPSBpbnN0cnVtZW50aW5nQWdlbnRzRm9yUGFnZShwYWdlKSkKLSAg
ICAgICAgbW91c2VEaWRNb3ZlT3ZlckVsZW1lbnRJbXBsKCppbnN0cnVtZW50aW5nQWdlbnRzLCBy
ZXN1bHQsIG1vZGlmaWVyRmxhZ3MpOworICAgIG1vdXNlRGlkTW92ZU92ZXJFbGVtZW50SW1wbChp
bnN0cnVtZW50aW5nQWdlbnRzRm9yUGFnZShwYWdlKSwgcmVzdWx0LCBtb2RpZmllckZsYWdzKTsK
IH0KIAogaW5saW5lIGJvb2wgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpoYW5kbGVUb3VjaEV2
ZW50KEZyYW1lJiBmcmFtZSwgTm9kZSYgbm9kZSkKQEAgLTc4OSw4ICs3ODgsNyBAQCBpbmxpbmUg
dm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEV2YWx1YXRlU2NyaXB0KGNvbnN0IElu
c3BlY3Rvckluc3RydW1lbgogaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpz
Y3JpcHRzRW5hYmxlZChQYWdlJiBwYWdlLCBib29sIGlzRW5hYmxlZCkKIHsKICAgICBGQVNUX1JF
VFVSTl9JRl9OT19GUk9OVEVORFModm9pZCgpKTsKLSAgICBpZiAoSW5zdHJ1bWVudGluZ0FnZW50
cyogaW5zdHJ1bWVudGluZ0FnZW50cyA9IGluc3RydW1lbnRpbmdBZ2VudHNGb3JQYWdlKHBhZ2Up
KQotICAgICAgICByZXR1cm4gc2NyaXB0c0VuYWJsZWRJbXBsKCppbnN0cnVtZW50aW5nQWdlbnRz
LCBpc0VuYWJsZWQpOworICAgIHJldHVybiBzY3JpcHRzRW5hYmxlZEltcGwoaW5zdHJ1bWVudGlu
Z0FnZW50c0ZvclBhZ2UocGFnZSksIGlzRW5hYmxlZCk7CiB9CiAKIGlubGluZSBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb25Db29raWUgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsRmlyZVRp
bWVyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGludCB0aW1lcklkKQpAQCAtODMz
LDggKzgzMSw3IEBAIGlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkTGF5
b3V0KGNvbnN0IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvCiBpbmxpbmUgdm9pZCBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb246OmRpZFNjcm9sbChQYWdlJiBwYWdlKQogewogICAgIEZBU1RfUkVU
VVJOX0lGX05PX0ZST05URU5EUyh2b2lkKCkpOwotICAgIGlmIChJbnN0cnVtZW50aW5nQWdlbnRz
KiBpbnN0cnVtZW50aW5nQWdlbnRzID0gaW5zdHJ1bWVudGluZ0FnZW50c0ZvclBhZ2UocGFnZSkp
Ci0gICAgICAgIGRpZFNjcm9sbEltcGwoKmluc3RydW1lbnRpbmdBZ2VudHMpOworICAgIGRpZFNj
cm9sbEltcGwoaW5zdHJ1bWVudGluZ0FnZW50c0ZvclBhZ2UocGFnZSkpOwogfQogCiBpbmxpbmUg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
d2lsbERpc3BhdGNoWEhSTG9hZEV2ZW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQs
IFhNTEh0dHBSZXF1ZXN0JiByZXF1ZXN0KQpAQCAtOTM3LDE0ICs5MzQsMTIgQEAgaW5saW5lIHZv
aWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpjb250aW51ZUFmdGVyUGluZ0xvYWRlcihGcmFt
ZSYgZnJhbWUsIHVuc2kKIAogaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpt
YXJrUmVzb3VyY2VBc0NhY2hlZChQYWdlJiBwYWdlLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIp
CiB7Ci0gICAgaWYgKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMgPSBp
bnN0cnVtZW50aW5nQWdlbnRzRm9yUGFnZShwYWdlKSkKLSAgICAgICAgbWFya1Jlc291cmNlQXND
YWNoZWRJbXBsKCppbnN0cnVtZW50aW5nQWdlbnRzLCBpZGVudGlmaWVyKTsKKyAgICBtYXJrUmVz
b3VyY2VBc0NhY2hlZEltcGwoaW5zdHJ1bWVudGluZ0FnZW50c0ZvclBhZ2UocGFnZSksIGlkZW50
aWZpZXIpOwogfQogCiBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZExv
YWRSZXNvdXJjZUZyb21NZW1vcnlDYWNoZShQYWdlJiBwYWdlLCBEb2N1bWVudExvYWRlciogbG9h
ZGVyLCBDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UpCiB7Ci0gICAgaWYgKEluc3RydW1lbnRpbmdB
Z2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMgPSBpbnN0cnVtZW50aW5nQWdlbnRzRm9yUGFnZShw
YWdlKSkKLSAgICAgICAgZGlkTG9hZFJlc291cmNlRnJvbU1lbW9yeUNhY2hlSW1wbCgqaW5zdHJ1
bWVudGluZ0FnZW50cywgbG9hZGVyLCByZXNvdXJjZSk7CisgICAgZGlkTG9hZFJlc291cmNlRnJv
bU1lbW9yeUNhY2hlSW1wbChpbnN0cnVtZW50aW5nQWdlbnRzRm9yUGFnZShwYWdlKSwgbG9hZGVy
LCByZXNvdXJjZSk7CiB9CiAKIGlubGluZSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsUmVjZWl2ZVJlc291cmNlUmVzcG9uc2UoRnJh
bWUqIGZyYW1lKQpAQCAtMTEwMyw5ICsxMDk4LDcgQEAgaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjpmcmFtZUNsZWFyZWRTY2hlZHVsZWROYXZpZ2F0aW9uKEZyYW1lJiBmcmEK
IGlubGluZSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uOjp3aWxsUnVuSmF2YVNjcmlwdERpYWxvZyhQYWdlJiBwYWdlLCBjb25zdCBTdHJpbmcm
IG1lc3NhZ2UpCiB7CiAgICAgRkFTVF9SRVRVUk5fSUZfTk9fRlJPTlRFTkRTKEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbkNvb2tpZSgpKTsKLSAgICBpZiAoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5z
dHJ1bWVudGluZ0FnZW50cyA9IGluc3RydW1lbnRpbmdBZ2VudHNGb3JQYWdlKHBhZ2UpKQotICAg
ICAgICByZXR1cm4gd2lsbFJ1bkphdmFTY3JpcHREaWFsb2dJbXBsKCppbnN0cnVtZW50aW5nQWdl
bnRzLCBtZXNzYWdlKTsKLSAgICByZXR1cm4gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2ll
KCk7CisgICAgcmV0dXJuIHdpbGxSdW5KYXZhU2NyaXB0RGlhbG9nSW1wbChpbnN0cnVtZW50aW5n
QWdlbnRzRm9yUGFnZShwYWdlKSwgbWVzc2FnZSk7CiB9CiAKIGlubGluZSB2b2lkIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6ZGlkUnVuSmF2YVNjcmlwdERpYWxvZyhjb25zdCBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb25Db29raWUmIGNvb2tpZSkKQEAgLTEyMTEsOTIgKzEyMDQsNzkgQEAgaW5s
aW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRTZW5kV2ViU29ja2V0RnJhbWUo
RG9jdW1lbnQqIGRvY3VtZW50LAogaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
OjpzZXNzaW9uQ3JlYXRlZChQYWdlJiBwYWdlLCBSZWZQdHI8UmVwbGF5U2Vzc2lvbj4mJiBzZXNz
aW9uKQogewogICAgIEZBU1RfUkVUVVJOX0lGX05PX0ZST05URU5EUyh2b2lkKCkpOwotICAgIGlm
IChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzID0gaW5zdHJ1bWVudGlu
Z0FnZW50c0ZvclBhZ2UocGFnZSkpCi0gICAgICAgIHNlc3Npb25DcmVhdGVkSW1wbCgqaW5zdHJ1
bWVudGluZ0FnZW50cywgV1RGOjptb3ZlKHNlc3Npb24pKTsKKyAgICBzZXNzaW9uQ3JlYXRlZElt
cGwoaW5zdHJ1bWVudGluZ0FnZW50c0ZvclBhZ2UocGFnZSksIFdURjo6bW92ZShzZXNzaW9uKSk7
CiB9CiAKIGlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6c2Vzc2lvbkxvYWRl
ZChQYWdlJiBwYWdlLCBSZWZQdHI8UmVwbGF5U2Vzc2lvbj4mJiBzZXNzaW9uKQogewogICAgIEZB
U1RfUkVUVVJOX0lGX05PX0ZST05URU5EUyh2b2lkKCkpOwotICAgIGlmIChJbnN0cnVtZW50aW5n
QWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzID0gaW5zdHJ1bWVudGluZ0FnZW50c0ZvclBhZ2Uo
cGFnZSkpCi0gICAgICAgIHNlc3Npb25Mb2FkZWRJbXBsKCppbnN0cnVtZW50aW5nQWdlbnRzLCBX
VEY6Om1vdmUoc2Vzc2lvbikpOworICAgIHNlc3Npb25Mb2FkZWRJbXBsKGluc3RydW1lbnRpbmdB
Z2VudHNGb3JQYWdlKHBhZ2UpLCBXVEY6Om1vdmUoc2Vzc2lvbikpOwogfQogCiBpbmxpbmUgdm9p
ZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnNlc3Npb25Nb2RpZmllZChQYWdlJiBwYWdlLCBS
ZWZQdHI8UmVwbGF5U2Vzc2lvbj4mJiBzZXNzaW9uKQogewogICAgIEZBU1RfUkVUVVJOX0lGX05P
X0ZST05URU5EUyh2b2lkKCkpOwotICAgIGlmIChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVt
ZW50aW5nQWdlbnRzID0gaW5zdHJ1bWVudGluZ0FnZW50c0ZvclBhZ2UocGFnZSkpCi0gICAgICAg
IHNlc3Npb25Nb2RpZmllZEltcGwoKmluc3RydW1lbnRpbmdBZ2VudHMsIFdURjo6bW92ZShzZXNz
aW9uKSk7CisgICAgc2Vzc2lvbk1vZGlmaWVkSW1wbChpbnN0cnVtZW50aW5nQWdlbnRzRm9yUGFn
ZShwYWdlKSwgV1RGOjptb3ZlKHNlc3Npb24pKTsKIH0KIAogaW5saW5lIHZvaWQgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjpzZWdtZW50Q3JlYXRlZChQYWdlJiBwYWdlLCBSZWZQdHI8UmVwbGF5
U2Vzc2lvblNlZ21lbnQ+JiYgc2VnbWVudCkKIHsKICAgICBGQVNUX1JFVFVSTl9JRl9OT19GUk9O
VEVORFModm9pZCgpKTsKLSAgICBpZiAoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGlu
Z0FnZW50cyA9IGluc3RydW1lbnRpbmdBZ2VudHNGb3JQYWdlKHBhZ2UpKQotICAgICAgICBzZWdt
ZW50Q3JlYXRlZEltcGwoKmluc3RydW1lbnRpbmdBZ2VudHMsIFdURjo6bW92ZShzZWdtZW50KSk7
CisgICAgc2VnbWVudENyZWF0ZWRJbXBsKGluc3RydW1lbnRpbmdBZ2VudHNGb3JQYWdlKHBhZ2Up
LCBXVEY6Om1vdmUoc2VnbWVudCkpOwogfQogCiBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OnNlZ21lbnRDb21wbGV0ZWQoUGFnZSYgcGFnZSwgUmVmUHRyPFJlcGxheVNlc3Np
b25TZWdtZW50PiYmIHNlZ21lbnQpCiB7CiAgICAgRkFTVF9SRVRVUk5fSUZfTk9fRlJPTlRFTkRT
KHZvaWQoKSk7Ci0gICAgaWYgKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2Vu
dHMgPSBpbnN0cnVtZW50aW5nQWdlbnRzRm9yUGFnZShwYWdlKSkKLSAgICAgICAgc2VnbWVudENv
bXBsZXRlZEltcGwoKmluc3RydW1lbnRpbmdBZ2VudHMsIFdURjo6bW92ZShzZWdtZW50KSk7Cisg
ICAgc2VnbWVudENvbXBsZXRlZEltcGwoaW5zdHJ1bWVudGluZ0FnZW50c0ZvclBhZ2UocGFnZSks
IFdURjo6bW92ZShzZWdtZW50KSk7CiB9CiAKIGlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6c2VnbWVudExvYWRlZChQYWdlJiBwYWdlLCBSZWZQdHI8UmVwbGF5U2Vzc2lvblNl
Z21lbnQ+JiYgc2VnbWVudCkKIHsKICAgICBGQVNUX1JFVFVSTl9JRl9OT19GUk9OVEVORFModm9p
ZCgpKTsKLSAgICBpZiAoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cyA9
IGluc3RydW1lbnRpbmdBZ2VudHNGb3JQYWdlKHBhZ2UpKQotICAgICAgICBzZWdtZW50TG9hZGVk
SW1wbCgqaW5zdHJ1bWVudGluZ0FnZW50cywgV1RGOjptb3ZlKHNlZ21lbnQpKTsKKyAgICBzZWdt
ZW50TG9hZGVkSW1wbChpbnN0cnVtZW50aW5nQWdlbnRzRm9yUGFnZShwYWdlKSwgV1RGOjptb3Zl
KHNlZ21lbnQpKTsKIH0KIAogaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpz
ZWdtZW50VW5sb2FkZWQoUGFnZSYgcGFnZSkKIHsKICAgICBGQVNUX1JFVFVSTl9JRl9OT19GUk9O
VEVORFModm9pZCgpKTsKLSAgICBpZiAoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGlu
Z0FnZW50cyA9IGluc3RydW1lbnRpbmdBZ2VudHNGb3JQYWdlKHBhZ2UpKQotICAgICAgICBzZWdt
ZW50VW5sb2FkZWRJbXBsKCppbnN0cnVtZW50aW5nQWdlbnRzKTsKKyAgICBzZWdtZW50VW5sb2Fk
ZWRJbXBsKGluc3RydW1lbnRpbmdBZ2VudHNGb3JQYWdlKHBhZ2UpKTsKIH0KIAogaW5saW5lIHZv
aWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpjYXB0dXJlU3RhcnRlZChQYWdlJiBwYWdlKQog
ewogICAgIEZBU1RfUkVUVVJOX0lGX05PX0ZST05URU5EUyh2b2lkKCkpOwotICAgIGlmIChJbnN0
cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzID0gaW5zdHJ1bWVudGluZ0FnZW50
c0ZvclBhZ2UocGFnZSkpCi0gICAgICAgIGNhcHR1cmVTdGFydGVkSW1wbCgqaW5zdHJ1bWVudGlu
Z0FnZW50cyk7CisgICAgY2FwdHVyZVN0YXJ0ZWRJbXBsKGluc3RydW1lbnRpbmdBZ2VudHNGb3JQ
YWdlKHBhZ2UpKTsKIH0KIAogaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpj
YXB0dXJlU3RvcHBlZChQYWdlJiBwYWdlKQogewogICAgIEZBU1RfUkVUVVJOX0lGX05PX0ZST05U
RU5EUyh2b2lkKCkpOwotICAgIGlmIChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5n
QWdlbnRzID0gaW5zdHJ1bWVudGluZ0FnZW50c0ZvclBhZ2UocGFnZSkpCi0gICAgICAgIGNhcHR1
cmVTdG9wcGVkSW1wbCgqaW5zdHJ1bWVudGluZ0FnZW50cyk7CisgICAgY2FwdHVyZVN0b3BwZWRJ
bXBsKGluc3RydW1lbnRpbmdBZ2VudHNGb3JQYWdlKHBhZ2UpKTsKIH0KIAogaW5saW5lIHZvaWQg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpwbGF5YmFja1N0YXJ0ZWQoUGFnZSYgcGFnZSkKIHsK
ICAgICBGQVNUX1JFVFVSTl9JRl9OT19GUk9OVEVORFModm9pZCgpKTsKLSAgICBpZiAoSW5zdHJ1
bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cyA9IGluc3RydW1lbnRpbmdBZ2VudHNG
b3JQYWdlKHBhZ2UpKQotICAgICAgICBwbGF5YmFja1N0YXJ0ZWRJbXBsKCppbnN0cnVtZW50aW5n
QWdlbnRzKTsKKyAgICAgICAgcGxheWJhY2tTdGFydGVkSW1wbChpbnN0cnVtZW50aW5nQWdlbnRz
Rm9yUGFnZShwYWdlKSk7CiB9CiAKIGlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6cGxheWJhY2tQYXVzZWQoUGFnZSYgcGFnZSwgY29uc3QgUmVwbGF5UG9zaXRpb24mIHBvc2l0
aW9uKQogewogICAgIEZBU1RfUkVUVVJOX0lGX05PX0ZST05URU5EUyh2b2lkKCkpOwotICAgIGlm
IChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzID0gaW5zdHJ1bWVudGlu
Z0FnZW50c0ZvclBhZ2UocGFnZSkpCi0gICAgICAgIHBsYXliYWNrUGF1c2VkSW1wbCgqaW5zdHJ1
bWVudGluZ0FnZW50cywgcG9zaXRpb24pOworICAgICAgICBwbGF5YmFja1BhdXNlZEltcGwoaW5z
dHJ1bWVudGluZ0FnZW50c0ZvclBhZ2UocGFnZSksIHBvc2l0aW9uKTsKIH0KIAogaW5saW5lIHZv
aWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpwbGF5YmFja0ZpbmlzaGVkKFBhZ2UmIHBhZ2Up
CiB7CiAgICAgRkFTVF9SRVRVUk5fSUZfTk9fRlJPTlRFTkRTKHZvaWQoKSk7Ci0gICAgaWYgKElu
c3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMgPSBpbnN0cnVtZW50aW5nQWdl
bnRzRm9yUGFnZShwYWdlKSkKLSAgICAgICAgcGxheWJhY2tGaW5pc2hlZEltcGwoKmluc3RydW1l
bnRpbmdBZ2VudHMpOworICAgICAgICBwbGF5YmFja0ZpbmlzaGVkSW1wbChpbnN0cnVtZW50aW5n
QWdlbnRzRm9yUGFnZShwYWdlKSk7CiB9CiAKIGlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6cGxheWJhY2tIaXRQb3NpdGlvbihQYWdlJiBwYWdlLCBjb25zdCBSZXBsYXlQb3Np
dGlvbiYgcG9zaXRpb24pCiB7CiAgICAgRkFTVF9SRVRVUk5fSUZfTk9fRlJPTlRFTkRTKHZvaWQo
KSk7Ci0gICAgaWYgKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMgPSBp
bnN0cnVtZW50aW5nQWdlbnRzRm9yUGFnZShwYWdlKSkKLSAgICAgICAgcGxheWJhY2tIaXRQb3Np
dGlvbkltcGwoKmluc3RydW1lbnRpbmdBZ2VudHMsIHBvc2l0aW9uKTsKKyAgICAgICAgcGxheWJh
Y2tIaXRQb3NpdGlvbkltcGwoaW5zdHJ1bWVudGluZ0FnZW50c0ZvclBhZ2UocGFnZSksIHBvc2l0
aW9uKTsKIH0KICNlbmRpZiAvLyBFTkFCTEUoV0VCX1JFUExBWSkKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckxheWVyVHJlZUFnZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JMYXllclRyZWVBZ2VudC5jcHAKaW5kZXggZDQz
YjY5Y2Q2Y2VlMzY3ZjJmNGNjZGQ1NDJlZTQ2NDQ4NzRkNTM3Yi4uZTY2ZmNmMmQ4MzZhZGFmZTE4
MzQ0N2I5ZGE3ODViZmMxZjRiYjVjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckxheWVyVHJlZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuY3BwCkBAIC00Niw3ICs0Niw3IEBAIHVzaW5n
IG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotSW5zcGVjdG9y
TGF5ZXJUcmVlQWdlbnQ6Okluc3BlY3RvckxheWVyVHJlZUFnZW50KEluc3RydW1lbnRpbmdBZ2Vu
dHMqIGluc3RydW1lbnRpbmdBZ2VudHMpCitJbnNwZWN0b3JMYXllclRyZWVBZ2VudDo6SW5zcGVj
dG9yTGF5ZXJUcmVlQWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50
cykKICAgICA6IEluc3BlY3RvckFnZW50QmFzZShBU0NJSUxpdGVyYWwoIkxheWVyVHJlZSIpLCBp
bnN0cnVtZW50aW5nQWdlbnRzKQogewogfQpAQCAtODEsMTIgKzgxLDEyIEBAIHZvaWQgSW5zcGVj
dG9yTGF5ZXJUcmVlQWdlbnQ6OnJlc2V0KCkKIAogdm9pZCBJbnNwZWN0b3JMYXllclRyZWVBZ2Vu
dDo6ZW5hYmxlKEVycm9yU3RyaW5nJikKIHsKLSAgICBtX2luc3RydW1lbnRpbmdBZ2VudHMtPnNl
dEluc3BlY3RvckxheWVyVHJlZUFnZW50KHRoaXMpOworICAgIG1faW5zdHJ1bWVudGluZ0FnZW50
cy5zZXRJbnNwZWN0b3JMYXllclRyZWVBZ2VudCh0aGlzKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JM
YXllclRyZWVBZ2VudDo6ZGlzYWJsZShFcnJvclN0cmluZyYpCiB7Ci0gICAgbV9pbnN0cnVtZW50
aW5nQWdlbnRzLT5zZXRJbnNwZWN0b3JMYXllclRyZWVBZ2VudChudWxscHRyKTsKKyAgICBtX2lu
c3RydW1lbnRpbmdBZ2VudHMuc2V0SW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQobnVsbHB0cik7CiB9
CiAKIHZvaWQgSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6OmxheWVyVHJlZURpZENoYW5nZSgpCkBA
IC0xMDgsNyArMTA4LDcgQEAgdm9pZCBJbnNwZWN0b3JMYXllclRyZWVBZ2VudDo6bGF5ZXJzRm9y
Tm9kZShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGludCBub2RlSWQKIHsKICAgICBsYXllcnMg
PSBJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpMYXllclRy
ZWU6OkxheWVyPjo6Y3JlYXRlKCk7CiAKLSAgICBOb2RlKiBub2RlID0gbV9pbnN0cnVtZW50aW5n
QWdlbnRzLT5pbnNwZWN0b3JET01BZ2VudCgpLT5ub2RlRm9ySWQobm9kZUlkKTsKKyAgICBOb2Rl
KiBub2RlID0gbV9pbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3RvckRPTUFnZW50KCktPm5vZGVG
b3JJZChub2RlSWQpOwogICAgIGlmICghbm9kZSkgewogICAgICAgICBlcnJvclN0cmluZyA9IEFT
Q0lJTGl0ZXJhbCgiUHJvdmlkZWQgbm9kZSBpZCBkb2Vzbid0IG1hdGNoIGFueSBrbm93biBub2Rl
Iik7CiAgICAgICAgIHJldHVybjsKQEAgLTIwNyw3ICsyMDcsNyBAQCBpbnQgSW5zcGVjdG9yTGF5
ZXJUcmVlQWdlbnQ6OmlkRm9yTm9kZShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIE5vZGUqIG5v
ZGUpCiAgICAgaWYgKCFub2RlKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIEluc3BlY3RvckRP
TUFnZW50KiBkb21BZ2VudCA9IG1faW5zdHJ1bWVudGluZ0FnZW50cy0+aW5zcGVjdG9yRE9NQWdl
bnQoKTsKKyAgICBJbnNwZWN0b3JET01BZ2VudCogZG9tQWdlbnQgPSBtX2luc3RydW1lbnRpbmdB
Z2VudHMuaW5zcGVjdG9yRE9NQWdlbnQoKTsKICAgICAKICAgICBpbnQgbm9kZUlkID0gZG9tQWdl
bnQtPmJvdW5kTm9kZUlkKG5vZGUpOwogICAgIGlmICghbm9kZUlkKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckxheWVyVHJlZUFnZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuaAppbmRleCA1YWJjMTM3
NTMyNTZkODQ0NTI2ZTJiMzU5OGY0YWMxMmIzY2U1NzUxLi40ZmY1NDQ5MWI2ZjZiMGNlZTJlNzZj
NzZmOGVkMjIxMGMxZjYyZmMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuaApAQCAtNDcsNyArNDcsNyBAQCB0eXBlZGVmIFN0cmlu
ZyBFcnJvclN0cmluZzsKIGNsYXNzIEluc3BlY3RvckxheWVyVHJlZUFnZW50IGZpbmFsIDogcHVi
bGljIEluc3BlY3RvckFnZW50QmFzZSwgcHVibGljIEluc3BlY3Rvcjo6TGF5ZXJUcmVlQmFja2Vu
ZERpc3BhdGNoZXJIYW5kbGVyIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1Ymxp
YzoKLSAgICBleHBsaWNpdCBJbnNwZWN0b3JMYXllclRyZWVBZ2VudChJbnN0cnVtZW50aW5nQWdl
bnRzKik7CisgICAgZXhwbGljaXQgSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQoSW5zdHJ1bWVudGlu
Z0FnZW50cyYpOwogICAgIHZpcnR1YWwgfkluc3BlY3RvckxheWVyVHJlZUFnZW50KCk7CiAKICAg
ICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6RnJv
bnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlciopIG92ZXJyaWRlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmNwcAppbmRl
eCAyOGIzMGRkMTUwOThmYjY4MDZkYzg0YzU3MmE0YWNhMWRiZmQ5YmVkLi43ODFiNTc4YWY0NjEy
NTAyMTk1YzYyMGUxNTkzNmE2MGI3N2E1NjRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmNwcApAQCAtMzI1LDE3ICszMjUsMTEgQEAgSW5zcGVj
dG9yOjpQcm90b2NvbDo6UGFnZTo6UmVzb3VyY2VUeXBlIEluc3BlY3RvclBhZ2VBZ2VudDo6Y2Fj
aGVkUmVzb3VyY2VUeXBlSnMKICAgICByZXR1cm4gcmVzb3VyY2VUeXBlSnNvbihjYWNoZWRSZXNv
dXJjZVR5cGUoY2FjaGVkUmVzb3VyY2UpKTsKIH0KIAotSW5zcGVjdG9yUGFnZUFnZW50OjpJbnNw
ZWN0b3JQYWdlQWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywg
UGFnZSogcGFnZSwgSW5zcGVjdG9yQ2xpZW50KiBjbGllbnQsIEluc3BlY3Rvck92ZXJsYXkqIG92
ZXJsYXkpCitJbnNwZWN0b3JQYWdlQWdlbnQ6Okluc3BlY3RvclBhZ2VBZ2VudChJbnN0cnVtZW50
aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBQYWdlKiBwYWdlLCBJbnNwZWN0b3JDbGll
bnQqIGNsaWVudCwgSW5zcGVjdG9yT3ZlcmxheSogb3ZlcmxheSkKICAgICA6IEluc3BlY3RvckFn
ZW50QmFzZShBU0NJSUxpdGVyYWwoIlBhZ2UiKSwgaW5zdHJ1bWVudGluZ0FnZW50cykKICAgICAs
IG1fcGFnZShwYWdlKQogICAgICwgbV9jbGllbnQoY2xpZW50KQogICAgICwgbV9vdmVybGF5KG92
ZXJsYXkpCi0gICAgLCBtX2xhc3RTY3JpcHRJZGVudGlmaWVyKDApCi0gICAgLCBtX2VuYWJsZWQo
ZmFsc2UpCi0gICAgLCBtX2lzRmlyc3RMYXlvdXRBZnRlck9uTG9hZChmYWxzZSkKLSAgICAsIG1f
b3JpZ2luYWxTY3JpcHRFeGVjdXRpb25EaXNhYmxlZChmYWxzZSkKLSAgICAsIG1faWdub3JlU2Ny
aXB0c0VuYWJsZWROb3RpZmljYXRpb24oZmFsc2UpCi0gICAgLCBtX3Nob3dQYWludFJlY3RzKGZh
bHNlKQogewogfQogCkBAIC0zNTksMTUgKzM1MywxNSBAQCB2b2lkIEluc3BlY3RvclBhZ2VBZ2Vu
dDo6d2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpEaXNjb25uZWN0UmVh
cwogCiBkb3VibGUgSW5zcGVjdG9yUGFnZUFnZW50Ojp0aW1lc3RhbXAoKQogewotICAgIHJldHVy
biBtX2luc3RydW1lbnRpbmdBZ2VudHMtPmluc3BlY3RvckVudmlyb25tZW50KCkuZXhlY3V0aW9u
U3RvcHdhdGNoKCktPmVsYXBzZWRUaW1lKCk7CisgICAgcmV0dXJuIG1faW5zdHJ1bWVudGluZ0Fn
ZW50cy5pbnNwZWN0b3JFbnZpcm9ubWVudCgpLmV4ZWN1dGlvblN0b3B3YXRjaCgpLT5lbGFwc2Vk
VGltZSgpOwogfQogCiB2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6ZW5hYmxlKEVycm9yU3RyaW5n
JikKIHsKICAgICBtX2VuYWJsZWQgPSB0cnVlOwotICAgIG1faW5zdHJ1bWVudGluZ0FnZW50cy0+
c2V0SW5zcGVjdG9yUGFnZUFnZW50KHRoaXMpOworICAgIG1faW5zdHJ1bWVudGluZ0FnZW50cy5z
ZXRJbnNwZWN0b3JQYWdlQWdlbnQodGhpcyk7CiAKLSAgICBhdXRvIHN0b3B3YXRjaCA9IG1faW5z
dHJ1bWVudGluZ0FnZW50cy0+aW5zcGVjdG9yRW52aXJvbm1lbnQoKS5leGVjdXRpb25TdG9wd2F0
Y2goKTsKKyAgICBhdXRvIHN0b3B3YXRjaCA9IG1faW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0
b3JFbnZpcm9ubWVudCgpLmV4ZWN1dGlvblN0b3B3YXRjaCgpOwogICAgIHN0b3B3YXRjaC0+cmVz
ZXQoKTsKICAgICBzdG9wd2F0Y2gtPnN0YXJ0KCk7CiAKQEAgLTM3OSw3ICszNzMsNyBAQCB2b2lk
IEluc3BlY3RvclBhZ2VBZ2VudDo6ZGlzYWJsZShFcnJvclN0cmluZyYpCiB7CiAgICAgbV9lbmFi
bGVkID0gZmFsc2U7CiAgICAgbV9zY3JpcHRzVG9FdmFsdWF0ZU9uTG9hZCA9IG51bGxwdHI7Ci0g
ICAgbV9pbnN0cnVtZW50aW5nQWdlbnRzLT5zZXRJbnNwZWN0b3JQYWdlQWdlbnQobnVsbHB0cik7
CisgICAgbV9pbnN0cnVtZW50aW5nQWdlbnRzLnNldEluc3BlY3RvclBhZ2VBZ2VudChudWxscHRy
KTsKIAogICAgIEVycm9yU3RyaW5nIHVudXNlZDsKICAgICBzZXRTY3JpcHRFeGVjdXRpb25EaXNh
YmxlZCh1bnVzZWQsIG1fb3JpZ2luYWxTY3JpcHRFeGVjdXRpb25EaXNhYmxlZCk7CkBAIC04MjQs
NyArODE4LDcgQEAgdm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OmxvYWRlckRldGFjaGVkRnJvbUZy
YW1lKERvY3VtZW50TG9hZGVyJiBsb2FkZXIpCiB2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6ZnJh
bWVTdGFydGVkTG9hZGluZyhGcmFtZSYgZnJhbWUpCiB7CiAgICAgaWYgKGZyYW1lLmlzTWFpbkZy
YW1lKCkpIHsKLSAgICAgICAgYXV0byBzdG9wd2F0Y2ggPSBtX2luc3RydW1lbnRpbmdBZ2VudHMt
Pmluc3BlY3RvckVudmlyb25tZW50KCkuZXhlY3V0aW9uU3RvcHdhdGNoKCk7CisgICAgICAgIGF1
dG8gc3RvcHdhdGNoID0gbV9pbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3RvckVudmlyb25tZW50
KCkuZXhlY3V0aW9uU3RvcHdhdGNoKCk7CiAgICAgICAgIHN0b3B3YXRjaC0+cmVzZXQoKTsKICAg
ICAgICAgc3RvcHdhdGNoLT5zdGFydCgpOwogICAgIH0KQEAgLTEwMjIsNyArMTAxNiw3IEBAIHZv
aWQgSW5zcGVjdG9yUGFnZUFnZW50OjpzbmFwc2hvdE5vZGUoRXJyb3JTdHJpbmcmIGVycm9yU3Ry
aW5nLCBpbnQgbm9kZUlkLCBTdHJpCiAgICAgRnJhbWUqIGZyYW1lID0gbWFpbkZyYW1lKCk7CiAg
ICAgQVNTRVJUKGZyYW1lKTsKIAotICAgIEluc3BlY3RvckRPTUFnZW50KiBkb21BZ2VudCA9IG1f
aW5zdHJ1bWVudGluZ0FnZW50cy0+aW5zcGVjdG9yRE9NQWdlbnQoKTsKKyAgICBJbnNwZWN0b3JE
T01BZ2VudCogZG9tQWdlbnQgPSBtX2luc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yRE9NQWdl
bnQoKTsKICAgICBBU1NFUlQoZG9tQWdlbnQpOwogICAgIE5vZGUqIG5vZGUgPSBkb21BZ2VudC0+
YXNzZXJ0Tm9kZShlcnJvclN0cmluZywgbm9kZUlkKTsKICAgICBpZiAoIW5vZGUpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmgKaW5kZXggY2M2ZTEwZmFm
Y2VmZThhODNjZTQ1YmU1MzliMjBmMjY0MmEzMjQ5My4uMjg2MmU1OGM1MDYwMjQ1N2I4YjcxMGRi
Mjc5Mjc1ZjhkMDNhMGYyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvclBhZ2VBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JQYWdlQWdlbnQuaApAQCAtNjgsNyArNjgsNyBAQCBjbGFzcyBJbnNwZWN0b3JQYWdlQWdlbnQg
ZmluYWwgOiBwdWJsaWMgSW5zcGVjdG9yQWdlbnRCYXNlLCBwdWJsaWMgSW5zcGVjdG9yOjpQYQog
ICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEluc3BlY3RvclBhZ2VBZ2VudCk7CiAgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgSW5zcGVjdG9yUGFnZUFnZW50KEluc3Ry
dW1lbnRpbmdBZ2VudHMqLCBQYWdlKiwgSW5zcGVjdG9yQ2xpZW50KiwgSW5zcGVjdG9yT3Zlcmxh
eSopOworICAgIEluc3BlY3RvclBhZ2VBZ2VudChJbnN0cnVtZW50aW5nQWdlbnRzJiwgUGFnZSos
IEluc3BlY3RvckNsaWVudCosIEluc3BlY3Rvck92ZXJsYXkqKTsKIAogICAgIGVudW0gUmVzb3Vy
Y2VUeXBlIHsKICAgICAgICAgRG9jdW1lbnRSZXNvdXJjZSwKQEAgLTE2NiwyMiArMTY2LDI1IEBA
IHByaXZhdGU6CiAKICAgICBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6UGFnZTo6RnJhbWU+IGJ1
aWxkT2JqZWN0Rm9yRnJhbWUoRnJhbWUqKTsKICAgICBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6
UGFnZTo6RnJhbWVSZXNvdXJjZVRyZWU+IGJ1aWxkT2JqZWN0Rm9yRnJhbWVUcmVlKEZyYW1lKik7
Ci0gICAgUGFnZSogbV9wYWdlOwotICAgIEluc3BlY3RvckNsaWVudCogbV9jbGllbnQ7CisKICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yOjpQYWdlRnJvbnRlbmREaXNwYXRjaGVyPiBtX2Zy
b250ZW5kRGlzcGF0Y2hlcjsKICAgICBSZWZQdHI8SW5zcGVjdG9yOjpQYWdlQmFja2VuZERpc3Bh
dGNoZXI+IG1fYmFja2VuZERpc3BhdGNoZXI7Ci0gICAgSW5zcGVjdG9yT3ZlcmxheSogbV9vdmVy
bGF5OwotICAgIGxvbmcgbV9sYXN0U2NyaXB0SWRlbnRpZmllcjsKKworICAgIFBhZ2UqIG1fcGFn
ZSB7IG51bGxwdHIgfTsKKyAgICBJbnNwZWN0b3JDbGllbnQqIG1fY2xpZW50IHsgbnVsbHB0ciB9
OworICAgIEluc3BlY3Rvck92ZXJsYXkqIG1fb3ZlcmxheSB7IG51bGxwdHIgfTsKKworICAgIGxv
bmcgbV9sYXN0U2NyaXB0SWRlbnRpZmllciB7IDAgfTsKICAgICBTdHJpbmcgbV9wZW5kaW5nU2Ny
aXB0VG9FdmFsdWF0ZU9uTG9hZE9uY2U7CiAgICAgU3RyaW5nIG1fc2NyaXB0VG9FdmFsdWF0ZU9u
TG9hZE9uY2U7CiAgICAgSGFzaE1hcDxGcmFtZSosIFN0cmluZz4gbV9mcmFtZVRvSWRlbnRpZmll
cjsKICAgICBIYXNoTWFwPFN0cmluZywgRnJhbWUqPiBtX2lkZW50aWZpZXJUb0ZyYW1lOwogICAg
IEhhc2hNYXA8RG9jdW1lbnRMb2FkZXIqLCBTdHJpbmc+IG1fbG9hZGVyVG9JZGVudGlmaWVyOwot
ICAgIGJvb2wgbV9lbmFibGVkOwotICAgIGJvb2wgbV9pc0ZpcnN0TGF5b3V0QWZ0ZXJPbkxvYWQ7
Ci0gICAgYm9vbCBtX29yaWdpbmFsU2NyaXB0RXhlY3V0aW9uRGlzYWJsZWQ7Ci0gICAgYm9vbCBt
X2lnbm9yZVNjcmlwdHNFbmFibGVkTm90aWZpY2F0aW9uOwotICAgIGJvb2wgbV9zaG93UGFpbnRS
ZWN0czsKKyAgICBib29sIG1fZW5hYmxlZCB7IGZhbHNlIH07CisgICAgYm9vbCBtX2lzRmlyc3RM
YXlvdXRBZnRlck9uTG9hZCB7IGZhbHNlIH07CisgICAgYm9vbCBtX29yaWdpbmFsU2NyaXB0RXhl
Y3V0aW9uRGlzYWJsZWQgeyBmYWxzZSB9OworICAgIGJvb2wgbV9pZ25vcmVTY3JpcHRzRW5hYmxl
ZE5vdGlmaWNhdGlvbiB7IGZhbHNlIH07CisgICAgYm9vbCBtX3Nob3dQYWludFJlY3RzIHsgZmFs
c2UgfTsKICAgICBTdHJpbmcgbV9lbXVsYXRlZE1lZGlhOwogICAgIFJlZlB0cjxJbnNwZWN0b3I6
Okluc3BlY3Rvck9iamVjdD4gbV9zY3JpcHRzVG9FdmFsdWF0ZU9uTG9hZDsKIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVwbGF5QWdlbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlcGxheUFnZW50LmNwcAppbmRleCAx
ODFhNjA5ODJhZjcyNmMyNDRhNGMxYjMzZDZiYzg3YzI5YjUwNTg1Li40NzliNzEwOGZhYzQ4ODAx
ZmIyOWQ3Mzk5YzY0ZTRiOTAzOGE0NjhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yUmVwbGF5QWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JSZXBsYXlBZ2VudC5jcHAKQEAgLTE1Niw3ICsxNTYsNyBAQCBzdGF0aWMg
UmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJlcGxheTo6U2Vzc2lvblNlZ21lbnQ+IGJ1aWxkSW5z
cGVjdG9yT2JqZWN0Rm9yUwogICAgICAgICAucmVsZWFzZSgpOwogfQogCi1JbnNwZWN0b3JSZXBs
YXlBZ2VudDo6SW5zcGVjdG9yUmVwbGF5QWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1
bWVudGluZ0FnZW50cywgSW5zcGVjdG9yUGFnZUFnZW50KiBwYWdlQWdlbnQpCitJbnNwZWN0b3JS
ZXBsYXlBZ2VudDo6SW5zcGVjdG9yUmVwbGF5QWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5z
dHJ1bWVudGluZ0FnZW50cywgSW5zcGVjdG9yUGFnZUFnZW50KiBwYWdlQWdlbnQpCiAgICAgOiBJ
bnNwZWN0b3JBZ2VudEJhc2UoQVNDSUlMaXRlcmFsKCJSZXBsYXkiKSwgaW5zdHJ1bWVudGluZ0Fn
ZW50cykKICAgICAsIG1fcGFnZSgqcGFnZUFnZW50LT5wYWdlKCkpCiB7CkBAIC0xNzgsNyArMTc4
LDcgQEAgdm9pZCBJbnNwZWN0b3JSZXBsYXlBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNr
ZW5kKEluc3BlY3Rvcjo6RnJvbnRlbmRDaGFubmUKICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlciA9
IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yOjpSZXBsYXlGcm9udGVuZERpc3BhdGNoZXI+KGZy
b250ZW5kQ2hhbm5lbCk7CiAgICAgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IEluc3BlY3Rvcjo6UmVw
bGF5QmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShiYWNrZW5kRGlzcGF0Y2hlciwgdGhpcyk7CiAK
LSAgICBtX2luc3RydW1lbnRpbmdBZ2VudHMtPnNldEluc3BlY3RvclJlcGxheUFnZW50KHRoaXMp
OworICAgIG1faW5zdHJ1bWVudGluZ0FnZW50cy5zZXRJbnNwZWN0b3JSZXBsYXlBZ2VudCh0aGlz
KTsKICAgICBBU1NFUlQoc2Vzc2lvblN0YXRlKCkgPT0gV2ViQ29yZTo6U2Vzc2lvblN0YXRlOjpJ
bmFjdGl2ZSk7CiAKICAgICAvLyBLZWVwIHRyYWNrIG9mIHRoZSAoZGVmYXVsdCkgc2Vzc2lvbiBj
dXJyZW50bHkgbG9hZGVkIGJ5IFJlcGxheUNvbnRyb2xsZXIsCkBAIC0xOTUsNyArMTk1LDcgQEAg
dm9pZCBJbnNwZWN0b3JSZXBsYXlBZ2VudDo6d2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQo
SW5zcGVjdG9yOjpEaXNjb25uZWN0UmUKICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlciA9IG51bGxw
dHI7CiAgICAgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IG51bGxwdHI7CiAKLSAgICBtX2luc3RydW1l
bnRpbmdBZ2VudHMtPnNldEluc3BlY3RvclJlcGxheUFnZW50KG51bGxwdHIpOworICAgIG1faW5z
dHJ1bWVudGluZ0FnZW50cy5zZXRJbnNwZWN0b3JSZXBsYXlBZ2VudChudWxscHRyKTsKIAogICAg
IC8vIERyb3AgcmVmZXJlbmNlcyB0byBhbGwgc2Vzc2lvbnMgYW5kIHNlZ21lbnRzLgogICAgIG1f
c2Vzc2lvbnNNYXAuY2xlYXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JSZXBsYXlBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvclJlcGxheUFnZW50LmgKaW5kZXggM2MyYmM3Y2ZmYTFiMjNmNGMzOWM3MzkzN2Q3Zjg3ZWU1
ODIwNjRhYS4uYTdlNmNmNThmMjM3ODhiZGM4ZDQzMWRiNTVmMTRhNTFjZGIyYzFhYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlcGxheUFnZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlcGxheUFnZW50LmgKQEAgLTYy
LDcgKzYyLDcgQEAgY2xhc3MgSW5zcGVjdG9yUmVwbGF5QWdlbnQgZmluYWwKICAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShJbnNwZWN0b3JSZXBs
YXlBZ2VudCk7CiBwdWJsaWM6Ci0gICAgSW5zcGVjdG9yUmVwbGF5QWdlbnQoSW5zdHJ1bWVudGlu
Z0FnZW50cyosIEluc3BlY3RvclBhZ2VBZ2VudCopOworICAgIEluc3BlY3RvclJlcGxheUFnZW50
KEluc3RydW1lbnRpbmdBZ2VudHMmLCBJbnNwZWN0b3JQYWdlQWdlbnQqKTsKICAgICB2aXJ0dWFs
IH5JbnNwZWN0b3JSZXBsYXlBZ2VudCgpOwogCiAgICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZy
b250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkZyb250ZW5kQ2hhbm5lbCosIEluc3BlY3Rvcjo6
QmFja2VuZERpc3BhdGNoZXIqKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcAppbmRleCA3YjU2YTBmZjlkMTU4ZjZi
YThiMTM1M2EwYmFiMmU0ZDBlODlhMWQ3Li44NTc5MTk5OWZjM2IwNzE1NjM0ZDI2YmZjZWFjODAz
ODQ4ZDEzZDc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
UmVzb3VyY2VBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
clJlc291cmNlQWdlbnQuY3BwCkBAIC0xNjAsMTUgKzE2MCwxMSBAQCBwcml2YXRlOgogCiB9IC8v
IG5hbWVzcGFjZQogCi1JbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpJbnNwZWN0b3JSZXNvdXJjZUFn
ZW50KEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMsIEluc3BlY3RvclBh
Z2VBZ2VudCogcGFnZUFnZW50LCBJbnNwZWN0b3JDbGllbnQqIGNsaWVudCkKK0luc3BlY3RvclJl
c291cmNlQWdlbnQ6Okluc3BlY3RvclJlc291cmNlQWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50cyYg
aW5zdHJ1bWVudGluZ0FnZW50cywgSW5zcGVjdG9yUGFnZUFnZW50KiBwYWdlQWdlbnQsIEluc3Bl
Y3RvckNsaWVudCogY2xpZW50KQogICAgIDogSW5zcGVjdG9yQWdlbnRCYXNlKEFTQ0lJTGl0ZXJh
bCgiTmV0d29yayIpLCBpbnN0cnVtZW50aW5nQWdlbnRzKQogICAgICwgbV9wYWdlQWdlbnQocGFn
ZUFnZW50KQogICAgICwgbV9jbGllbnQoY2xpZW50KQogICAgICwgbV9yZXNvdXJjZXNEYXRhKHN0
ZDo6bWFrZV91bmlxdWU8TmV0d29ya1Jlc291cmNlc0RhdGE+KCkpCi0gICAgLCBtX2VuYWJsZWQo
ZmFsc2UpCi0gICAgLCBtX2NhY2hlRGlzYWJsZWQoZmFsc2UpCi0gICAgLCBtX2xvYWRpbmdYSFJT
eW5jaHJvbm91c2x5KGZhbHNlKQotICAgICwgbV9pc1JlY2FsY3VsYXRpbmdTdHlsZShmYWxzZSkK
IHsKIH0KIApAQCAtMjY4LDEyICsyNjQsMTIgQEAgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6fklu
c3BlY3RvclJlc291cmNlQWdlbnQoKQogICAgICAgICBFcnJvclN0cmluZyB1bnVzZWQ7CiAgICAg
ICAgIGRpc2FibGUodW51c2VkKTsKICAgICB9Ci0gICAgQVNTRVJUKCFtX2luc3RydW1lbnRpbmdB
Z2VudHMtPmluc3BlY3RvclJlc291cmNlQWdlbnQoKSk7CisgICAgQVNTRVJUKCFtX2luc3RydW1l
bnRpbmdBZ2VudHMuaW5zcGVjdG9yUmVzb3VyY2VBZ2VudCgpKTsKIH0KIAogZG91YmxlIEluc3Bl
Y3RvclJlc291cmNlQWdlbnQ6OnRpbWVzdGFtcCgpCiB7Ci0gICAgcmV0dXJuIG1faW5zdHJ1bWVu
dGluZ0FnZW50cy0+aW5zcGVjdG9yRW52aXJvbm1lbnQoKS5leGVjdXRpb25TdG9wd2F0Y2goKS0+
ZWxhcHNlZFRpbWUoKTsKKyAgICByZXR1cm4gbV9pbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3Rv
ckVudmlyb25tZW50KCkuZXhlY3V0aW9uU3RvcHdhdGNoKCktPmVsYXBzZWRUaW1lKCk7CiB9CiAK
IHZvaWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6d2lsbFNlbmRSZXF1ZXN0KHVuc2lnbmVkIGxv
bmcgaWRlbnRpZmllciwgRG9jdW1lbnRMb2FkZXImIGxvYWRlciwgUmVzb3VyY2VSZXF1ZXN0JiBy
ZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlKQpAQCAtNjA3
LDEzICs2MDMsMTMgQEAgdm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjplbmFibGUoKQogICAg
IGlmICghbV9mcm9udGVuZERpc3BhdGNoZXIpCiAgICAgICAgIHJldHVybjsKICAgICBtX2VuYWJs
ZWQgPSB0cnVlOwotICAgIG1faW5zdHJ1bWVudGluZ0FnZW50cy0+c2V0SW5zcGVjdG9yUmVzb3Vy
Y2VBZ2VudCh0aGlzKTsKKyAgICBtX2luc3RydW1lbnRpbmdBZ2VudHMuc2V0SW5zcGVjdG9yUmVz
b3VyY2VBZ2VudCh0aGlzKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpkaXNh
YmxlKEVycm9yU3RyaW5nJikKIHsKICAgICBtX2VuYWJsZWQgPSBmYWxzZTsKLSAgICBtX2luc3Ry
dW1lbnRpbmdBZ2VudHMtPnNldEluc3BlY3RvclJlc291cmNlQWdlbnQobnVsbHB0cik7CisgICAg
bV9pbnN0cnVtZW50aW5nQWdlbnRzLnNldEluc3BlY3RvclJlc291cmNlQWdlbnQobnVsbHB0cik7
CiAgICAgbV9yZXNvdXJjZXNEYXRhLT5jbGVhcigpOwogICAgIG1fZXh0cmFSZXF1ZXN0SGVhZGVy
cy5jbGVhcigpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvclJlc291cmNlQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JS
ZXNvdXJjZUFnZW50LmgKaW5kZXggZTI1NTMxYzk2YmFhY2U3MDZkNjdkZGZmMDUxYzY0MDM4MGI3
MDg4Ny4uODdmNWUzYWVjYjE1NmI5ZmMwYzRkNzBmNjU4ZTYxNTFkZmQxNWRjZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5oCkBAIC03
NSw3ICs3NSw3IEBAIHR5cGVkZWYgU3RyaW5nIEVycm9yU3RyaW5nOwogY2xhc3MgSW5zcGVjdG9y
UmVzb3VyY2VBZ2VudCBmaW5hbCA6IHB1YmxpYyBJbnNwZWN0b3JBZ2VudEJhc2UsIHB1YmxpYyBJ
bnNwZWN0b3I6Ok5ldHdvcmtCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIgewogICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIEluc3BlY3RvclJlc291cmNlQWdlbnQoSW5z
dHJ1bWVudGluZ0FnZW50cyosIEluc3BlY3RvclBhZ2VBZ2VudCosIEluc3BlY3RvckNsaWVudCop
OworICAgIEluc3BlY3RvclJlc291cmNlQWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50cyYsIEluc3Bl
Y3RvclBhZ2VBZ2VudCosIEluc3BlY3RvckNsaWVudCopOwogICAgIHZpcnR1YWwgfkluc3BlY3Rv
clJlc291cmNlQWdlbnQoKTsKIAogICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVuZEFu
ZEJhY2tlbmQoSW5zcGVjdG9yOjpGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0b3I6OkJhY2tlbmRE
aXNwYXRjaGVyKikgb3ZlcnJpZGU7CkBAIC0xMzEsMjEgKzEzMSwyMSBAQCBwcml2YXRlOgogCiAg
ICAgZG91YmxlIHRpbWVzdGFtcCgpOwogCi0gICAgSW5zcGVjdG9yUGFnZUFnZW50KiBtX3BhZ2VB
Z2VudDsKLSAgICBJbnNwZWN0b3JDbGllbnQqIG1fY2xpZW50OwogICAgIHN0ZDo6dW5pcXVlX3B0
cjxJbnNwZWN0b3I6Ok5ldHdvcmtGcm9udGVuZERpc3BhdGNoZXI+IG1fZnJvbnRlbmREaXNwYXRj
aGVyOwogICAgIFJlZlB0cjxJbnNwZWN0b3I6Ok5ldHdvcmtCYWNrZW5kRGlzcGF0Y2hlcj4gbV9i
YWNrZW5kRGlzcGF0Y2hlcjsKKyAgICBJbnNwZWN0b3JQYWdlQWdlbnQqIG1fcGFnZUFnZW50IHsg
bnVsbHB0ciB9OworCisgICAgSW5zcGVjdG9yQ2xpZW50KiBtX2NsaWVudCB7IG51bGxwdHIgfTsK
KwogICAgIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrUmVzb3VyY2VzRGF0YT4gbV9yZXNvdXJjZXNE
YXRhOwotICAgIGJvb2wgbV9lbmFibGVkOwotICAgIGJvb2wgbV9jYWNoZURpc2FibGVkOwotICAg
IGJvb2wgbV9sb2FkaW5nWEhSU3luY2hyb25vdXNseTsKKyAgICBib29sIG1fZW5hYmxlZCB7IGZh
bHNlIH07CisgICAgYm9vbCBtX2NhY2hlRGlzYWJsZWQgeyBmYWxzZSB9OworICAgIGJvb2wgbV9s
b2FkaW5nWEhSU3luY2hyb25vdXNseSB7IGZhbHNlIH07CiAgICAgSGFzaE1hcDxTdHJpbmcsIFN0
cmluZz4gbV9leHRyYVJlcXVlc3RIZWFkZXJzOwotCiAgICAgSGFzaFNldDx1bnNpZ25lZCBsb25n
PiBtX2hpZGRlblJlcXVlc3RJZGVudGlmaWVyczsKLQogICAgIC8vIEZJWE1FOiBJbnNwZWN0b3JS
ZXNvdXJjZUFnZW50IHNob3VsZCBub3cgYmUgYXdhcmUgb2Ygc3R5bGUgcmVjYWxjdWxhdGlvbi4K
ICAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6TmV0d29yazo6SW5pdGlhdG9yPiBtX3N0
eWxlUmVjYWxjdWxhdGlvbkluaXRpYXRvcjsKLSAgICBib29sIG1faXNSZWNhbGN1bGF0aW5nU3R5
bGU7CisgICAgYm9vbCBtX2lzUmVjYWxjdWxhdGluZ1N0eWxlIHsgZmFsc2UgfTsKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JUaW1lbGluZUFnZW50LmNwcAppbmRleCBlMTIwYjk0MGQ0NzllY2E5Y2U1NzMwYTJj
OWMxNDBmYTA5M2NhM2ZlLi44N2FlNDFmYjNjMzY3MjRkOTMyNjMyNmMzNmVhOTU0ZDA4N2JhMDY4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVB
Z2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5l
QWdlbnQuY3BwCkBAIC05NCw3ICs5NCw3IEBAIHZvaWQgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6
ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6RnJvbnRlbmRDaGFuCiAgICAg
bV9mcm9udGVuZERpc3BhdGNoZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rvcjo6VGltZWxp
bmVGcm9udGVuZERpc3BhdGNoZXI+KGZyb250ZW5kQ2hhbm5lbCk7CiAgICAgbV9iYWNrZW5kRGlz
cGF0Y2hlciA9IEluc3BlY3Rvcjo6VGltZWxpbmVCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGJh
Y2tlbmREaXNwYXRjaGVyLCB0aGlzKTsKIAotICAgIG1faW5zdHJ1bWVudGluZ0FnZW50cy0+c2V0
UGVyc2lzdGVudEluc3BlY3RvclRpbWVsaW5lQWdlbnQodGhpcyk7CisgICAgbV9pbnN0cnVtZW50
aW5nQWdlbnRzLnNldFBlcnNpc3RlbnRJbnNwZWN0b3JUaW1lbGluZUFnZW50KHRoaXMpOwogCiAg
ICAgaWYgKG1fc2NyaXB0RGVidWdTZXJ2ZXIpCiAgICAgICAgIG1fc2NyaXB0RGVidWdTZXJ2ZXIt
PnJlY29tcGlsZUFsbEpTRnVuY3Rpb25zKCk7CkBAIC0xMDUsNyArMTA1LDcgQEAgdm9pZCBJbnNw
ZWN0b3JUaW1lbGluZUFnZW50Ojp3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0
b3I6OkRpc2Nvbm5lY3QKICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlciA9IG51bGxwdHI7CiAgICAg
bV9iYWNrZW5kRGlzcGF0Y2hlciA9IG51bGxwdHI7CiAKLSAgICBtX2luc3RydW1lbnRpbmdBZ2Vu
dHMtPnNldFBlcnNpc3RlbnRJbnNwZWN0b3JUaW1lbGluZUFnZW50KG51bGxwdHIpOworICAgIG1f
aW5zdHJ1bWVudGluZ0FnZW50cy5zZXRQZXJzaXN0ZW50SW5zcGVjdG9yVGltZWxpbmVBZ2VudChu
dWxscHRyKTsKIAogICAgIGlmIChyZWFzb24gIT0gSW5zcGVjdG9yOjpEaXNjb25uZWN0UmVhc29u
OjpJbnNwZWN0ZWRUYXJnZXREZXN0cm95ZWQpIHsKICAgICAgICAgaWYgKG1fc2NyaXB0RGVidWdT
ZXJ2ZXIpCkBAIC0xNDAsNyArMTQwLDcgQEAgdm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50Ojpp
bnRlcm5hbFN0YXJ0KGNvbnN0IGludCogbWF4Q2FsbFN0YWNrRGVwdGgpCiAgICAgZWxzZQogICAg
ICAgICBtX21heENhbGxTdGFja0RlcHRoID0gNTsKIAotICAgIG1faW5zdHJ1bWVudGluZ0FnZW50
cy0+c2V0SW5zcGVjdG9yVGltZWxpbmVBZ2VudCh0aGlzKTsKKyAgICBtX2luc3RydW1lbnRpbmdB
Z2VudHMuc2V0SW5zcGVjdG9yVGltZWxpbmVBZ2VudCh0aGlzKTsKIAogICAgIGlmIChtX3Njcmlw
dERlYnVnU2VydmVyKQogICAgICAgICBtX3NjcmlwdERlYnVnU2VydmVyLT5hZGRMaXN0ZW5lcih0
aGlzKTsKQEAgLTE5Myw3ICsxOTMsNyBAQCB2b2lkIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6Omlu
dGVybmFsU3RvcCgpCiAgICAgaWYgKCFtX2VuYWJsZWQpCiAgICAgICAgIHJldHVybjsKIAotICAg
IG1faW5zdHJ1bWVudGluZ0FnZW50cy0+c2V0SW5zcGVjdG9yVGltZWxpbmVBZ2VudChudWxscHRy
KTsKKyAgICBtX2luc3RydW1lbnRpbmdBZ2VudHMuc2V0SW5zcGVjdG9yVGltZWxpbmVBZ2VudChu
dWxscHRyKTsKIAogICAgIGlmIChtX3NjcmlwdERlYnVnU2VydmVyKQogICAgICAgICBtX3Njcmlw
dERlYnVnU2VydmVyLT5yZW1vdmVMaXN0ZW5lcih0aGlzLCB0cnVlKTsKQEAgLTIxOSw3ICsyMTks
NyBAQCB2b2lkIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OmludGVybmFsU3RvcCgpCiAKIGRvdWJs
ZSBJbnNwZWN0b3JUaW1lbGluZUFnZW50Ojp0aW1lc3RhbXAoKQogewotICAgIHJldHVybiBtX2lu
c3RydW1lbnRpbmdBZ2VudHMtPmluc3BlY3RvckVudmlyb25tZW50KCkuZXhlY3V0aW9uU3RvcHdh
dGNoKCktPmVsYXBzZWRUaW1lKCk7CisgICAgcmV0dXJuIG1faW5zdHJ1bWVudGluZ0FnZW50cy5p
bnNwZWN0b3JFbnZpcm9ubWVudCgpLmV4ZWN1dGlvblN0b3B3YXRjaCgpLT5lbGFwc2VkVGltZSgp
OwogfQogCiB2b2lkIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OnNldFBhZ2VTY3JpcHREZWJ1Z1Nl
cnZlcihQYWdlU2NyaXB0RGVidWdTZXJ2ZXIqIHNjcmlwdERlYnVnU2VydmVyKQpAQCAtMjY2LDcg
KzI2Niw3IEBAIHZvaWQgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6c3RhcnRGcm9tQ29uc29sZShK
U0M6OkV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU3RyaW5nCiAgICAgaWYgKCFtX2VuYWJsZWQgJiYg
bV9wZW5kaW5nQ29uc29sZVByb2ZpbGVSZWNvcmRzLmlzRW1wdHkoKSkKICAgICAgICAgaW50ZXJu
YWxTdGFydCgpOwogCi0gICAgc3RhcnRQcm9maWxpbmcoZXhlYywgdGl0bGUsIG1faW5zdHJ1bWVu
dGluZ0FnZW50cy0+aW5zcGVjdG9yRW52aXJvbm1lbnQoKS5leGVjdXRpb25TdG9wd2F0Y2goKSk7
CisgICAgc3RhcnRQcm9maWxpbmcoZXhlYywgdGl0bGUsIG1faW5zdHJ1bWVudGluZ0FnZW50cy5p
bnNwZWN0b3JFbnZpcm9ubWVudCgpLmV4ZWN1dGlvblN0b3B3YXRjaCgpKTsKIAogICAgIG1fcGVu
ZGluZ0NvbnNvbGVQcm9maWxlUmVjb3Jkcy5hcHBlbmQoY3JlYXRlUmVjb3JkRW50cnkoVGltZWxp
bmVSZWNvcmRGYWN0b3J5OjpjcmVhdGVDb25zb2xlUHJvZmlsZURhdGEodGl0bGUpLCBUaW1lbGlu
ZVJlY29yZFR5cGU6OkNvbnNvbGVQcm9maWxlLCB0cnVlLCBmcmFtZUZyb21FeGVjU3RhdGUoZXhl
YykpKTsKIH0KQEAgLTMwNSw3ICszMDUsNyBAQCB2b2lkIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6
OndpbGxDYWxsRnVuY3Rpb24oY29uc3QgU3RyaW5nJiBzY3JpcHROYW1lLCBpbnQgc2NyaQogICAg
IHB1c2hDdXJyZW50UmVjb3JkKFRpbWVsaW5lUmVjb3JkRmFjdG9yeTo6Y3JlYXRlRnVuY3Rpb25D
YWxsRGF0YShzY3JpcHROYW1lLCBzY3JpcHRMaW5lKSwgVGltZWxpbmVSZWNvcmRUeXBlOjpGdW5j
dGlvbkNhbGwsIHRydWUsIGZyYW1lKTsKIAogICAgIGlmIChmcmFtZSAmJiAhbV9jYWxsU3RhY2tE
ZXB0aCkKLSAgICAgICAgc3RhcnRQcm9maWxpbmcoZnJhbWUsIEFTQ0lJTGl0ZXJhbCgiVGltZWxp
bmUgRnVuY3Rpb25DYWxsIiksIG1faW5zdHJ1bWVudGluZ0FnZW50cy0+aW5zcGVjdG9yRW52aXJv
bm1lbnQoKS5leGVjdXRpb25TdG9wd2F0Y2goKSk7CisgICAgICAgIHN0YXJ0UHJvZmlsaW5nKGZy
YW1lLCBBU0NJSUxpdGVyYWwoIlRpbWVsaW5lIEZ1bmN0aW9uQ2FsbCIpLCBtX2luc3RydW1lbnRp
bmdBZ2VudHMuaW5zcGVjdG9yRW52aXJvbm1lbnQoKS5leGVjdXRpb25TdG9wd2F0Y2goKSk7CiAK
ICAgICArK21fY2FsbFN0YWNrRGVwdGg7CiB9CkBAIC00OTQsNyArNDk0LDcgQEAgdm9pZCBJbnNw
ZWN0b3JUaW1lbGluZUFnZW50Ojp3aWxsRXZhbHVhdGVTY3JpcHQoY29uc3QgU3RyaW5nJiB1cmws
IGludCBsaW5lTnVtYmUKIAogICAgIGlmICghbV9jYWxsU3RhY2tEZXB0aCkgewogICAgICAgICAr
K21fY2FsbFN0YWNrRGVwdGg7Ci0gICAgICAgIHN0YXJ0UHJvZmlsaW5nKCZmcmFtZSwgQVNDSUlM
aXRlcmFsKCJUaW1lbGluZSBFdmFsdWF0ZVNjcmlwdCIpLCBtX2luc3RydW1lbnRpbmdBZ2VudHMt
Pmluc3BlY3RvckVudmlyb25tZW50KCkuZXhlY3V0aW9uU3RvcHdhdGNoKCkpOworICAgICAgICBz
dGFydFByb2ZpbGluZygmZnJhbWUsIEFTQ0lJTGl0ZXJhbCgiVGltZWxpbmUgRXZhbHVhdGVTY3Jp
cHQiKSwgbV9pbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3RvckVudmlyb25tZW50KCkuZXhlY3V0
aW9uU3RvcHdhdGNoKCkpOwogICAgIH0KIH0KIApAQCAtNzI5LDExICs3MjksMTEgQEAgdm9pZCBJ
bnNwZWN0b3JUaW1lbGluZUFnZW50OjpkaWRDb21wbGV0ZUN1cnJlbnRSZWNvcmQoVGltZWxpbmVS
ZWNvcmRUeXBlIHR5cGUpCiAgICAgfQogfQogCi1JbnNwZWN0b3JUaW1lbGluZUFnZW50OjpJbnNw
ZWN0b3JUaW1lbGluZUFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2Vu
dHMsIEluc3BlY3RvclBhZ2VBZ2VudCogcGFnZUFnZW50LCBJbnNwZWN0b3JUeXBlIHR5cGUsIElu
c3BlY3RvckNsaWVudCogY2xpZW50KQorSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6SW5zcGVjdG9y
VGltZWxpbmVBZ2VudChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBJ
bnNwZWN0b3JQYWdlQWdlbnQqIHBhZ2VBZ2VudCwgSW5zcGVjdG9yVHlwZSB0eXBlLCBJbnNwZWN0
b3JDbGllbnQqIGNsaWVudCkKICAgICA6IEluc3BlY3RvckFnZW50QmFzZShBU0NJSUxpdGVyYWwo
IlRpbWVsaW5lIiksIGluc3RydW1lbnRpbmdBZ2VudHMpCiAgICAgLCBtX3BhZ2VBZ2VudChwYWdl
QWdlbnQpCi0gICAgLCBtX2luc3BlY3RvclR5cGUodHlwZSkKICAgICAsIG1fY2xpZW50KGNsaWVu
dCkKKyAgICAsIG1faW5zcGVjdG9yVHlwZSh0eXBlKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5oIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuaAppbmRleCA2YWE1ODRjNjg5
YmQxZjNhYzZiZWI4NThjMjVjZmQ1ZmU4MTkyNThmLi4zMjQ2NWYzY2UxZmY0NzIwODU1YTJjODNi
Y2RmNmI2MjdhNDI4Yzc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yVGltZWxpbmVBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JUaW1lbGluZUFnZW50LmgKQEAgLTExNyw3ICsxMTcsNyBAQCBjbGFzcyBJbnNwZWN0b3JU
aW1lbGluZUFnZW50IGZpbmFsCiBwdWJsaWM6CiAgICAgZW51bSBJbnNwZWN0b3JUeXBlIHsgUGFn
ZUluc3BlY3RvciwgV29ya2VySW5zcGVjdG9yIH07CiAKLSAgICBJbnNwZWN0b3JUaW1lbGluZUFn
ZW50KEluc3RydW1lbnRpbmdBZ2VudHMqLCBJbnNwZWN0b3JQYWdlQWdlbnQqLCBJbnNwZWN0b3JU
eXBlLCBJbnNwZWN0b3JDbGllbnQqKTsKKyAgICBJbnNwZWN0b3JUaW1lbGluZUFnZW50KEluc3Ry
dW1lbnRpbmdBZ2VudHMmLCBJbnNwZWN0b3JQYWdlQWdlbnQqLCBJbnNwZWN0b3JUeXBlLCBJbnNw
ZWN0b3JDbGllbnQqKTsKICAgICB2aXJ0dWFsIH5JbnNwZWN0b3JUaW1lbGluZUFnZW50KCk7CiAK
ICAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6
RnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlciopIG92ZXJyaWRl
OwpAQCAtMjMxLDE5ICsyMzEsMTggQEAgcHJpdmF0ZToKICAgICB2b2lkIGxvY2FsVG9QYWdlUXVh
ZChjb25zdCBSZW5kZXJPYmplY3QmLCBjb25zdCBMYXlvdXRSZWN0JiwgRmxvYXRRdWFkKik7CiAg
ICAgUGFnZSogcGFnZSgpOwogCi0gICAgSW5zcGVjdG9yUGFnZUFnZW50KiBtX3BhZ2VBZ2VudDsK
LSAgICBQYWdlU2NyaXB0RGVidWdTZXJ2ZXIqIG1fc2NyaXB0RGVidWdTZXJ2ZXIgeyBudWxscHRy
IH07Ci0KICAgICBzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yOjpUaW1lbGluZUZyb250ZW5kRGlz
cGF0Y2hlcj4gbV9mcm9udGVuZERpc3BhdGNoZXI7CiAgICAgUmVmUHRyPEluc3BlY3Rvcjo6VGlt
ZWxpbmVCYWNrZW5kRGlzcGF0Y2hlcj4gbV9iYWNrZW5kRGlzcGF0Y2hlcjsKKyAgICBJbnNwZWN0
b3JQYWdlQWdlbnQqIG1fcGFnZUFnZW50OwogCi0gICAgVmVjdG9yPFRpbWVsaW5lUmVjb3JkRW50
cnk+IG1fcmVjb3JkU3RhY2s7CisgICAgUGFnZVNjcmlwdERlYnVnU2VydmVyKiBtX3NjcmlwdERl
YnVnU2VydmVyIHsgbnVsbHB0ciB9OworICAgIEluc3BlY3RvckNsaWVudCogbV9jbGllbnQgeyBu
dWxscHRyIH07CiAKKyAgICBWZWN0b3I8VGltZWxpbmVSZWNvcmRFbnRyeT4gbV9yZWNvcmRTdGFj
azsKICAgICBpbnQgbV9pZCB7IDEgfTsKICAgICBpbnQgbV9jYWxsU3RhY2tEZXB0aCB7IDAgfTsK
ICAgICBpbnQgbV9tYXhDYWxsU3RhY2tEZXB0aCB7IDUgfTsKICAgICBJbnNwZWN0b3JUeXBlIG1f
aW5zcGVjdG9yVHlwZTsKLSAgICBJbnNwZWN0b3JDbGllbnQqIG1fY2xpZW50OwogCiAgICAgVmVj
dG9yPFRpbWVsaW5lUmVjb3JkRW50cnk+IG1fcGVuZGluZ0NvbnNvbGVQcm9maWxlUmVjb3JkczsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvcldlYkFnZW50
QmFzZS5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvcldlYkFnZW50QmFzZS5o
CmluZGV4IGRmY2M0YTg0NTNiYTIwN2ZiMTNkNzY5OTM5OGJhNzhmZmVhMmVmNWMuLjI2N2QxY2Qw
ODc0NWQ5YzEyYzM1NTM0ZjFhZjc3OTcyYmFkOWYwOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JXZWJBZ2VudEJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yV2ViQWdlbnRCYXNlLmgKQEAgLTM3LDEzICszNywxMyBAQCBj
bGFzcyBJbnN0cnVtZW50aW5nQWdlbnRzOwogCiBjbGFzcyBJbnNwZWN0b3JBZ2VudEJhc2UgOiBw
dWJsaWMgSW5zcGVjdG9yOjpJbnNwZWN0b3JBZ2VudEJhc2UgewogcHJvdGVjdGVkOgotICAgIElu
c3BlY3RvckFnZW50QmFzZShjb25zdCBTdHJpbmcmIG5hbWUsIEluc3RydW1lbnRpbmdBZ2VudHMq
IGluc3RydW1lbnRpbmdBZ2VudHMpCisgICAgSW5zcGVjdG9yQWdlbnRCYXNlKGNvbnN0IFN0cmlu
ZyYgbmFtZSwgSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cykKICAgICAg
ICAgOiBJbnNwZWN0b3I6Okluc3BlY3RvckFnZW50QmFzZShuYW1lKQogICAgICAgICAsIG1faW5z
dHJ1bWVudGluZ0FnZW50cyhpbnN0cnVtZW50aW5nQWdlbnRzKQogICAgIHsKICAgICB9CiAKLSAg
ICBJbnN0cnVtZW50aW5nQWdlbnRzKiBtX2luc3RydW1lbnRpbmdBZ2VudHM7CisgICAgSW5zdHJ1
bWVudGluZ0FnZW50cyYgbV9pbnN0cnVtZW50aW5nQWdlbnRzOwogfTsKICAgICAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JXb3JrZXJBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
V29ya2VyQWdlbnQuY3BwCmluZGV4IDVlMjFmMzViYjQ4MDNiZWIxZWEyZDU5ODRiNDJkMDg2NjQ1
ZDkxODEuLmI3ODAwYjE3OTY1MjBjZTE0NmIwZGE3OGYzMGZiYzQ2ZDFiZThlMGEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JXb3JrZXJBZ2VudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvcldvcmtlckFnZW50LmNwcApAQCAt
MTAxLDE3ICsxMDEsMTUgQEAgcHJpdmF0ZToKIAogaW50IEluc3BlY3RvcldvcmtlckFnZW50OjpX
b3JrZXJGcm9udGVuZENoYW5uZWw6OnNfbmV4dElkID0gMTsKIAotSW5zcGVjdG9yV29ya2VyQWdl
bnQ6Okluc3BlY3RvcldvcmtlckFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRp
bmdBZ2VudHMpCitJbnNwZWN0b3JXb3JrZXJBZ2VudDo6SW5zcGVjdG9yV29ya2VyQWdlbnQoSW5z
dHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cykKICAgICA6IEluc3BlY3RvckFn
ZW50QmFzZShBU0NJSUxpdGVyYWwoIldvcmtlciIpLCBpbnN0cnVtZW50aW5nQWdlbnRzKQotICAg
ICwgbV9lbmFibGVkKGZhbHNlKQotICAgICwgbV9zaG91bGRQYXVzZURlZGljYXRlZFdvcmtlck9u
U3RhcnQoZmFsc2UpCiB7Ci0gICAgbV9pbnN0cnVtZW50aW5nQWdlbnRzLT5zZXRJbnNwZWN0b3JX
b3JrZXJBZ2VudCh0aGlzKTsKKyAgICBtX2luc3RydW1lbnRpbmdBZ2VudHMuc2V0SW5zcGVjdG9y
V29ya2VyQWdlbnQodGhpcyk7CiB9CiAKIEluc3BlY3RvcldvcmtlckFnZW50Ojp+SW5zcGVjdG9y
V29ya2VyQWdlbnQoKQogewotICAgIG1faW5zdHJ1bWVudGluZ0FnZW50cy0+c2V0SW5zcGVjdG9y
V29ya2VyQWdlbnQobnVsbHB0cik7CisgICAgbV9pbnN0cnVtZW50aW5nQWdlbnRzLnNldEluc3Bl
Y3RvcldvcmtlckFnZW50KG51bGxwdHIpOwogfQogCiB2b2lkIEluc3BlY3RvcldvcmtlckFnZW50
OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpGcm9udGVuZENoYW5uZWwq
IGZyb250ZW5kQ2hhbm5lbCwgSW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERp
c3BhdGNoZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
V29ya2VyQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JXb3JrZXJB
Z2VudC5oCmluZGV4IDIzZjZlNWM5YjEwNjg3MTc4N2MxZjYyNTRjMGU4MjA4MTkwYzlhYWMuLjQ1
NDI0NzkzZGI0OTc1MGFlNDM1ZjcxOGU4YjBkOTM0YTVhNjhhYzAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JXb3JrZXJBZ2VudC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JXb3JrZXJBZ2VudC5oCkBAIC01MSw3ICs1MSw3IEBA
IHR5cGVkZWYgU3RyaW5nIEVycm9yU3RyaW5nOwogY2xhc3MgSW5zcGVjdG9yV29ya2VyQWdlbnQg
ZmluYWwgOiBwdWJsaWMgSW5zcGVjdG9yQWdlbnRCYXNlLCBwdWJsaWMgSW5zcGVjdG9yOjpXb3Jr
ZXJCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwogcHVibGljOgotICAgIGV4cGxpY2l0IEluc3BlY3RvcldvcmtlckFnZW50KEluc3RydW1lbnRp
bmdBZ2VudHMqKTsKKyAgICBleHBsaWNpdCBJbnNwZWN0b3JXb3JrZXJBZ2VudChJbnN0cnVtZW50
aW5nQWdlbnRzJik7CiAgICAgdmlydHVhbCB+SW5zcGVjdG9yV29ya2VyQWdlbnQoKTsKIAogICAg
IHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpGcm9u
dGVuZENoYW5uZWwqLCBJbnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyKikgb3ZlcnJpZGU7CkBA
IC03NiwxMiArNzYsMTQgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNyZWF0ZVdvcmtlckZyb250ZW5k
Q2hhbm5lbChXb3JrZXJHbG9iYWxTY29wZVByb3h5KiwgY29uc3QgU3RyaW5nJiB1cmwpOwogICAg
IHZvaWQgZGVzdHJveVdvcmtlckZyb250ZW5kQ2hhbm5lbHMoKTsKIAorICAgIGNsYXNzIFdvcmtl
ckZyb250ZW5kQ2hhbm5lbDsKKwogICAgIHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3I6Oldvcmtl
ckZyb250ZW5kRGlzcGF0Y2hlcj4gbV9mcm9udGVuZERpc3BhdGNoZXI7CiAgICAgUmVmUHRyPElu
c3BlY3Rvcjo6V29ya2VyQmFja2VuZERpc3BhdGNoZXI+IG1fYmFja2VuZERpc3BhdGNoZXI7Ci0g
ICAgYm9vbCBtX2VuYWJsZWQ7Ci0gICAgYm9vbCBtX3Nob3VsZFBhdXNlRGVkaWNhdGVkV29ya2Vy
T25TdGFydDsKIAotICAgIGNsYXNzIFdvcmtlckZyb250ZW5kQ2hhbm5lbDsKKyAgICBib29sIG1f
ZW5hYmxlZCB7IGZhbHNlIH07CisgICAgYm9vbCBtX3Nob3VsZFBhdXNlRGVkaWNhdGVkV29ya2Vy
T25TdGFydCB7IGZhbHNlIH07CisgICAgCiAgICAgdHlwZWRlZiBIYXNoTWFwPGludCwgV29ya2Vy
RnJvbnRlbmRDaGFubmVsKj4gV29ya2VyQ2hhbm5lbHM7CiAgICAgV29ya2VyQ2hhbm5lbHMgbV9p
ZFRvQ2hhbm5lbDsKICAgICB0eXBlZGVmIEhhc2hNYXA8V29ya2VyR2xvYmFsU2NvcGVQcm94eSos
IFN0cmluZz4gRGVkaWNhdGVkV29ya2VyczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnN0cnVtZW50aW5nQWdlbnRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnN0cnVtZW50aW5nQWdlbnRzLmNwcAppbmRleCBlYzA0NjQyMWJmMjZkZDc4ZjQ0ZmM2ZDRj
ZTY2ZDA5ZmI2MjU1ZGRjLi4zMzJjZTdhZDhmOTlmMzM4M2EwOTQzYzY3NDg3ZjA1OGVhZjE4NDlh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zdHJ1bWVudGluZ0FnZW50
cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3RydW1lbnRpbmdBZ2VudHMu
Y3BwCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNCwgMjAxNSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMg
YXJlCkBAIC00NCwyNyArNDQsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIEluc3RydW1lbnRp
bmdBZ2VudHM6Okluc3RydW1lbnRpbmdBZ2VudHMoSW5zcGVjdG9yRW52aXJvbm1lbnQmIGVudmly
b25tZW50KQogICAgIDogbV9lbnZpcm9ubWVudChlbnZpcm9ubWVudCkKLSAgICAsIG1faW5zcGVj
dG9yQWdlbnQobnVsbHB0cikKLSAgICAsIG1faW5zcGVjdG9yUGFnZUFnZW50KG51bGxwdHIpCi0g
ICAgLCBtX2luc3BlY3RvckNTU0FnZW50KG51bGxwdHIpCi0gICAgLCBtX2luc3BlY3RvckxheWVy
VHJlZUFnZW50KG51bGxwdHIpCi0gICAgLCBtX3dlYkNvbnNvbGVBZ2VudChudWxscHRyKQotICAg
ICwgbV9pbnNwZWN0b3JET01BZ2VudChudWxscHRyKQotICAgICwgbV9pbnNwZWN0b3JSZXNvdXJj
ZUFnZW50KG51bGxwdHIpCi0gICAgLCBtX3BhZ2VSdW50aW1lQWdlbnQobnVsbHB0cikKLSAgICAs
IG1fd29ya2VyUnVudGltZUFnZW50KG51bGxwdHIpCi0gICAgLCBtX2luc3BlY3RvclRpbWVsaW5l
QWdlbnQobnVsbHB0cikKLSAgICAsIG1fcGVyc2lzdGVudEluc3BlY3RvclRpbWVsaW5lQWdlbnQo
bnVsbHB0cikKLSAgICAsIG1faW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50KG51bGxwdHIpCi0jaWYg
RU5BQkxFKFdFQl9SRVBMQVkpCi0gICAgLCBtX2luc3BlY3RvclJlcGxheUFnZW50KG51bGxwdHIp
Ci0jZW5kaWYKLSAgICAsIG1faW5zcGVjdG9yRGF0YWJhc2VBZ2VudChudWxscHRyKQotICAgICwg
bV9pbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQobnVsbHB0cikKLSAgICAsIG1faW5zcGVj
dG9yRGVidWdnZXJBZ2VudChudWxscHRyKQotICAgICwgbV9wYWdlRGVidWdnZXJBZ2VudChudWxs
cHRyKQotICAgICwgbV9pbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50KG51bGxwdHIpCi0gICAgLCBt
X2luc3BlY3RvcldvcmtlckFnZW50KG51bGxwdHIpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnN0cnVtZW50aW5nQWdlbnRzLmggYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zdHJ1bWVudGluZ0FnZW50cy5oCmluZGV4IGY5MWE2ODU5ZTQ3NzVkYzA0
Nzg0ZmEzMTc0ODJiMzhlOGQ5OWRhNjUuLjk5ZmZkOTIzYjQ2ZTFjYWU1M2E0NjQ0ODZiMDAwYjMy
ODA4NGQ2ZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnN0cnVtZW50
aW5nQWdlbnRzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3RydW1lbnRpbmdB
Z2VudHMuaApAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQsIDIwMTUgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zIGFyZQpAQCAtNjgsOSArNjgsMTEgQEAgY2xhc3MgSW5zdHJ1bWVudGluZ0FnZW50cyA6IHB1
YmxpYyBSZWZDb3VudGVkPEluc3RydW1lbnRpbmdBZ2VudHM+IHsKICAgICBXVEZfTUFLRV9OT05D
T1BZQUJMRShJbnN0cnVtZW50aW5nQWdlbnRzKTsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbnN0cnVtZW50aW5nQWdlbnRzPiBj
cmVhdGUoSW5zcGVjdG9yOjpJbnNwZWN0b3JFbnZpcm9ubWVudCYgZW52aXJvbm1lbnQpCisgICAg
Ly8gRklYTUU6IEluc3RydW1lbnRpbmdBZ2VudHMgY291bGQgYmUgdW5pcXVlbHkgb3duZWQgYnkg
SW5zcGVjdG9yQ29udHJvbGxlciBpZiBpbnN0cnVtZW50YXRpb24KKyAgICAvLyBjb29raWVzIGtl
cHQgb25seSBhIHdlYWsgcmVmZXJlbmNlIHRvIEluc3RydW1lbnRpbmdBZ2VudHMuIFRoZW4sIHJl
c2V0KCkgd291bGQgYmUgdW5uZWNlc3NhcnkuCisgICAgc3RhdGljIFJlZjxJbnN0cnVtZW50aW5n
QWdlbnRzPiBjcmVhdGUoSW5zcGVjdG9yOjpJbnNwZWN0b3JFbnZpcm9ubWVudCYgZW52aXJvbm1l
bnQpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEluc3RydW1lbnRpbmdBZ2Vu
dHMoZW52aXJvbm1lbnQpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSW5zdHJ1bWVu
dGluZ0FnZW50cyhlbnZpcm9ubWVudCkpOwogICAgIH0KICAgICB+SW5zdHJ1bWVudGluZ0FnZW50
cygpIHsgfQogICAgIHZvaWQgcmVzZXQoKTsKQEAgLTE0MSwyOSArMTQzLDI5IEBAIHByaXZhdGU6
CiAKICAgICBJbnNwZWN0b3I6Okluc3BlY3RvckVudmlyb25tZW50JiBtX2Vudmlyb25tZW50Owog
Ci0gICAgSW5zcGVjdG9yOjpJbnNwZWN0b3JBZ2VudCogbV9pbnNwZWN0b3JBZ2VudDsKLSAgICBJ
bnNwZWN0b3JQYWdlQWdlbnQqIG1faW5zcGVjdG9yUGFnZUFnZW50OwotICAgIEluc3BlY3RvckNT
U0FnZW50KiBtX2luc3BlY3RvckNTU0FnZW50OwotICAgIEluc3BlY3RvckxheWVyVHJlZUFnZW50
KiBtX2luc3BlY3RvckxheWVyVHJlZUFnZW50OwotICAgIFdlYkNvbnNvbGVBZ2VudCogbV93ZWJD
b25zb2xlQWdlbnQ7Ci0gICAgSW5zcGVjdG9yRE9NQWdlbnQqIG1faW5zcGVjdG9yRE9NQWdlbnQ7
Ci0gICAgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudCogbV9pbnNwZWN0b3JSZXNvdXJjZUFnZW50Owot
ICAgIFBhZ2VSdW50aW1lQWdlbnQqIG1fcGFnZVJ1bnRpbWVBZ2VudDsKLSAgICBXb3JrZXJSdW50
aW1lQWdlbnQqIG1fd29ya2VyUnVudGltZUFnZW50OwotICAgIEluc3BlY3RvclRpbWVsaW5lQWdl
bnQqIG1faW5zcGVjdG9yVGltZWxpbmVBZ2VudDsKLSAgICBJbnNwZWN0b3JUaW1lbGluZUFnZW50
KiBtX3BlcnNpc3RlbnRJbnNwZWN0b3JUaW1lbGluZUFnZW50OwotICAgIEluc3BlY3RvckRPTVN0
b3JhZ2VBZ2VudCogbV9pbnNwZWN0b3JET01TdG9yYWdlQWdlbnQ7CisgICAgSW5zcGVjdG9yOjpJ
bnNwZWN0b3JBZ2VudCogbV9pbnNwZWN0b3JBZ2VudCB7IG51bGxwdHIgfTsKKyAgICBJbnNwZWN0
b3JQYWdlQWdlbnQqIG1faW5zcGVjdG9yUGFnZUFnZW50IHsgbnVsbHB0ciB9OworICAgIEluc3Bl
Y3RvckNTU0FnZW50KiBtX2luc3BlY3RvckNTU0FnZW50IHsgbnVsbHB0ciB9OworICAgIEluc3Bl
Y3RvckxheWVyVHJlZUFnZW50KiBtX2luc3BlY3RvckxheWVyVHJlZUFnZW50IHsgbnVsbHB0ciB9
OworICAgIFdlYkNvbnNvbGVBZ2VudCogbV93ZWJDb25zb2xlQWdlbnQgeyBudWxscHRyIH07Cisg
ICAgSW5zcGVjdG9yRE9NQWdlbnQqIG1faW5zcGVjdG9yRE9NQWdlbnQgeyBudWxscHRyIH07Cisg
ICAgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudCogbV9pbnNwZWN0b3JSZXNvdXJjZUFnZW50IHsgbnVs
bHB0ciB9OworICAgIFBhZ2VSdW50aW1lQWdlbnQqIG1fcGFnZVJ1bnRpbWVBZ2VudCB7IG51bGxw
dHIgfTsKKyAgICBXb3JrZXJSdW50aW1lQWdlbnQqIG1fd29ya2VyUnVudGltZUFnZW50IHsgbnVs
bHB0ciB9OworICAgIEluc3BlY3RvclRpbWVsaW5lQWdlbnQqIG1faW5zcGVjdG9yVGltZWxpbmVB
Z2VudCB7IG51bGxwdHIgfTsKKyAgICBJbnNwZWN0b3JUaW1lbGluZUFnZW50KiBtX3BlcnNpc3Rl
bnRJbnNwZWN0b3JUaW1lbGluZUFnZW50IHsgbnVsbHB0ciB9OworICAgIEluc3BlY3RvckRPTVN0
b3JhZ2VBZ2VudCogbV9pbnNwZWN0b3JET01TdG9yYWdlQWdlbnQgeyBudWxscHRyIH07CiAjaWYg
RU5BQkxFKFdFQl9SRVBMQVkpCi0gICAgSW5zcGVjdG9yUmVwbGF5QWdlbnQqIG1faW5zcGVjdG9y
UmVwbGF5QWdlbnQ7CisgICAgSW5zcGVjdG9yUmVwbGF5QWdlbnQqIG1faW5zcGVjdG9yUmVwbGF5
QWdlbnQgeyBudWxscHRyIH07CiAjZW5kaWYKLSAgICBJbnNwZWN0b3JEYXRhYmFzZUFnZW50KiBt
X2luc3BlY3RvckRhdGFiYXNlQWdlbnQ7Ci0gICAgSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFn
ZW50KiBtX2luc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudDsKLSAgICBJbnNwZWN0b3I6Oklu
c3BlY3RvckRlYnVnZ2VyQWdlbnQqIG1faW5zcGVjdG9yRGVidWdnZXJBZ2VudDsKLSAgICBQYWdl
RGVidWdnZXJBZ2VudCogbV9wYWdlRGVidWdnZXJBZ2VudDsKLSAgICBJbnNwZWN0b3JET01EZWJ1
Z2dlckFnZW50KiBtX2luc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ7Ci0gICAgSW5zcGVjdG9yV29y
a2VyQWdlbnQqIG1faW5zcGVjdG9yV29ya2VyQWdlbnQ7CisgICAgSW5zcGVjdG9yRGF0YWJhc2VB
Z2VudCogbV9pbnNwZWN0b3JEYXRhYmFzZUFnZW50IHsgbnVsbHB0ciB9OworICAgIEluc3BlY3Rv
ckFwcGxpY2F0aW9uQ2FjaGVBZ2VudCogbV9pbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQg
eyBudWxscHRyIH07CisgICAgSW5zcGVjdG9yOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50KiBtX2lu
c3BlY3RvckRlYnVnZ2VyQWdlbnQgeyBudWxscHRyIH07CisgICAgUGFnZURlYnVnZ2VyQWdlbnQq
IG1fcGFnZURlYnVnZ2VyQWdlbnQgeyBudWxscHRyIH07CisgICAgSW5zcGVjdG9yRE9NRGVidWdn
ZXJBZ2VudCogbV9pbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50IHsgbnVsbHB0ciB9OworICAgIElu
c3BlY3RvcldvcmtlckFnZW50KiBtX2luc3BlY3RvcldvcmtlckFnZW50IHsgbnVsbHB0ciB9Owog
fTsKIAotfQorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gIWRlZmluZWQoSW5z
dHJ1bWVudGluZ0FnZW50c19oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L1BhZ2VDb25zb2xlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VDb25z
b2xlQWdlbnQuY3BwCmluZGV4IGU3NTlhYTgwNTc2OTg1MGUzZjM5NTlmYzM0YzBjNWQ2NTEyN2Rj
MTcuLjY3MTk3NDczMTIwODJhNzBjNjRjNmEyZTI4MmQ1MzZmYWVmZWIwZTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdlQ29uc29sZUFnZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZUNvbnNvbGVBZ2VudC5jcHAKQEAgLTEsNSArMSw2IEBA
CiAvKgogICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQpAQCAtNDAsNyArNDEsNyBAQCB1
c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVBhZ2VD
b25zb2xlQWdlbnQ6OlBhZ2VDb25zb2xlQWdlbnQoV2ViSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiBp
bmplY3RlZFNjcmlwdE1hbmFnZXIsIEluc3BlY3RvckRPTUFnZW50KiBkb21BZ2VudCkKK1BhZ2VD
b25zb2xlQWdlbnQ6OlBhZ2VDb25zb2xlQWdlbnQoV2ViSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyJiBp
bmplY3RlZFNjcmlwdE1hbmFnZXIsIEluc3BlY3RvckRPTUFnZW50KiBkb21BZ2VudCkKICAgICA6
IFdlYkNvbnNvbGVBZ2VudChpbmplY3RlZFNjcmlwdE1hbmFnZXIpCiAgICAgLCBtX2luc3BlY3Rv
ckRPTUFnZW50KGRvbUFnZW50KQogewpAQCAtNzIsNyArNzMsNyBAQCB2b2lkIFBhZ2VDb25zb2xl
QWdlbnQ6OmFkZEluc3BlY3RlZE5vZGUoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBpbnQgbm9k
ZUlkKQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKENvbW1hbmRMaW5lQVBJSG9z
dCogY29tbWFuZExpbmVBUElIb3N0ID0gc3RhdGljX2Nhc3Q8V2ViSW5qZWN0ZWRTY3JpcHRNYW5h
Z2VyKj4obV9pbmplY3RlZFNjcmlwdE1hbmFnZXIpLT5jb21tYW5kTGluZUFQSUhvc3QoKSkKKyAg
ICBpZiAoQ29tbWFuZExpbmVBUElIb3N0KiBjb21tYW5kTGluZUFQSUhvc3QgPSBzdGF0aWNfY2Fz
dDxXZWJJbmplY3RlZFNjcmlwdE1hbmFnZXImPihtX2luamVjdGVkU2NyaXB0TWFuYWdlcikuY29t
bWFuZExpbmVBUElIb3N0KCkpCiAgICAgICAgIGNvbW1hbmRMaW5lQVBJSG9zdC0+YWRkSW5zcGVj
dGVkT2JqZWN0KHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdGFibGVOb2RlPihub2RlKSk7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdlQ29uc29sZUFnZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZUNvbnNvbGVBZ2VudC5oCmluZGV4IDM2YzMw
YzI0ZDgyNjNiODAwZjNmYjI0OWYwNjlhNjViZTk0OWEwMmIuLmIxMzU0MDRhZTRmN2EyNTM1MmEw
NDhhMWM1ZDVhNjdmNDM1YjRmNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9QYWdlQ29uc29sZUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VD
b25zb2xlQWdlbnQuaApAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTEg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMgYXJlCkBAIC00MSw3ICs0Miw3IEBAIGNsYXNzIFBhZ2VDb25zb2xlQWdlbnQgZmluYWwg
OiBwdWJsaWMgV2ViQ29uc29sZUFnZW50IHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShQYWdl
Q29uc29sZUFnZW50KTsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAg
ICBQYWdlQ29uc29sZUFnZW50KFdlYkluamVjdGVkU2NyaXB0TWFuYWdlciosIEluc3BlY3RvckRP
TUFnZW50Kik7CisgICAgUGFnZUNvbnNvbGVBZ2VudChXZWJJbmplY3RlZFNjcmlwdE1hbmFnZXIm
LCBJbnNwZWN0b3JET01BZ2VudCopOwogICAgIHZpcnR1YWwgflBhZ2VDb25zb2xlQWdlbnQoKSB7
IH0KIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdl
RGVidWdnZXJBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZURlYnVnZ2Vy
QWdlbnQuY3BwCmluZGV4IDAwMjM5YjdkMjUzYTlkZjFkMTU1YmM1NjczZGI5OTBjZTYzMWFkZDgu
LmFlM2IxNDVjMzQ2NTM5MDYzZDcyNDE0YmRjYjlkYTBmMjVmZjhiZjUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdlRGVidWdnZXJBZ2VudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VEZWJ1Z2dlckFnZW50LmNwcApAQCAtMSw1ICsxLDYgQEAK
IC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCkBAIC00OSw3ICs1MCw3IEBAIHVz
aW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUGFnZURl
YnVnZ2VyQWdlbnQ6OlBhZ2VEZWJ1Z2dlckFnZW50KEluamVjdGVkU2NyaXB0TWFuYWdlciogaW5q
ZWN0ZWRTY3JpcHRNYW5hZ2VyLCBJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdl
bnRzLCBJbnNwZWN0b3JQYWdlQWdlbnQqIHBhZ2VBZ2VudCwgSW5zcGVjdG9yT3ZlcmxheSogb3Zl
cmxheSkKK1BhZ2VEZWJ1Z2dlckFnZW50OjpQYWdlRGVidWdnZXJBZ2VudChJbmplY3RlZFNjcmlw
dE1hbmFnZXImIGluamVjdGVkU2NyaXB0TWFuYWdlciwgSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5z
dHJ1bWVudGluZ0FnZW50cywgSW5zcGVjdG9yUGFnZUFnZW50KiBwYWdlQWdlbnQsIEluc3BlY3Rv
ck92ZXJsYXkqIG92ZXJsYXkpCiAgICAgOiBXZWJEZWJ1Z2dlckFnZW50KGluamVjdGVkU2NyaXB0
TWFuYWdlciwgaW5zdHJ1bWVudGluZ0FnZW50cykKICAgICAsIG1fcGFnZUFnZW50KHBhZ2VBZ2Vu
dCkKICAgICAsIG1fb3ZlcmxheShvdmVybGF5KQpAQCAtNjAsMTMgKzYxLDEzIEBAIFBhZ2VEZWJ1
Z2dlckFnZW50OjpQYWdlRGVidWdnZXJBZ2VudChJbmplY3RlZFNjcmlwdE1hbmFnZXIqIGluamVj
dGVkU2NyaXB0TWFuYWdlCiB2b2lkIFBhZ2VEZWJ1Z2dlckFnZW50OjplbmFibGUoKQogewogICAg
IFdlYkRlYnVnZ2VyQWdlbnQ6OmVuYWJsZSgpOwotICAgIG1faW5zdHJ1bWVudGluZ0FnZW50cy0+
c2V0UGFnZURlYnVnZ2VyQWdlbnQodGhpcyk7CisgICAgbV9pbnN0cnVtZW50aW5nQWdlbnRzLnNl
dFBhZ2VEZWJ1Z2dlckFnZW50KHRoaXMpOwogfQogCiB2b2lkIFBhZ2VEZWJ1Z2dlckFnZW50Ojpk
aXNhYmxlKGJvb2wgaXNCZWluZ0Rlc3Ryb3llZCkKIHsKICAgICBXZWJEZWJ1Z2dlckFnZW50Ojpk
aXNhYmxlKGlzQmVpbmdEZXN0cm95ZWQpOwotICAgIG1faW5zdHJ1bWVudGluZ0FnZW50cy0+c2V0
UGFnZURlYnVnZ2VyQWdlbnQobnVsbHB0cik7CisgICAgbV9pbnN0cnVtZW50aW5nQWdlbnRzLnNl
dFBhZ2VEZWJ1Z2dlckFnZW50KG51bGxwdHIpOwogfQogCiBTdHJpbmcgUGFnZURlYnVnZ2VyQWdl
bnQ6OnNvdXJjZU1hcFVSTEZvclNjcmlwdChjb25zdCBTY3JpcHQmIHNjcmlwdCkKQEAgLTEyNCwx
MCArMTI1LDEwIEBAIEluamVjdGVkU2NyaXB0IFBhZ2VEZWJ1Z2dlckFnZW50OjppbmplY3RlZFNj
cmlwdEZvckV2YWwoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nCiB7CiAgICAgaWYgKCFleGVjdXRp
b25Db250ZXh0SWQpIHsKICAgICAgICAgSlNDOjpFeGVjU3RhdGUqIHNjcmlwdFN0YXRlID0gbWFp
bldvcmxkRXhlY1N0YXRlKG1fcGFnZUFnZW50LT5tYWluRnJhbWUoKSk7Ci0gICAgICAgIHJldHVy
biBpbmplY3RlZFNjcmlwdE1hbmFnZXIoKS0+aW5qZWN0ZWRTY3JpcHRGb3Ioc2NyaXB0U3RhdGUp
OworICAgICAgICByZXR1cm4gaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKCkuaW5qZWN0ZWRTY3JpcHRG
b3Ioc2NyaXB0U3RhdGUpOwogICAgIH0KIAotICAgIEluamVjdGVkU2NyaXB0IGluamVjdGVkU2Ny
aXB0ID0gaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKCktPmluamVjdGVkU2NyaXB0Rm9ySWQoKmV4ZWN1
dGlvbkNvbnRleHRJZCk7CisgICAgSW5qZWN0ZWRTY3JpcHQgaW5qZWN0ZWRTY3JpcHQgPSBpbmpl
Y3RlZFNjcmlwdE1hbmFnZXIoKS5pbmplY3RlZFNjcmlwdEZvcklkKCpleGVjdXRpb25Db250ZXh0
SWQpOwogICAgIGlmIChpbmplY3RlZFNjcmlwdC5oYXNOb1ZhbHVlKCkpCiAgICAgICAgIGVycm9y
U3RyaW5nID0gQVNDSUlMaXRlcmFsKCJFeGVjdXRpb24gY29udGV4dCB3aXRoIGdpdmVuIGlkIG5v
dCBmb3VuZC4iKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VE
ZWJ1Z2dlckFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZURlYnVnZ2VyQWdl
bnQuaAppbmRleCA1NDlmN2QzZmM2ZWI5MWYwOWYwM2Y3N2I1NWIxZmE1ODY1MGRmYTRmLi43NWFm
MjhlNDlmNzllYjcwOGMwNDQzNzZjODlmZTdiYjNjOGJmZWI1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvUGFnZURlYnVnZ2VyQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvUGFnZURlYnVnZ2VyQWdlbnQuaApAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBD
b3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCkBAIC00Niw3ICs0Nyw3IEBAIGNsYXNzIFBhZ2VE
ZWJ1Z2dlckFnZW50IGZpbmFsIDogcHVibGljIFdlYkRlYnVnZ2VyQWdlbnQgewogICAgIFdURl9N
QUtFX05PTkNPUFlBQkxFKFBhZ2VEZWJ1Z2dlckFnZW50KTsKICAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKIHB1YmxpYzoKLSAgICBQYWdlRGVidWdnZXJBZ2VudChJbnNwZWN0b3I6OkluamVj
dGVkU2NyaXB0TWFuYWdlciosIEluc3RydW1lbnRpbmdBZ2VudHMqLCBJbnNwZWN0b3JQYWdlQWdl
bnQqLCBJbnNwZWN0b3JPdmVybGF5Kik7CisgICAgUGFnZURlYnVnZ2VyQWdlbnQoSW5zcGVjdG9y
OjpJbmplY3RlZFNjcmlwdE1hbmFnZXImLCBJbnN0cnVtZW50aW5nQWdlbnRzJiwgSW5zcGVjdG9y
UGFnZUFnZW50KiwgSW5zcGVjdG9yT3ZlcmxheSopOwogICAgIHZpcnR1YWwgflBhZ2VEZWJ1Z2dl
ckFnZW50KCkgeyB9CiAKICAgICB2b2lkIGRpZENsZWFyTWFpbkZyYW1lV2luZG93T2JqZWN0KCk7
CkBAIC03MCw4ICs3MSw5IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBJbnNwZWN0b3I6OkluamVj
dGVkU2NyaXB0IGluamVjdGVkU2NyaXB0Rm9yRXZhbChFcnJvclN0cmluZyYsIGNvbnN0IGludCog
ZXhlY3V0aW9uQ29udGV4dElkKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0T3Zlcmxh
eU1lc3NhZ2UoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcqKSBvdmVycmlkZTsKIAotICAgIElu
c3BlY3RvclBhZ2VBZ2VudCogbV9wYWdlQWdlbnQ7Ci0gICAgSW5zcGVjdG9yT3ZlcmxheSogbV9v
dmVybGF5OworICAgIEluc3BlY3RvclBhZ2VBZ2VudCogbV9wYWdlQWdlbnQgeyBudWxscHRyIH07
CisKKyAgICBJbnNwZWN0b3JPdmVybGF5KiBtX292ZXJsYXkgeyBudWxscHRyIH07CiAgICAgUGFn
ZVNjcmlwdERlYnVnU2VydmVyIG1fc2NyaXB0RGVidWdTZXJ2ZXI7CiB9OwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZVJ1bnRpbWVBZ2VudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvUGFnZVJ1bnRpbWVBZ2VudC5jcHAKaW5kZXggZTI0NDVhYmY0NDNk
MDhmNDM4NGEwMzliYzllNTVkOGQ1ZjNmNzEyYi4uMTgzNGNjNTI1NmFkNGVlNGRmY2I0MjA3ODZh
YjNlMzBjN2JmZGMyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VS
dW50aW1lQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdlUnVudGlt
ZUFnZW50LmNwcApAQCAtNTIsMTEgKzUyLDEwIEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUGFnZVJ1bnRpbWVBZ2VudDo6UGFnZVJ1bnRpbWVB
Z2VudChJbmplY3RlZFNjcmlwdE1hbmFnZXIqIGluamVjdGVkU2NyaXB0TWFuYWdlciwgUGFnZSog
cGFnZSwgSW5zcGVjdG9yUGFnZUFnZW50KiBwYWdlQWdlbnQpCitQYWdlUnVudGltZUFnZW50OjpQ
YWdlUnVudGltZUFnZW50KEluamVjdGVkU2NyaXB0TWFuYWdlciYgaW5qZWN0ZWRTY3JpcHRNYW5h
Z2VyLCBQYWdlKiBwYWdlLCBJbnNwZWN0b3JQYWdlQWdlbnQqIHBhZ2VBZ2VudCkKICAgICA6IElu
c3BlY3RvclJ1bnRpbWVBZ2VudChpbmplY3RlZFNjcmlwdE1hbmFnZXIpCi0gICAgLCBtX2luc3Bl
Y3RlZFBhZ2UocGFnZSkKICAgICAsIG1fcGFnZUFnZW50KHBhZ2VBZ2VudCkKLSAgICAsIG1fbWFp
bldvcmxkQ29udGV4dENyZWF0ZWQoZmFsc2UpCisgICAgLCBtX2luc3BlY3RlZFBhZ2UocGFnZSkK
IHsKIH0KIApAQCAtMTIxLDEzICsxMjAsMTMgQEAgSW5qZWN0ZWRTY3JpcHQgUGFnZVJ1bnRpbWVB
Z2VudDo6aW5qZWN0ZWRTY3JpcHRGb3JFdmFsKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywKIHsK
ICAgICBpZiAoIWV4ZWN1dGlvbkNvbnRleHRJZCkgewogICAgICAgICBKU0M6OkV4ZWNTdGF0ZSog
c2NyaXB0U3RhdGUgPSBtYWluV29ybGRFeGVjU3RhdGUoJm1faW5zcGVjdGVkUGFnZS0+bWFpbkZy
YW1lKCkpOwotICAgICAgICBJbmplY3RlZFNjcmlwdCByZXN1bHQgPSBpbmplY3RlZFNjcmlwdE1h
bmFnZXIoKS0+aW5qZWN0ZWRTY3JpcHRGb3Ioc2NyaXB0U3RhdGUpOworICAgICAgICBJbmplY3Rl
ZFNjcmlwdCByZXN1bHQgPSBpbmplY3RlZFNjcmlwdE1hbmFnZXIoKS5pbmplY3RlZFNjcmlwdEZv
cihzY3JpcHRTdGF0ZSk7CiAgICAgICAgIGlmIChyZXN1bHQuaGFzTm9WYWx1ZSgpKQogICAgICAg
ICAgICAgZXJyb3JTdHJpbmcgPSBBU0NJSUxpdGVyYWwoIkludGVybmFsIGVycm9yOiBtYWluIHdv
cmxkIGV4ZWN1dGlvbiBjb250ZXh0IG5vdCBmb3VuZC4iKTsKICAgICAgICAgcmV0dXJuIHJlc3Vs
dDsKICAgICB9CiAKLSAgICBJbmplY3RlZFNjcmlwdCBpbmplY3RlZFNjcmlwdCA9IGluamVjdGVk
U2NyaXB0TWFuYWdlcigpLT5pbmplY3RlZFNjcmlwdEZvcklkKCpleGVjdXRpb25Db250ZXh0SWQp
OworICAgIEluamVjdGVkU2NyaXB0IGluamVjdGVkU2NyaXB0ID0gaW5qZWN0ZWRTY3JpcHRNYW5h
Z2VyKCkuaW5qZWN0ZWRTY3JpcHRGb3JJZCgqZXhlY3V0aW9uQ29udGV4dElkKTsKICAgICBpZiAo
aW5qZWN0ZWRTY3JpcHQuaGFzTm9WYWx1ZSgpKQogICAgICAgICBlcnJvclN0cmluZyA9IEFTQ0lJ
TGl0ZXJhbCgiRXhlY3V0aW9uIGNvbnRleHQgd2l0aCBnaXZlbiBpZCBub3QgZm91bmQuIik7CiAg
ICAgcmV0dXJuIGluamVjdGVkU2NyaXB0OwpAQCAtMTY2LDExICsxNjUsMTEgQEAgdm9pZCBQYWdl
UnVudGltZUFnZW50Ojpub3RpZnlDb250ZXh0Q3JlYXRlZChjb25zdCBTdHJpbmcmIGZyYW1lSWQs
IEpTQzo6RXhlY1N0YXQKIHsKICAgICBBU1NFUlQoc2VjdXJpdHlPcmlnaW4gfHwgaXNQYWdlQ29u
dGV4dCk7CiAKLSAgICBJbmplY3RlZFNjcmlwdCByZXN1bHQgPSBpbmplY3RlZFNjcmlwdE1hbmFn
ZXIoKS0+aW5qZWN0ZWRTY3JpcHRGb3Ioc2NyaXB0U3RhdGUpOworICAgIEluamVjdGVkU2NyaXB0
IHJlc3VsdCA9IGluamVjdGVkU2NyaXB0TWFuYWdlcigpLmluamVjdGVkU2NyaXB0Rm9yKHNjcmlw
dFN0YXRlKTsKICAgICBpZiAocmVzdWx0Lmhhc05vVmFsdWUoKSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgaW50IGV4ZWN1dGlvbkNvbnRleHRJZCA9IGluamVjdGVkU2NyaXB0TWFuYWdlcigpLT5p
bmplY3RlZFNjcmlwdElkRm9yKHNjcmlwdFN0YXRlKTsKKyAgICBpbnQgZXhlY3V0aW9uQ29udGV4
dElkID0gaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKCkuaW5qZWN0ZWRTY3JpcHRJZEZvcihzY3JpcHRT
dGF0ZSk7CiAgICAgU3RyaW5nIG5hbWUgPSBzZWN1cml0eU9yaWdpbiA/IHNlY3VyaXR5T3JpZ2lu
LT50b1Jhd1N0cmluZygpIDogU3RyaW5nKCk7CiAgICAgbV9mcm9udGVuZERpc3BhdGNoZXItPmV4
ZWN1dGlvbkNvbnRleHRDcmVhdGVkKEV4ZWN1dGlvbkNvbnRleHREZXNjcmlwdGlvbjo6Y3JlYXRl
KCkKICAgICAgICAgLnNldElkKGV4ZWN1dGlvbkNvbnRleHRJZCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdlUnVudGltZUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvUGFnZVJ1bnRpbWVBZ2VudC5oCmluZGV4IGU3YjJjMjRkOGQwZTU0NDljZTcyZjEx
OTRjOGQyMzRiNzMwZmFhZjkuLjI3ODdkZTc3YzY4NzJmMjc1NjhjMDM1NzAyYmZlODU3NDZkMDQw
OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdlUnVudGltZUFnZW50
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VSdW50aW1lQWdlbnQuaApAQCAt
NTMsNyArNTMsNyBAQCB0eXBlZGVmIFN0cmluZyBFcnJvclN0cmluZzsKIGNsYXNzIFBhZ2VSdW50
aW1lQWdlbnQgZmluYWwgOiBwdWJsaWMgSW5zcGVjdG9yOjpJbnNwZWN0b3JSdW50aW1lQWdlbnQg
ewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIFBhZ2VSdW50aW1l
QWdlbnQoSW5zcGVjdG9yOjpJbmplY3RlZFNjcmlwdE1hbmFnZXIqLCBQYWdlKiwgSW5zcGVjdG9y
UGFnZUFnZW50Kik7CisgICAgUGFnZVJ1bnRpbWVBZ2VudChJbnNwZWN0b3I6OkluamVjdGVkU2Ny
aXB0TWFuYWdlciYsIFBhZ2UqLCBJbnNwZWN0b3JQYWdlQWdlbnQqKTsKICAgICB2aXJ0dWFsIH5Q
YWdlUnVudGltZUFnZW50KCkgeyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRl
bmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6RnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yOjpCYWNr
ZW5kRGlzcGF0Y2hlciopIG92ZXJyaWRlOwpAQCAtNzIsMTEgKzcyLDEzIEBAIHByaXZhdGU6CiAg
ICAgdm9pZCByZXBvcnRFeGVjdXRpb25Db250ZXh0Q3JlYXRpb24oKTsKICAgICB2b2lkIG5vdGlm
eUNvbnRleHRDcmVhdGVkKGNvbnN0IFN0cmluZyYgZnJhbWVJZCwgSlNDOjpFeGVjU3RhdGUqLCBT
ZWN1cml0eU9yaWdpbiosIGJvb2wgaXNQYWdlQ29udGV4dCk7CiAKLSAgICBQYWdlKiBtX2luc3Bl
Y3RlZFBhZ2U7Ci0gICAgSW5zcGVjdG9yUGFnZUFnZW50KiBtX3BhZ2VBZ2VudDsKICAgICBzdGQ6
OnVuaXF1ZV9wdHI8SW5zcGVjdG9yOjpSdW50aW1lRnJvbnRlbmREaXNwYXRjaGVyPiBtX2Zyb250
ZW5kRGlzcGF0Y2hlcjsKICAgICBSZWZQdHI8SW5zcGVjdG9yOjpSdW50aW1lQmFja2VuZERpc3Bh
dGNoZXI+IG1fYmFja2VuZERpc3BhdGNoZXI7Ci0gICAgYm9vbCBtX21haW5Xb3JsZENvbnRleHRD
cmVhdGVkOworICAgIEluc3BlY3RvclBhZ2VBZ2VudCogbV9wYWdlQWdlbnQ7CisKKyAgICBQYWdl
KiBtX2luc3BlY3RlZFBhZ2U7CisKKyAgICBib29sIG1fbWFpbldvcmxkQ29udGV4dENyZWF0ZWQg
eyBmYWxzZSB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dlYkNvbnNvbGVBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvV2ViQ29uc29sZUFnZW50LmNwcAppbmRleCA0NzAwNThlZTQzZTkyYjk1MjUw
NDkxZTlhOGFmNTNmZTYyNDUyNjhhLi45YjAwZjJmZGVhM2ZiOTU3OTM2YzJlMjMzNzAzNzZlZTk4
NmZjNDA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV2ViQ29uc29sZUFn
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV2ViQ29uc29sZUFnZW50LmNw
cApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE0LCAyMDE1IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtNDEsOSArNDEsOCBA
QCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVdl
YkNvbnNvbGVBZ2VudDo6V2ViQ29uc29sZUFnZW50KFdlYkluamVjdGVkU2NyaXB0TWFuYWdlciog
aW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKQorV2ViQ29uc29sZUFnZW50OjpXZWJDb25zb2xlQWdlbnQo
V2ViSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyJiBpbmplY3RlZFNjcmlwdE1hbmFnZXIpCiAgICAgOiBJ
bnNwZWN0b3JDb25zb2xlQWdlbnQoaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKQotICAgICwgbV9tb25p
dG9yaW5nWEhSRW5hYmxlZChmYWxzZSkKIHsKIH0KIApAQCAtNjQsMTIgKzYzLDEyIEBAIHZvaWQg
V2ViQ29uc29sZUFnZW50OjpmcmFtZVdpbmRvd0Rpc2NhcmRlZChET01XaW5kb3cqIHdpbmRvdykK
ICAgICAgICAgbV9jb25zb2xlTWVzc2FnZXNbaV0tPmNsZWFyKCk7CiAgICAgfQogCi0gICAgc3Rh
dGljX2Nhc3Q8V2ViSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKj4obV9pbmplY3RlZFNjcmlwdE1hbmFn
ZXIpLT5kaXNjYXJkSW5qZWN0ZWRTY3JpcHRzRm9yKHdpbmRvdyk7CisgICAgc3RhdGljX2Nhc3Q8
V2ViSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyJj4obV9pbmplY3RlZFNjcmlwdE1hbmFnZXIpLmRpc2Nh
cmRJbmplY3RlZFNjcmlwdHNGb3Iod2luZG93KTsKIH0KIAogdm9pZCBXZWJDb25zb2xlQWdlbnQ6
OmRpZEZpbmlzaFhIUkxvYWRpbmcodW5zaWduZWQgbG9uZyByZXF1ZXN0SWRlbnRpZmllciwgY29u
c3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgc2VuZFVSTCwgdW5zaWduZWQgc2VuZExpbmVO
dW1iZXIsIHVuc2lnbmVkIHNlbmRDb2x1bW5OdW1iZXIpCiB7Ci0gICAgaWYgKCFtX2luamVjdGVk
U2NyaXB0TWFuYWdlci0+aW5zcGVjdG9yRW52aXJvbm1lbnQoKS5kZXZlbG9wZXJFeHRyYXNFbmFi
bGVkKCkpCisgICAgaWYgKCFtX2luamVjdGVkU2NyaXB0TWFuYWdlci5pbnNwZWN0b3JFbnZpcm9u
bWVudCgpLmRldmVsb3BlckV4dHJhc0VuYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAg
aWYgKG1fZnJvbnRlbmREaXNwYXRjaGVyICYmIG1fbW9uaXRvcmluZ1hIUkVuYWJsZWQpIHsKQEAg
LTgwLDcgKzc5LDcgQEAgdm9pZCBXZWJDb25zb2xlQWdlbnQ6OmRpZEZpbmlzaFhIUkxvYWRpbmco
dW5zaWduZWQgbG9uZyByZXF1ZXN0SWRlbnRpZmllciwgY29uc3QKIAogdm9pZCBXZWJDb25zb2xl
QWdlbnQ6OmRpZFJlY2VpdmVSZXNwb25zZSh1bnNpZ25lZCBsb25nIHJlcXVlc3RJZGVudGlmaWVy
LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKIHsKLSAgICBpZiAoIW1faW5qZWN0
ZWRTY3JpcHRNYW5hZ2VyLT5pbnNwZWN0b3JFbnZpcm9ubWVudCgpLmRldmVsb3BlckV4dHJhc0Vu
YWJsZWQoKSkKKyAgICBpZiAoIW1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmluc3BlY3RvckVudmly
b25tZW50KCkuZGV2ZWxvcGVyRXh0cmFzRW5hYmxlZCgpKQogICAgICAgICByZXR1cm47CiAKICAg
ICBpZiAocmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSA+PSA0MDApIHsKQEAgLTkxLDcgKzkwLDcg
QEAgdm9pZCBXZWJDb25zb2xlQWdlbnQ6OmRpZFJlY2VpdmVSZXNwb25zZSh1bnNpZ25lZCBsb25n
IHJlcXVlc3RJZGVudGlmaWVyLCBjb25zdAogCiB2b2lkIFdlYkNvbnNvbGVBZ2VudDo6ZGlkRmFp
bExvYWRpbmcodW5zaWduZWQgbG9uZyByZXF1ZXN0SWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VF
cnJvciYgZXJyb3IpCiB7Ci0gICAgaWYgKCFtX2luamVjdGVkU2NyaXB0TWFuYWdlci0+aW5zcGVj
dG9yRW52aXJvbm1lbnQoKS5kZXZlbG9wZXJFeHRyYXNFbmFibGVkKCkpCisgICAgaWYgKCFtX2lu
amVjdGVkU2NyaXB0TWFuYWdlci5pbnNwZWN0b3JFbnZpcm9ubWVudCgpLmRldmVsb3BlckV4dHJh
c0VuYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gUmVwb3J0IGZhaWx1cmVzIG9u
bHkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV2ViQ29uc29sZUFnZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV2ViQ29uc29sZUFnZW50LmgKaW5kZXggY2Fm
MWIxZGVhNTQxMTkyOTU5YjcxMmEzZDBiZjZlZDljMTAxZjk5ZS4uMjkyZjlkNDMzMTY1ZWJiODcz
NDU3MWVhOTA5NWFjYjI4Nzg4ZDJhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL1dlYkNvbnNvbGVBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9XZWJD
b25zb2xlQWdlbnQuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE0LCAy
MDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAx
MSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAt
NDAsNyArNDAsNyBAQCBjbGFzcyBXZWJDb25zb2xlQWdlbnQgOiBwdWJsaWMgSW5zcGVjdG9yOjpJ
bnNwZWN0b3JDb25zb2xlQWdlbnQgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFdlYkNvbnNv
bGVBZ2VudCk7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgV2Vi
Q29uc29sZUFnZW50KFdlYkluamVjdGVkU2NyaXB0TWFuYWdlciopOworICAgIFdlYkNvbnNvbGVB
Z2VudChXZWJJbmplY3RlZFNjcmlwdE1hbmFnZXImKTsKICAgICB2aXJ0dWFsIH5XZWJDb25zb2xl
QWdlbnQoKSB7IH0KIAogICAgIHZpcnR1YWwgdm9pZCBzZXRNb25pdG9yaW5nWEhSRW5hYmxlZChF
cnJvclN0cmluZyYsIGJvb2wgZW5hYmxlZCkgb3ZlcnJpZGUgZmluYWw7CkBAIC01Miw3ICs1Miw3
IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZEZhaWxMb2FkaW5nKHVuc2lnbmVkIGxvbmcgcmVxdWVz
dElkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlRXJyb3ImKTsKIAogcHJvdGVjdGVkOgotICAgIGJv
b2wgbV9tb25pdG9yaW5nWEhSRW5hYmxlZDsKKyAgICBib29sIG1fbW9uaXRvcmluZ1hIUkVuYWJs
ZWQgeyBmYWxzZSB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dlYkRlYnVnZ2VyQWdlbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL1dlYkRlYnVnZ2VyQWdlbnQuY3BwCmluZGV4IGRkNjllNWYzZjE0MjRm
YzhjM2U1NDZkZWUyYTJmN2Y5YjY1ZDk5MTYuLjRiNmFmZjhkODA5N2JiYmI3ODgwNzY3ZWY1MGUy
NTlhNDEwMzY0YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9XZWJEZWJ1
Z2dlckFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV2ViRGVidWdnZXJB
Z2VudC5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNCwgMjAxNSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTMyLDcgKzMyLDcgQEAgdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1XZWJEZWJ1Z2dlckFnZW50OjpXZWJEZWJ1Z2dlckFnZW50KElu
amVjdGVkU2NyaXB0TWFuYWdlciogaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLCBJbnN0cnVtZW50aW5n
QWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzKQorV2ViRGVidWdnZXJBZ2VudDo6V2ViRGVidWdn
ZXJBZ2VudChJbmplY3RlZFNjcmlwdE1hbmFnZXImIGluamVjdGVkU2NyaXB0TWFuYWdlciwgSW5z
dHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cykKICAgICA6IEluc3BlY3RvckRl
YnVnZ2VyQWdlbnQoaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKQogICAgICwgbV9pbnN0cnVtZW50aW5n
QWdlbnRzKGluc3RydW1lbnRpbmdBZ2VudHMpCiB7CkBAIC00MSwxMyArNDEsMTMgQEAgV2ViRGVi
dWdnZXJBZ2VudDo6V2ViRGVidWdnZXJBZ2VudChJbmplY3RlZFNjcmlwdE1hbmFnZXIqIGluamVj
dGVkU2NyaXB0TWFuYWdlciwKIHZvaWQgV2ViRGVidWdnZXJBZ2VudDo6ZW5hYmxlKCkKIHsKICAg
ICBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjplbmFibGUoKTsKLSAgICBtX2luc3RydW1lbnRpbmdB
Z2VudHMtPnNldEluc3BlY3RvckRlYnVnZ2VyQWdlbnQodGhpcyk7CisgICAgbV9pbnN0cnVtZW50
aW5nQWdlbnRzLnNldEluc3BlY3RvckRlYnVnZ2VyQWdlbnQodGhpcyk7CiB9CiAKIHZvaWQgV2Vi
RGVidWdnZXJBZ2VudDo6ZGlzYWJsZShib29sIGlzQmVpbmdEZXN0cm95ZWQpCiB7CiAgICAgSW5z
cGVjdG9yRGVidWdnZXJBZ2VudDo6ZGlzYWJsZShpc0JlaW5nRGVzdHJveWVkKTsKLSAgICBtX2lu
c3RydW1lbnRpbmdBZ2VudHMtPnNldEluc3BlY3RvckRlYnVnZ2VyQWdlbnQobnVsbHB0cik7Cisg
ICAgbV9pbnN0cnVtZW50aW5nQWdlbnRzLnNldEluc3BlY3RvckRlYnVnZ2VyQWdlbnQobnVsbHB0
cik7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9XZWJEZWJ1Z2dlckFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvV2ViRGVidWdnZXJBZ2VudC5oCmluZGV4IDA3NDE2NjIxNjFkY2MxNTViZDEyOTFkZWI2YTg1
MzRlYzRiOTNkYmQuLmNjMGJiZGM3YmNlMTBmZGJjY2M2YjI2YTdlNTZkYmM3OTFkM2MwZDIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9XZWJEZWJ1Z2dlckFnZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dlYkRlYnVnZ2VyQWdlbnQuaApAQCAtMSw1ICsx
LDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE0LCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzcsMTQgKzM3
LDE0IEBAIGNsYXNzIFdlYkRlYnVnZ2VyQWdlbnQgOiBwdWJsaWMgSW5zcGVjdG9yOjpJbnNwZWN0
b3JEZWJ1Z2dlckFnZW50IHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShXZWJEZWJ1Z2dlckFn
ZW50KTsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBXZWJEZWJ1
Z2dlckFnZW50KEluc3BlY3Rvcjo6SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiwgSW5zdHJ1bWVudGlu
Z0FnZW50cyopOworICAgIFdlYkRlYnVnZ2VyQWdlbnQoSW5zcGVjdG9yOjpJbmplY3RlZFNjcmlw
dE1hbmFnZXImLCBJbnN0cnVtZW50aW5nQWdlbnRzJik7CiAgICAgdmlydHVhbCB+V2ViRGVidWdn
ZXJBZ2VudCgpIHsgfQogCiBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB2b2lkIGVuYWJsZSgpIG92
ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBkaXNhYmxlKGJvb2wgaXNCZWluZ0Rlc3Ryb3llZCkg
b3ZlcnJpZGU7CiAKLSAgICBJbnN0cnVtZW50aW5nQWdlbnRzKiBtX2luc3RydW1lbnRpbmdBZ2Vu
dHM7CisgICAgSW5zdHJ1bWVudGluZ0FnZW50cyYgbV9pbnN0cnVtZW50aW5nQWdlbnRzOwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL1dvcmtlckNvbnNvbGVBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
V29ya2VyQ29uc29sZUFnZW50LmNwcAppbmRleCBkYzFjYjc5ZGIwYjA5YmI3Y2VmNWI5MDhkNTUx
ZjcwYzMwNTA4ZDc0Li40YTdjODdiNWQzMmQyZGNlN2FlM2E2NTY2NTZmNzg3YmQ4MTIyYzYyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VyQ29uc29sZUFnZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VyQ29uc29sZUFnZW50LmNwcApA
QCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCkBAIC0z
NSw3ICszNiw3IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotV29ya2VyQ29uc29sZUFnZW50OjpXb3JrZXJDb25zb2xlQWdlbnQoV2ViSW5qZWN0
ZWRTY3JpcHRNYW5hZ2VyKiBpbmplY3RlZFNjcmlwdE1hbmFnZXIpCitXb3JrZXJDb25zb2xlQWdl
bnQ6OldvcmtlckNvbnNvbGVBZ2VudChXZWJJbmplY3RlZFNjcmlwdE1hbmFnZXImIGluamVjdGVk
U2NyaXB0TWFuYWdlcikKICAgICA6IFdlYkNvbnNvbGVBZ2VudChpbmplY3RlZFNjcmlwdE1hbmFn
ZXIpCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VyQ29u
c29sZUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VyQ29uc29sZUFnZW50
LmgKaW5kZXggODg5N2I1MGRlMDU4ZmJiMmNiZmU0OTI2YzM1OTkyZmI1Mjg4ZWJkMi4uMjJmMjZk
NzcyMmEzOTczZjhjNzEyMWQ3NDRiMjMzMjBmMDQ4ODcyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL1dvcmtlckNvbnNvbGVBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9Xb3JrZXJDb25zb2xlQWdlbnQuaApAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBD
b3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCkBAIC0zOSw3ICs0MCw3IEBAIGNsYXNzIFdvcmtl
ckNvbnNvbGVBZ2VudCBmaW5hbCA6IHB1YmxpYyBXZWJDb25zb2xlQWdlbnQgewogICAgIFdURl9N
QUtFX05PTkNPUFlBQkxFKFdvcmtlckNvbnNvbGVBZ2VudCk7CiAgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgV29ya2VyQ29uc29sZUFnZW50KFdlYkluamVjdGVkU2Ny
aXB0TWFuYWdlciopOworICAgIFdvcmtlckNvbnNvbGVBZ2VudChXZWJJbmplY3RlZFNjcmlwdE1h
bmFnZXImKTsKICAgICB2aXJ0dWFsIH5Xb3JrZXJDb25zb2xlQWdlbnQoKSB7IH0KIAogICAgIHZp
cnR1YWwgYm9vbCBpc1dvcmtlckFnZW50KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlckRlYnVnZ2VyQWdl
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlckRlYnVnZ2VyQWdlbnQuY3Bw
CmluZGV4IDczMGZiMDM4NTQ2MjUzZTU3OWQ5MzRjZDU3OWQ5M2FkZThhYTNkODEuLjhkMWI5NWJm
ZDAyZjFkZTc2ZTdiMmEwYWZlMzc0NzY2NWUwNjBjNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9Xb3JrZXJEZWJ1Z2dlckFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvV29ya2VyRGVidWdnZXJBZ2VudC5jcHAKQEAgLTEsNSArMSw2IEBACiAvKgog
ICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQpAQCAtODAsNyArODEsNyBAQCBwcml2YXRl
OgogCiBjb25zdCBjaGFyKiBXb3JrZXJEZWJ1Z2dlckFnZW50OjpkZWJ1Z2dlclRhc2tNb2RlID0g
ImRlYnVnZ2VyIjsKIAotV29ya2VyRGVidWdnZXJBZ2VudDo6V29ya2VyRGVidWdnZXJBZ2VudChJ
bmplY3RlZFNjcmlwdE1hbmFnZXIqIGluamVjdGVkU2NyaXB0TWFuYWdlciwgSW5zdHJ1bWVudGlu
Z0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgV29ya2VyR2xvYmFsU2NvcGUqIGluc3BlY3Rl
ZFdvcmtlckdsb2JhbFNjb3BlKQorV29ya2VyRGVidWdnZXJBZ2VudDo6V29ya2VyRGVidWdnZXJB
Z2VudChJbmplY3RlZFNjcmlwdE1hbmFnZXImIGluamVjdGVkU2NyaXB0TWFuYWdlciwgSW5zdHJ1
bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgV29ya2VyR2xvYmFsU2NvcGUqIGlu
c3BlY3RlZFdvcmtlckdsb2JhbFNjb3BlKQogICAgIDogV2ViRGVidWdnZXJBZ2VudChpbmplY3Rl
ZFNjcmlwdE1hbmFnZXIsIGluc3RydW1lbnRpbmdBZ2VudHMpCiAgICAgLCBtX3NjcmlwdERlYnVn
U2VydmVyKGluc3BlY3RlZFdvcmtlckdsb2JhbFNjb3BlLCBXb3JrZXJEZWJ1Z2dlckFnZW50Ojpk
ZWJ1Z2dlclRhc2tNb2RlKQogICAgICwgbV9pbnNwZWN0ZWRXb3JrZXJHbG9iYWxTY29wZShpbnNw
ZWN0ZWRXb3JrZXJHbG9iYWxTY29wZSkKQEAgLTEzMyw3ICsxMzQsNyBAQCBJbmplY3RlZFNjcmlw
dCBXb3JrZXJEZWJ1Z2dlckFnZW50OjppbmplY3RlZFNjcmlwdEZvckV2YWwoRXJyb3JTdHJpbmcm
IGVycm9yLCBjbwogICAgIH0KIAogICAgIEpTQzo6RXhlY1N0YXRlKiBzY3JpcHRTdGF0ZSA9IGV4
ZWNTdGF0ZUZyb21Xb3JrZXJHbG9iYWxTY29wZShtX2luc3BlY3RlZFdvcmtlckdsb2JhbFNjb3Bl
KTsKLSAgICByZXR1cm4gaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKCktPmluamVjdGVkU2NyaXB0Rm9y
KHNjcmlwdFN0YXRlKTsKKyAgICByZXR1cm4gaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKCkuaW5qZWN0
ZWRTY3JpcHRGb3Ioc2NyaXB0U3RhdGUpOwogfQogCiB2b2lkIFdvcmtlckRlYnVnZ2VyQWdlbnQ6
Om11dGVDb25zb2xlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3Jr
ZXJEZWJ1Z2dlckFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VyRGVidWdn
ZXJBZ2VudC5oCmluZGV4IGQ4NzlkMTg5YTFmZmYwNDBjY2ZkYjhlMjE2YWI5YTQwNzU4OTE4YzAu
Ljk2MWRiZTE4NjJmYmE4ZGY5NjQ2YWM2ZWMwNTU2ZjY2YWZmM2Q1YzcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJEZWJ1Z2dlckFnZW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlckRlYnVnZ2VyQWdlbnQuaApAQCAtMSw1ICsxLDYgQEAK
IC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCkBAIC00Myw3ICs0NCw3IEBAIGNs
YXNzIFdvcmtlckRlYnVnZ2VyQWdlbnQgZmluYWwgOiBwdWJsaWMgV2ViRGVidWdnZXJBZ2VudCB7
CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoV29ya2VyRGVidWdnZXJBZ2VudCk7CiAgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgV29ya2VyRGVidWdnZXJBZ2VudChJ
bnNwZWN0b3I6OkluamVjdGVkU2NyaXB0TWFuYWdlciosIEluc3RydW1lbnRpbmdBZ2VudHMqLCBX
b3JrZXJHbG9iYWxTY29wZSopOworICAgIFdvcmtlckRlYnVnZ2VyQWdlbnQoSW5zcGVjdG9yOjpJ
bmplY3RlZFNjcmlwdE1hbmFnZXImLCBJbnN0cnVtZW50aW5nQWdlbnRzJiwgV29ya2VyR2xvYmFs
U2NvcGUqKTsKICAgICB2aXJ0dWFsIH5Xb3JrZXJEZWJ1Z2dlckFnZW50KCk7CiAKICAgICBzdGF0
aWMgY29uc3QgY2hhciogZGVidWdnZXJUYXNrTW9kZTsKQEAgLTYwLDcgKzYxLDcgQEAgcHVibGlj
OgogCiBwcml2YXRlOgogICAgIFdvcmtlclNjcmlwdERlYnVnU2VydmVyIG1fc2NyaXB0RGVidWdT
ZXJ2ZXI7Ci0gICAgV29ya2VyR2xvYmFsU2NvcGUqIG1faW5zcGVjdGVkV29ya2VyR2xvYmFsU2Nv
cGU7CisgICAgV29ya2VyR2xvYmFsU2NvcGUqIG1faW5zcGVjdGVkV29ya2VyR2xvYmFsU2NvcGUg
eyBudWxscHRyIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VySW5zcGVjdG9yQ29udHJvbGxlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VySW5zcGVjdG9yQ29udHJvbGxlci5jcHAKaW5k
ZXggMTJjZWQ0NjA4M2QwY2UzYzVkYzQ2N2VhMDFhODc3YmIzNjBlMGI1Yi4uMjJiMDg3ZTE4NWU1
Y2NhNTJkZGI4YzRmMzU4NDMxNmJhNGRlZDJhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL1dvcmtlckluc3BlY3RvckNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9Xb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyLmNwcApAQCAtNzksMTggKzc5
LDE3IEBAIFdvcmtlckluc3BlY3RvckNvbnRyb2xsZXI6Oldvcmtlckluc3BlY3RvckNvbnRyb2xs
ZXIoV29ya2VyR2xvYmFsU2NvcGUmIHdvcmtlckdsCiAgICAgOiBtX3dvcmtlckdsb2JhbFNjb3Bl
KHdvcmtlckdsb2JhbFNjb3BlKQogICAgICwgbV9pbnN0cnVtZW50aW5nQWdlbnRzKEluc3RydW1l
bnRpbmdBZ2VudHM6OmNyZWF0ZSgqdGhpcykpCiAgICAgLCBtX2luamVjdGVkU2NyaXB0TWFuYWdl
cihzdGQ6Om1ha2VfdW5pcXVlPFdlYkluamVjdGVkU2NyaXB0TWFuYWdlcj4oKnRoaXMsIFdlYklu
amVjdGVkU2NyaXB0SG9zdDo6Y3JlYXRlKCkpKQotICAgICwgbV9ydW50aW1lQWdlbnQobnVsbHB0
cikKICAgICAsIG1fZXhlY3V0aW9uU3RvcHdhdGNoKFN0b3B3YXRjaDo6Y3JlYXRlKCkpCiB7Ci0g
ICAgYXV0byBydW50aW1lQWdlbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdvcmtlclJ1bnRpbWVBZ2Vu
dD4obV9pbmplY3RlZFNjcmlwdE1hbmFnZXIuZ2V0KCksICZ3b3JrZXJHbG9iYWxTY29wZSk7Cisg
ICAgYXV0byBydW50aW1lQWdlbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdvcmtlclJ1bnRpbWVBZ2Vu
dD4oKm1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLCAmd29ya2VyR2xvYmFsU2NvcGUpOwogICAgIG1f
cnVudGltZUFnZW50ID0gcnVudGltZUFnZW50LmdldCgpOwogICAgIG1faW5zdHJ1bWVudGluZ0Fn
ZW50cy0+c2V0V29ya2VyUnVudGltZUFnZW50KG1fcnVudGltZUFnZW50KTsKICAgICBtX2FnZW50
cy5hcHBlbmQoV1RGOjptb3ZlKHJ1bnRpbWVBZ2VudCkpOwogCi0gICAgYXV0byBjb25zb2xlQWdl
bnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdvcmtlckNvbnNvbGVBZ2VudD4obV9pbmplY3RlZFNjcmlw
dE1hbmFnZXIuZ2V0KCkpOworICAgIGF1dG8gY29uc29sZUFnZW50ID0gc3RkOjptYWtlX3VuaXF1
ZTxXb3JrZXJDb25zb2xlQWdlbnQ+KCptX2luamVjdGVkU2NyaXB0TWFuYWdlcik7CiAgICAgbV9p
bnN0cnVtZW50aW5nQWdlbnRzLT5zZXRXZWJDb25zb2xlQWdlbnQoY29uc29sZUFnZW50LmdldCgp
KTsKIAotICAgIGF1dG8gZGVidWdnZXJBZ2VudCA9IHN0ZDo6bWFrZV91bmlxdWU8V29ya2VyRGVi
dWdnZXJBZ2VudD4obV9pbmplY3RlZFNjcmlwdE1hbmFnZXIuZ2V0KCksIG1faW5zdHJ1bWVudGlu
Z0FnZW50cy5nZXQoKSwgJndvcmtlckdsb2JhbFNjb3BlKTsKKyAgICBhdXRvIGRlYnVnZ2VyQWdl
bnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdvcmtlckRlYnVnZ2VyQWdlbnQ+KCptX2luamVjdGVkU2Ny
aXB0TWFuYWdlciwgbV9pbnN0cnVtZW50aW5nQWdlbnRzLmdldCgpLCAmd29ya2VyR2xvYmFsU2Nv
cGUpOwogICAgIG1fcnVudGltZUFnZW50LT5zZXRTY3JpcHREZWJ1Z1NlcnZlcigmZGVidWdnZXJB
Z2VudC0+c2NyaXB0RGVidWdTZXJ2ZXIoKSk7CiAgICAgbV9hZ2VudHMuYXBwZW5kKFdURjo6bW92
ZShkZWJ1Z2dlckFnZW50KSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9Xb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
V29ya2VySW5zcGVjdG9yQ29udHJvbGxlci5oCmluZGV4IDk2NzQwODNjZGVjYWRjOTFlNTAzMDIy
MjdmZGM0ZDFhOTE4YmVhMDQuLmRlODE0ODBkMDgzYzUwY2Q4MGRjMjdmYTQxNjFkY2YwMzVmNWJl
MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJJbnNwZWN0b3JD
b250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlckluc3BlY3Rv
ckNvbnRyb2xsZXIuaApAQCAtNzQsOSArNzQsOSBAQCBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFz
cyBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb247CiAKICAgICBXb3JrZXJHbG9iYWxTY29wZSYgbV93
b3JrZXJHbG9iYWxTY29wZTsKLSAgICBSZWZQdHI8SW5zdHJ1bWVudGluZ0FnZW50cz4gbV9pbnN0
cnVtZW50aW5nQWdlbnRzOworICAgIFJlZjxJbnN0cnVtZW50aW5nQWdlbnRzPiBtX2luc3RydW1l
bnRpbmdBZ2VudHM7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkluamVjdGVkU2NyaXB0TWFuYWdl
cj4gbV9pbmplY3RlZFNjcmlwdE1hbmFnZXI7Ci0gICAgV29ya2VyUnVudGltZUFnZW50KiBtX3J1
bnRpbWVBZ2VudDsKKyAgICBXb3JrZXJSdW50aW1lQWdlbnQqIG1fcnVudGltZUFnZW50IHsgbnVs
bHB0ciB9OwogICAgIEluc3BlY3Rvcjo6QWdlbnRSZWdpc3RyeSBtX2FnZW50czsKICAgICBzdGQ6
OnVuaXF1ZV9wdHI8SW5zcGVjdG9yOjpGcm9udGVuZENoYW5uZWw+IG1fZnJvbnRlbmRDaGFubmVs
OwogICAgIFJlZjxXVEY6OlN0b3B3YXRjaD4gbV9leGVjdXRpb25TdG9wd2F0Y2g7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VyUnVudGltZUFnZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJSdW50aW1lQWdlbnQuY3BwCmluZGV4IDEyMjJl
NTUyNzk4YmI2MzczOTlmOGFlNzU3YjRmZjRmZGJkMmU1MGQuLjAzMGVjNTZhY2ZiYzU2NjU0NWFm
NjYzOGI3ZDgwZmVjYTQ0NGMzYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9Xb3JrZXJSdW50aW1lQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9X
b3JrZXJSdW50aW1lQWdlbnQuY3BwCkBAIC00NiwxMCArNDYsOSBAQCB1c2luZyBuYW1lc3BhY2Ug
SW5zcGVjdG9yOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVdvcmtlclJ1bnRpbWVBZ2VudDo6
V29ya2VyUnVudGltZUFnZW50KEluamVjdGVkU2NyaXB0TWFuYWdlciogaW5qZWN0ZWRTY3JpcHRN
YW5hZ2VyLCBXb3JrZXJHbG9iYWxTY29wZSogd29ya2VyR2xvYmFsU2NvcGUpCitXb3JrZXJSdW50
aW1lQWdlbnQ6OldvcmtlclJ1bnRpbWVBZ2VudChJbmplY3RlZFNjcmlwdE1hbmFnZXImIGluamVj
dGVkU2NyaXB0TWFuYWdlciwgV29ya2VyR2xvYmFsU2NvcGUqIHdvcmtlckdsb2JhbFNjb3BlKQog
ICAgIDogSW5zcGVjdG9yUnVudGltZUFnZW50KGluamVjdGVkU2NyaXB0TWFuYWdlcikKICAgICAs
IG1fd29ya2VyR2xvYmFsU2NvcGUod29ya2VyR2xvYmFsU2NvcGUpCi0gICAgLCBtX3BhdXNlZChm
YWxzZSkKIHsKIH0KIApAQCAtNzMsNyArNzIsNyBAQCBJbmplY3RlZFNjcmlwdCBXb3JrZXJSdW50
aW1lQWdlbnQ6OmluamVjdGVkU2NyaXB0Rm9yRXZhbChFcnJvclN0cmluZyYgZXJyb3IsIGNvbgog
ICAgIH0KIAogICAgIEpTQzo6RXhlY1N0YXRlKiBzY3JpcHRTdGF0ZSA9IGV4ZWNTdGF0ZUZyb21X
b3JrZXJHbG9iYWxTY29wZShtX3dvcmtlckdsb2JhbFNjb3BlKTsKLSAgICByZXR1cm4gaW5qZWN0
ZWRTY3JpcHRNYW5hZ2VyKCktPmluamVjdGVkU2NyaXB0Rm9yKHNjcmlwdFN0YXRlKTsKKyAgICBy
ZXR1cm4gaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKCkuaW5qZWN0ZWRTY3JpcHRGb3Ioc2NyaXB0U3Rh
dGUpOwogfQogCiB2b2lkIFdvcmtlclJ1bnRpbWVBZ2VudDo6bXV0ZUNvbnNvbGUoKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlclJ1bnRpbWVBZ2VudC5oIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlclJ1bnRpbWVBZ2VudC5oCmluZGV4IDg3OGJkZDI0
OGIwOGJlMWM4YWY0ZWY0NTcyNzMzNGU3MDhhOTBjM2EuLmRkM2U5YWIwODBlM2UwZWQyOGQzNDAw
ZjZmMWVmMDllNDIzZTE4YzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9X
b3JrZXJSdW50aW1lQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2Vy
UnVudGltZUFnZW50LmgKQEAgLTQwLDcgKzQwLDcgQEAgdHlwZWRlZiBTdHJpbmcgRXJyb3JTdHJp
bmc7CiAKIGNsYXNzIFdvcmtlclJ1bnRpbWVBZ2VudCBmaW5hbCA6IHB1YmxpYyBJbnNwZWN0b3I6
Okluc3BlY3RvclJ1bnRpbWVBZ2VudCB7CiBwdWJsaWM6Ci0gICAgV29ya2VyUnVudGltZUFnZW50
KEluc3BlY3Rvcjo6SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiwgV29ya2VyR2xvYmFsU2NvcGUqKTsK
KyAgICBXb3JrZXJSdW50aW1lQWdlbnQoSW5zcGVjdG9yOjpJbmplY3RlZFNjcmlwdE1hbmFnZXIm
LCBXb3JrZXJHbG9iYWxTY29wZSopOwogICAgIHZpcnR1YWwgfldvcmtlclJ1bnRpbWVBZ2VudCgp
IHsgfQogCiAgICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNw
ZWN0b3I6OkZyb250ZW5kQ2hhbm5lbCosIEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXIqKSBv
dmVycmlkZTsKQEAgLTU1LDkgKzU1LDEwIEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBJbnNwZWN0
b3I6OkluamVjdGVkU2NyaXB0IGluamVjdGVkU2NyaXB0Rm9yRXZhbChFcnJvclN0cmluZyYsIGNv
bnN0IGludCogZXhlY3V0aW9uQ29udGV4dElkKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQg
bXV0ZUNvbnNvbGUoKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgdW5tdXRlQ29uc29sZSgp
IG92ZXJyaWRlOwotICAgIFdvcmtlckdsb2JhbFNjb3BlKiBtX3dvcmtlckdsb2JhbFNjb3BlOwog
ICAgIFJlZlB0cjxJbnNwZWN0b3I6OlJ1bnRpbWVCYWNrZW5kRGlzcGF0Y2hlcj4gbV9iYWNrZW5k
RGlzcGF0Y2hlcjsKLSAgICBib29sIG1fcGF1c2VkOworCisgICAgV29ya2VyR2xvYmFsU2NvcGUq
IG1fd29ya2VyR2xvYmFsU2NvcGUgeyBudWxscHRyIH07CisgICAgYm9vbCBtX3BhdXNlZCB7IGZh
bHNlIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>